JP2006139548A - メディア・ドライブ及びそのコマンド実行方法 - Google Patents

メディア・ドライブ及びそのコマンド実行方法 Download PDF

Info

Publication number
JP2006139548A
JP2006139548A JP2004328625A JP2004328625A JP2006139548A JP 2006139548 A JP2006139548 A JP 2006139548A JP 2004328625 A JP2004328625 A JP 2004328625A JP 2004328625 A JP2004328625 A JP 2004328625A JP 2006139548 A JP2006139548 A JP 2006139548A
Authority
JP
Japan
Prior art keywords
command
read
data
access
processing
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Withdrawn
Application number
JP2004328625A
Other languages
English (en)
Inventor
Hiromi Kobayashi
寛美 小林
Hiroshi Saito
博史 斎藤
Takahiro Saito
高裕 齋藤
Tadahisa Kawa
忠久 河
Atsushi Kanamaru
淳 金丸
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
HGST Netherlands BV
Original Assignee
Hitachi Global Storage Technologies Netherlands BV
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hitachi Global Storage Technologies Netherlands BV filed Critical Hitachi Global Storage Technologies Netherlands BV
Priority to JP2004328625A priority Critical patent/JP2006139548A/ja
Priority to US11/271,397 priority patent/US7373460B2/en
Publication of JP2006139548A publication Critical patent/JP2006139548A/ja
Withdrawn legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0674Disk device
    • G06F3/0676Magnetic disk device

Abstract

【課題】複数のコマンドをキューイングする際にシーク時間及び回転待ち時間を短くすると共に、それらの時間を有効活用することでコマンド処理性能を向上することができるメディア・ドライブ及びそのコマンド処理方法を提供する。
【解決手段】HDDは、複数のコマンドを格納可能なキュー231と、その実行の際のメディアへのアクセスの要否に基づき前記複数のコマンドの実行順序を最適化するキュー・マネージャ223とを有する。キュー・マネージャ223は、ディスク121にアクセスして実行するメディア・アクセス処理とホストとの間にてデータ転送をするデータ転送処理とを並行して行なわせるよう前記実行順序を決定する。例えば、キャッシュ232にデータが存在しないリード・コマンドのディスク121からキャッシュ232への読み出し処理と、キャッシュ232にデータが存在するリード・コマンドのホストへの転送処理を並列して実行させる。
【選択図】図2

Description

本発明は、コマンドに従ってライト・データ又はリード・データをホストとの間にて転送するメディア・ドライブ及びそのコマンド処理方法に関し、特に、複数のコマンドをキューに格納してホストとの間の転送を効率よく実行するメディア・ドライブ及びそのコマンド処理方法に関する。
情報記録再生装置として、光ディスクや磁気テープなどの様々な態様のメディアを使用する装置が知られている。その中で、ハード・ディスク・ドライブ(以下、HDD)は、コンピュータの記憶装置として広く普及し、現在のコンピュータ・システムにおいて欠かすことができない記憶装置の一つとなっている。さらに、コンピュータにとどまらず、動画像記録再生装置、カーナビゲーション・システム、またはデジタル・カメラなどで使用されるリムーバブルメモリなど、HDDの用途は、その優れた特性により益々拡大している。
パーソナル・コンピュータ(PC)の内蔵HDDには、サーバ及び一部のワークステーションを除き、そのほぼすべてにATA(AT Attachment)(IDE(Integrated Drive Electronics))インターフェースが採用されている。また、ATAインターフェースの性能向上及び容量増大に伴い、SCSI(small computer system interface)に比べてドライブとコントローラ両方のコストが安価なことから、近年ではエントリ・サーバにおいても、ハードディスク・インターフェースとしてATAが採用されている。高価なSCSIインターフェースに対し、コストが非常に安いというATAの特質を維持しつつ更なる性能向上が望まれる。
この性能向上の一手法としてホストとの間のデータのやり取りを高速化する、すなわちインターフェースを高速化することが考えられる。インターフェースの高速化には、信号線の数を増やして1回のサイクルで転送できるデータ量を増やす方法と、データを転送するサイクルを短くして、単位時間内により多くのデータを転送できるようにするという2つの方法がある。
パラレルATAにおいては、上述の2つの方法のうち、転送サイクルを短縮して高速化を図ってきたが、更なる高速化を実現するために、データ幅を拡張したり、ストローブ信号の周波数を高める必要がある。しかし、更なる高速化を図る場合、信号線間のデータの同期を取ることが難しくなる。また、信号の周波数が上がると、信号線間の干渉やノイズも無視できなくなるという問題が生じる。信号線間にグラウンド線を配置することで、各信号線間の干渉を防ぎ、安定して転送できるよう工夫されているものの、これらの問題を解決するためには、ケーブルやコネクタの大幅な変更や、信号を送受信する回路の仕様変更、たとえば、信号の電圧を下げた差動信号化などの導入が避けられなくなり、ATAインターフェースのメリットである低コスト性を阻害してしまう。
そこで、パラレルATAとほぼ同じ製造コストを保ったまま高速化するため、シリアル伝送方式が提案されている。シリアル伝送は、パラレル伝送と比較して信号線が劇的に減少し、したがって信号線間の干渉がパラレル方式に比べ発生しにくいなど、高速化に有利な特性を有する。このシリアルATAの規格策定は、ATAの物理インターフェースを、従来のパラレル・インターフェース(パラレルATA)から、高速なシリアル・インターフェースに置き換えることを目的として主要なハードディスク・ベンダなどからなるSerial ATA Working Groupによって行われている。
ところで、HDDからデータを読み書きするときに最も時間がかかる操作は、ヘッドの移動時間やディスクの回転待ち時間といったHDD内部の機械的な動作である。したがって、転送速度を向上すると共に、この読み出し、書き込みに必要な時間を短縮することが必要となる。
コマンド送受信、デコード、メモリアクセスなどの電気的な処理がマイクロ秒(μs)オーダーであるのに対し、HDD内部の機械的な動作はミリ秒(ms)のオーダーと長い時間が必要となる。内部の機械的な動作には、ヘッドの移動時間と回転待ち時間とがある。ヘッドの移動時間は、HDDが読み書きの指令を出してからディスク上の希望のトラックにヘッドを位置付けるまでの時間(シーク時間)を示す。このシーク時間は、トラック間の移動距離によって大きく左右されるため、通常は最内周から最外周のトラックまでのシーク時間を2で割った平均シーク時間が性能指標に用いられる。
回転待ち時間は、ヘッドをトラックへ移動させた後に、ディスクの回転によってトラック上の希望のセクタにヘッドが到達するまで待つ時間を示す。なお、直前のセクタ位置によってディスクを回転させる量は大きく異なるものの、回転待ち時間の最大値はディスクの回転速度によって一意に決定される。その最大値は、例えば、5400rpmで11.1ms、7200rpmで8.3ms、10000rpmで6ms、15000rpmで4msとなる。
こうした機械的動作によるオーバーヘッドを極力回避するためにCommand Queuingがある。Command Queuingは、コマンドの実行完了を待たずに複数のコマンドを連続して発行し、そのままキュー(待ち行列)に格納していく。これにより、長い時間を要するHDDの機械的動作の完了をコマンドごとに待つことなく、次々とHDDにコマンドを送ることができる。
Command Queuingではキューに格納されたコマンドを、受信した順番(インオーダ)ではなくキューに格納された複数のコマンドを効率のよい順番に並べ替えてから実行するいわゆるアウトオブオーダにより実行する。効率のよい順番とは、できる限りヘッドの移動を短縮できるトラック間又は回転待ち時間の少ないセクタ間を近づけて処理させる順番、すなわちシーク時間+回転待ち時間の合計が短くHDDの機械的動作を短縮できるような順番であり、いわゆるRotational Positioning Ordering(以下、RPOという。)と呼ばれる手法である。
近時は、トラック間の位置関係に着目してシーク時間を可能な限り短縮することの他、セクタの位置関係によっては回転待ち時間を逆に増やしてしまうことを防止すべく、セクタの位置関係や直近のヘッド位置に着目し、他のコマンドとの間で効率がよいコマンド実行順序とし、シーク時間と回転待ち時間との合計時間を総合的に短縮できるようにコマンドを並べ替えていく方法が採用されている。
また、データのライト・コマンド、リード・コマンドの実行を迅速に行うため、例えばハード・ディスクからのリード・データの論理ブロックアドレス(Logical Block Address:LBA)の先端と後端とが一致又は重複するリード・コマンドがある場合には、それらのコマンドを統合して一度に処理するなどにより、より効率よくコマンドを処理する工夫がなされている(例えば特許文献1参照)
ところで、既にリリースされている" Serial ATA II: Extensions to Serial ATA 1.0a(以下、シリアルATA IIという。)においても、NCQ(Native Command Queuing)と呼ばれるコマンド・キューイングの技術が採用されている。NCQは、HDD自身が、キューされているコマンドの実行順序を内部的に決定することを可能としている。これによって、HDDの機械的内部動作に起因するシーク時間+回転待ち時間の合計を効果的に低減することが可能となる。
NCQは、SCSIが持つTagged Command Queuingの考え方を継承して設計された機能であり、
1.Race-free Status Return Mechanism
2.Interrupt Aggregation
3.First Party DMA(FPDMA)
という3つの機能を有する。
Race-free Status Return Mechanismは、どのようなコマンドが実行されているときでも、またどのようなタイミングであっても、ドライブ(通常はHDD)から例えばPCなどのホストコントローラに対してステータスを自由に返せる仕組みである。また、ステータスの応答に対して、ホストとのハンドシェークは一切発生しない。従って、ドライブは複数のコマンドの実行完了ステータスを連続的にホストコントローラに対して伝えられるようになる。
Interrupt Aggregationは、複数のコマンドで発生する割り込みを1つにまとめることにより、割り込みの発生を抑える機能を示す。また、First Party DMAは、ホストコントローラ側のドライバソフトウェアの介入なしにドライブがデータ転送のためのDMA(Direct Memory Access)操作をセットアップできる機能である。シリアルATAでは、ドライブがホストコントローラ側のDMAコンテキストを選ぶためのDMA Setup FISと呼ばれるFISを用意している。FIS(Frame Information Structure)は、シリアルATAの基本的な転送単位となるフレームの構造を指す。
DMA Setup FISには、DMAセットアップが行なわれるコマンドに対応付けられたタグ番号(0〜31)、ホストコントローラへ送信されるデータ量(DMA Transfer Count)などの情報が格納される。ホストコントローラは、ドライブから受信したDMA Setup FISをもとにDMA転送の処理を行う。
特開2001−209500号公報
上述のように、SCSIはコストが高いため、ATAのように安価なインターフェースを使用し、低コストを維持したまま、通信速度等の性能を向上したハード・ディスクが望まれている。
また、シリアルATAにおいては、Command Queuingの機能そのものは、シリアルATA IIより以前から存在(ATA/ATAPI-4 Command Queuing)していたが、これをサポートするHDDベンダが少ないこと、及び上述のRace-free Status Return Mechanism、Interrupt Aggregation、First Party DMAといった機能を持たないため、キューイングを行なっても、それに対するオーバーヘッドが大きくキューイングによるパフォーマンス向上が相殺されてしまうなどの理由により現実的ではなかった。
これは、従来のシリアルATA Iで定義されていたCommand Queuingプロトコル(ATA/ATAPI-4 Command Queuing)では、リード・コマンドを含む並べ替えは可能ではあったが、データ転送の開始は、先ずHDDからホストに準備ができた旨を通知し、次にホストがそれに対して了解のコマンドを返してくるのを待って、その後実際のデータ転送を開始していたためである。
すなわち、従来のシリアルATAにおけるCommand Queuingは、上述のRace-free Status Return Mechanismを持っておらず、このため、ホストコントローラ側のドライバソフトウェア等が、次のコマンドのステータスを受け入れられるようにServiceコマンドを発行しなければ、ドライブはもう一つのコマンドのステータスを返せない。従って、コマンド完了フェーズではアクセス遅延とCPUのオーバーヘッドとが生じてしまう。
また、ATAインターフェースでは、コマンドの実行に際して基本的に、コマンド発行(Command)、待機(Wait)、情報又はデータ転送(Transfer)、割り込み(Interrupt)の順序で処理がなされる、したがって、従来のシリアルATAにおけるCommand Queuingでは、割り込みがコマンド毎に発生するため、多数のコマンドがキューに格納されるようなケースでは、これらのコマンドによる割り込みが大きなオーバーヘッドを生んでしまう。
更に、従来のシリアルATAにおけるCommand Queuing は、First Party DMAをサポートしていないため、データ転送を行う際にホストコントローラに対する割り込みが発生する。ホストコントローラ側のドライバソフトウェアは、この割り込みをトリガーとしていくつかの手順を実行する必要がある。すなわち、DMA転送のセットアップに対して、ホストコントローラ側のドライバソフトウェアが何度も介入するため、大きなオーバーヘッドが発生してしまう。
このように、従来のシリアルATAにおけるCommand Queuingを使用するHDDでは、データ転送開始のタイミングを決定することができず、割り込みコマンドによるオーバーヘッド等が大きい等の問題点があった。そこで、シリアルATA IIにおいて規定されたNCQによってこれらの問題点を解決することができれば、安価で機械的内部動作に起因するシーク時間及び回転待ち時間を効果的に低減することが可能なHDDを提供することができる。
本発明は、このような事情に鑑みなされたものであって、複数のコマンドをキューイングする際にシーク時間及び回転待ち時間を短くすると共に、それらの時間を有効活用することでコマンド処理性能を向上することができるメディア・ドライブ及びそのコマンド処理方法を提供することを目的とする。
上述した目的を達成するために、本発明にかかるメディア・ドライブは、ホストとの間にてライト・データ又はリード・データをコマンドに従って転送するメディア・ドライブであって、複数のコマンドを格納可能なキューと、前記複数のコマンドを、コマンドを処理する際のメディアへのアクセスの要否に基づき分類し、その実行順序を最適化するコマンド管理部とを有し、前記コマンド管理部は、前記メディアにアクセスして実行するメディア・アクセス処理とホストとの間にてデータ転送をするデータ転送処理とを並行して行なわせるよう前記実行順序を最適化することを特徴とする。
本発明においては、メディアへのアクセスの要否に基づき、メディア・アクセス処理とデータ転送処理とが並列処理されるようコマンド順序を最適化することで、例えば2つのコマンドを並列して実行する等することにより、複数のコマンド処理の処理効率を高めることができる。
また、前記コマンド管理部は、前記コマンドの処理を、前記メディア・アクセス処理を行うメディア・アクセス処理と、前記データ転送処理を行うデータ転送処理とに分類し、前記分類結果に基づき前記実行順序を最適化することができ、コマンドの種類毎に分類すると共に、一のコマンドにおける処理であってもメディア・アクセス処理とデータ転送処理とに分類することによりコマンド実行処理を高効率化する。
更に、前記ホストから転送されたライト・データ及びホストへ転送するリード・データを記憶する一時記憶部を有し、前記コマンド管理部は、リード・コマンドを、前記一時記憶部に前記リード・データの全部が記憶されたアクセス不要リード・コマンドと、前記メディアにのみ前記リード・データの一部又は全部が記憶されたアクセス要リード・コマンドとに分類し、前記分類結果に基づき前記実行順序を最適化することができ、リード・コマンドをメディアへのアクセス要否に基づき分類することができる。
また、前記ホストから転送されたライト・データ及びホストへ転送するリード・データを記憶する一時記憶部を有し、前記コマンド管理部は、前記リード・コマンドの処理のうち、前記メディアにのみ記憶された一部又は全部のリード・データを前記一時記憶部へ読み出す処理を前記メディア・アクセス処理とし、前記一時記憶部に記憶されたリード・データを前記ホストへ転送する処理及び前記ホストからのライト・データを前記一時記憶部へ記憶するライト・コマンドの処理を前記データ転送処理として分類することができる。すなわち、リード・コマンドの処理のうち、メディアと一時記憶部との間のメディア・アクセス処理と、一時記憶部とホストとの間の伝送路(バス)を占有するデータ転送処理とに分類し、両者を並列処理することができる。
更に、前記リード・データの一部が前記メディアにのみ記憶され残りが前記一時記憶部に記憶されている場合、前記コマンド管理部は、前記メディアにのみ記憶された前記リード・データの一部を前記一時記憶部へ読み出す前記メディア・アクセス処理と、当該リード・データの前記一時記憶部に記憶されている前記残りを前記ホストに転送する前記データ転送処理とを並列して実行させることができ、これにより、一のコマンドの処理時間を短縮化することができる。
更にまた、前記コマンド管理部は、前記メディアにのみ一部又は全部が記憶された前記リード・データを前記一時記憶部に読み出す前記メディア・アクセス処理と、他のリード・コマンド又はライト・コマンドの前記データ転送処理とを並列して実行させることができ、同時に2つのコマンドの処理を並行して行なうことができる。
また、前記リード・データの一部が前記メディアにのみ記憶され残りが前記一時記憶部に記憶されている場合、前記メディアにのみ記憶された前記リード・データの一部を前記一時記憶部へ読み出す前記メディア・アクセス処理と、前記一時記憶部に記憶された前記リード・データの前記残りを前記ホストへ転送するデータ転送処理、又は前記アクセス不要リード・コマンド若しくはライト・コマンドの処理とを並列して実行させることができ、コマンド処理を短縮化することができる。
更に、前記コマンド管理部は、前記分類結果に基づきリード・コマンドの先読みデータ範囲を決定する先読み範囲決定部を更に有し、前記先読み範囲決定部は、一の前記アクセス要リード・コマンドの前記メディアにのみ記憶されたデータが他の前記アクセス要リード・コマンドの前記先読みデータに含まれるよう前記先読み範囲を決定することができ、一のアクセス要コマンドの先読み処理により他のアクセス要コマンドをアクセス不要コマンドとすることができる。
更にまた、前記先読み範囲決定部は、各前記アクセス要リード・コマンドにおける前記メディアから読み出すリード・データのアドレスを比較し、一のアドレスの一端と他のアドレスの一端とが所定の関係を満たす場合に、前記他のアドレスが含まれるよう前記一のアドレスの前記先読み範囲を設定することができ、所定の条件を満たす場合にのみ先読み範囲を決定することができる。
また、前記先読み範囲決定部は、複数の前記アクセス要リード・コマンドにおける前記メディアにのみ記憶されたリード・データを個別に読み出す時間の総和と、連続して読み出す時間の総和とを比較し、当該比較結果に基づき先読み範囲を決定することができ、処理時間に応じて個別に処理するか又は先読みにより処理するかを決定することができる。
更に、前記コマンド管理部は、前記先読み範囲決定部により決定された先読み範囲にリード・データが含まれるアクセス要リード・コマンドを、アクセス不要リード・コマンドとして再分類することができ、コマンド処理順序を最適化して処理効率を高めることができる。
更にまた、前記コマンド管理部は、前記コマンド又はコマンドの処理の実行優先度に基づき前記実行順序を決定することができ、例えば、前記ライト・コマンドより前記リード・コマンドの実行を優先させたり、前記キューに格納された順序が早いコマンドの実行を優先させたり、前記アクセス要リード・コマンドより前記アクセス不要リード・コマンドの実行を優先させたり、又は前記メディア・アクセス処理より前記データ転送処理の実行を優先させたりすることができる。
本発明にかかるメディア・ドライブは、ホストとの間にてライト・データ又はリード・データをコマンドに従って転送するメディア・ドライブであって、複数のコマンドを格納可能なキューと、前記複数のコマンドを、コマンドを処理する際のメディアへのアクセスの要否に基づき分類し、その実行順序を最適化するコマンド管理部と、前記分類結果に基づきリード・コマンドの先読み範囲を決定する先読み範囲決定部とを有し、前記先読み範囲決定部は、メディア・アクセスが必要なリード・コマンドの先読み範囲を、前記メディア・アクセスが必要な他のリード・コマンドのメディア・アクセスが不要となるよう決定することを特徴とする。
本発明においては、リード・コマンドを処理する際、できるだけメディアへのアクセスが不要となるよう先読み範囲を決定しておき、メディアへのアクセスが不要で短時間で処理可能なコマンドを増やし、これらの実行順序を最適化することで、コマンド処理能力を向上させることができる。
本発明にかかるメディア・ドライブのコマンド処理方法は、複数のコマンドをキューに格納して処理可能なメディア・ドライブのコマンド処理方法であって、前記複数のコマンドを、コマンドを処理する際のメディアへのアクセスの要否に基づき分類し、前記分類結果に基づき、前記メディアにアクセスして実行するメディア・アクセス処理とホストとの間にてデータ転送をするデータ転送処理とを並行して行なわせるよう前記複数のコマンドの実行順序を最適化することを特徴とする。
本発明にかかるメディア・ドライブのコマンド処理方法は、複数のコマンドをキューに格納して処理可能なメディア・ドライブのコマンド処理方法であって、前記複数のコマンドのうち、メディア・アクセスが必要なリード・コマンドの先読み範囲を、前記メディア・アクセスが必要な他のリード・コマンドのメディア・アクセスが不要となるようリード・コマンドの先読み範囲を決定し、前記コマンドを処理する際のメディアへのアクセスの要否に基づき、前記複数のコマンドの実行順序を最適化することを特徴とする。
本発明によれば、複数のコマンドをキューイングする際にシーク時間及び回転待ち時間を短くすると共に、これらの時間を有効活用するようコマンド実行順序を最適化することでコマンド処理性能を向上することができる。
以下、本発明を適用した具体的な実施の形態について、図面を参照しながら詳細に説明する。上述したように、シリアルATA IIにおいては、新たにNative Command Queuing(NCQ)プロトコルが定義された。NCQにおいては、データ転送開始タイミングをHDD側で決めること、及び複数のコマンドのデータ転送を同時に行うことが可能である。本実施の形態は、これら、データ転送開始タイミングをHDD側で決定する機能、及び複数のコマンドのデータ転送が同時に行うことが可能な機能を最大限に活用してコマンド・キューイングを高効率に実行することができるHDD及びそのコマンド処理方法に本発明を適用したものである。
本実施の形態においては、複数のコマンドをキューイングする機能を有するHDDにおいて、キューに保持されるコマンド及びその処理を磁気ディスクにアクセスが必要か否か、すなわちコマンド実行中のバスの占有率に基づき分類し、この分類結果に基づき複数のコマンド又はコマンドの処理を並列処理することで、コマンド実行効率を向上させるものである。
すなわち、リード・コマンドにおいてキャッシュにデータがない場合は、磁気ディスクにアクセスして先ずデータをキャッシュに読み出す必要があり、この処理の間は、ホストとの間の伝送路(バス)は空いた状態となる。そこで、この処理時間に実行可能な処理、すなわちホストとのデータ転送のやりとりを行わせることで磁気ディスクにアクセスが必要なリード・コマンドのメディア・アクセス処理と磁気ディスクにアクセスが不要なコマンドのデータ転送処理とを並列処理するものである。
なお、本実施の形態においては、シリアルATA IIのNative Command Queuing(NCQ)プロトコルを利用した例について説明するが、本発明は、シリアル伝送、又はシリアルATA IIプロトコルに限定されるものではなく、複数のコマンドをキューイングする機能、並びにデータ転送開始タイミングをドライブ側で決めること及び複数のコマンドのデータ転送を同時に行う機能を有するメディア・ドライブにおけるコマンド処理に適用可能であることは言うまでもない。
先ず、本実施の形態にかかるHDD及びホストを含むデータ処理システムについて説明する。図1は、本実施の形態におけるデータ処理システム100の概略構成を示す構成図である。データ処理システム100は、コンピュータやデジタル・カメラなど、データ処理を行う上位の機器(ホスト)110と、ホスト110から伝送されたデータを記憶する記憶装置であるHDD120を有している。HDD120は、フレーム内に、メディアの一例として1又は複数の磁気ディスク121と、各磁気ディスクの記録面に対応する磁気ヘッド122を備えたヘッド・スタック・アセンブリ123と、磁気ディスク121へのデータの書き込み及び磁気ディスク121からのデータ読み出しのために、これらの要素を制御するコントローラ124とを備えている。
ホスト110から伝送されたホスト・ユーザ・データは、コントローラ124によって必要な処理がなされ、ライト信号に変換されたあと、ヘッド・スタック・アセンブリ123に送られる。磁気ヘッド122は、取得したライト信号に応じて、磁気ディスク121の記録面にデータを書き込む。一方、磁気ヘッド122によって磁気ディスクから読み出されたリード信号は、コントローラ124によってデジタル信号に変換され、必要な処理がなされたあと、ホスト110に伝送される。
磁気ディスク121は、磁性層が磁化されることによってデータを記録する不揮発性の記録媒体であり、HDD120が動作しているときに、スピンドル・モータ125のスピンドル軸を中心として所定の一定速度で回転駆動される。HDD120の非動作時には、磁気ディスク121は静止している。磁気ディスク121の表面には、データを格納するための区画として同心円状に複数のトラックが形成され、さらに、各トラックは円周方向に区分された複数のセクタを備えている。
磁気ディスク121の表面にはサーボ・データ記憶領域が形成されており、典型的には、磁気ディスク121は半径方向に沿って形成された複数のサーボ・データ記憶領域を有している。また、各セクタにおいてサーボ・データ記憶領域とユーザ・データ記憶領域とが形成されている。サーボ・データを磁気ヘッド122が読み取ることによって、磁気ヘッド122の位置に関する情報を取得することができる。サーボ・データは、トラック番号情報を備えるトラック・データ、セクタ番号情報を備えるセクタ・データ、及びバースト・パターンを有している。
ヘッド・スタック・アセンブリ123はフレーム内に取り付けられており、磁気ディスク121の表面に沿って揺動可能となっており、ボイス・コイル・モータ(VCM)126によって駆動される。ヘッド・スタック・アセンブリ123の先端部にはスライダと磁性薄膜素子とを有する磁気ヘッド122が設けられている。ヘッド・スタック・アセンブリ123が揺動することによって、磁気ヘッド122が磁気ディスク121の表面の半径方向に沿って移動する。これによって、磁気ヘッド122が所望のトラックにアクセスすることができる。
ヘッド・スタック・アセンブリ123は、一の磁気ディスク121に対して2つの磁気ヘッド122を有しており、磁気ヘッドそれぞれが磁気ディスク121の各表裏面に対応する。磁気ヘッド122は、データ書き込み/読み出し処理を行わない場合、典型的には、磁気ディスク121の外側に配置されたランプ機構(不図示)に退避する、もしくは、CSS(Contact Start and Stop)方式においては、内周に配置されているCSSゾーンに退避する。磁気ヘッド122は、磁気ディスク121へのデータの書き込み、あるいは、磁気ディスク121からのサーボ・データ及びユーザ・データの読み出しを行う。
図1に示すように、コントローラ124は、リード/ライト・チャネル(R/Wチャネル)127、ハードディスク・コントローラ(HDC)128、マイクロプロセッサ・ユニット(MPU)129、メモリ130、サーボ・コントローラ133、モータ・ドライバ・ユニット134を有している。モータ・ドライバ・ユニット134は、ボイス・コイル・モータ・ドライバ(VCMドライバ)135及びスピンドル・モータ・ドライバ(SPMドライバ)136を有している。
R/Wチャネル127は、ホスト110から取得したデータについて、ライト処理を実行する。ライト処理において、R/Wチャネル127はHDC128から供給されたライト・データをコード変調し、さらにコード変調されたライト・データをライト信号(電流)に変換して磁気ヘッド122に供給する。磁気ヘッド122は、取得した信号に応じてコイルに電流を流すことによって磁気ディスク121にデータを書き込む。また、ホスト110にデータを供給する際にはリード処理を行う。リード処理において、R/Wチャネル127は磁気ヘッド122から供給されたリード信号からデータを抽出し、デコード処理を行う。デコード処理されたリード・データは、HDC128に供給される。
MPU129は、メモリ130にロードされたマイクロ・コードに従って動作し、磁気ヘッド122のポジショニング制御、インターフェース制御、ディフェクト管理などのHDD120の全体の制御のほか、データ処理に関する必要な処理を実行する。HDD120の起動に伴い、メモリ130には、MPU129上で動作するマイクロ・コードの他、制御及びデータ処理に必要とされるデータが磁気ディスク121あるいはROM(不図示)からロードされる。
R/Wチャネル127によって読み出されるデジタル・データは、ホスト110からのユーザ・データの他に、サーボ・データを含んでいる。サーボ・コントローラ133はR/Wチャネル127から取得したリード・データからサーボ・データを抽出する。サーボ・データは、トラック・データ、セクタ・データ、及びバースト・パターンを有している。抽出されたサーボ・データは、サーボ・コントローラ133からMPU129に転送される。
MPU129は、マイクロ・コードに従って、サーボ・データを使用した磁気ヘッド122の位置決め制御処理を行う。MPU129からの制御データはVCMドライバ134に出力される。VCMドライバ134は制御信号に応じて駆動電流をVCM126に供給する。また、MPU129は、マイクロ・コードに従って、スピンドル・モータ125の回転制御のために、モータ・ドライバ・ユニット134のレジスタにSPM制御データをセットする。SPMドライバ136は、セットされたSPM制御データに応じて、スピンドル・モータ125の回転制御を実行する。
HDC128は、ホスト110との間のインターフェース機能を備えており、ホスト110から伝送されるユーザ・データ、及びリード・コマンドやライト・コマンドを含む制御データなどを受信する。受信したユーザ・データは、R/Wチャネル127に転送される。また、R/Wチャネル127から取得した磁気ディスクからのリード・データ、又はデータ転送のための制御データをホスト110に送信する。HDC128は、この他、ユーザ・データについての誤り訂正処理などを実行する。
HDC128とホスト110との間における制御データ及びユーザ・データ伝送は、ハードディスク・コントローラ128及びMPU129上で動作するマイクロ・コードによって制御される。特に、本実施の形態におけるHDD120は、ホスト110からの所定コマンドについて、コマンド・キューイングの機能を有している。HDC128内におけるコマンド実行順序、あるいは、ホスト−デバイス間の制御データ及びユーザ・データ伝送順序は、HDD120のパフォーマンス向上の観点から制御、管理される。
次に、コマンド・キューイング、及びHDD120とホスト110との間におけるホスト−デバイス間のコマンド処理方法について説明する。本実施の形態におけるホスト−デバイス間インターフェースにおいては、HDD120が内部的に所定処理の実行順序を制御することができ、HDD120のパフォーマンス向上を図ることができる。特に、本実施の形態におけるホスト−デバイス間データ通信においては、ホスト110へのデータ転送タイミングをHDD120側で決めることができ、また複数のコマンドのデータ転送処理を合わせて行なうことができるため、キューに格納される複数のコマンドの実行パフォーマンスを向上させることができる。
図2は、本実施の形態のホスト−デバイス間インターフェースにおいて、ホスト−デバイス間のデータ転送処理を実行する要部を示すブロック図である。HDC128は、ホスト・インターフェース211、ドライブ・インターフェース212及びメモリ・マネージャ213を備えている。マイクロ・コードがMPU129上で動作することによって、MPU129は、ホスト・インターフェース・マネージャ221、コマンド実行マネージャ222、キュー・マネージャ223及びドライブ・マネージャ224として機能することができる。メモリ130はコマンド及びデータを一時的に記憶し、コマンド・キュー231及び一時記憶部としてのキャッシュ232として機能することができる。キャッシュ232には、一時的に記憶されている転送データ(リード・データ又はライト・データ)の他、この転送データのLBA及びその長さなどの情報が記憶される。
ホスト・インターフェース211は、ホスト110との間における実際のデータ転送処理を実行する。ドライブ・インターフェース212は、メディアの一例である磁気ディスク121との間(又はリード・ライト・チャネル127との間)における実際のデータ入出力処理を行う。メモリ・マネージャ213はメモリ130のデータ記憶を制御し、ハードディスク・コントローラ128内の他の機能ブロックとメモリ130との間におけるコマンド及びユーザ・データの仲介処理を行う。
ホスト・インターフェース・マネージャ221はホスト・インターフェース211を管理し、ホスト・インターフェース211との間において所定の通知あるいは命令の授受を行う。また、ホスト・インターフェース・マネージャ221は、MPU129で機能する他の論理ブロックとハードディスク・コントローラ128との間のインターフェースとして機能する。ホスト・インターフェース・マネージャ221は、他の機能ブロックから取得した通知や要求などのデータに基づいて、ホスト・インターフェース211とホスト110との間においてやり取りされる例えばコマンド終了通知の発行タイミングなどを制御する。
キュー・マネージャ223は、コマンド・キュー231にキューされているコマンドを分類し、この分類結果に基づき再スケジューリングを実行し、パフォーマンス最適化の観点から適切なコマンド実行順序を決定するコマンド管理部として機能する。コマンド実行マネージャ222は、キュー・マネージャ223によって分類された分類結果及び決定されたコマンド実行順序に従って、コマンドの実行を制御する。ドライブ・マネージャ224はドライブ・インターフェース212を制御することによって、磁気ディスク121との間のデータ書き込み及びデータ読み出しを制御する。ドライブ・マネージャ224は、コマンド実行マネージャ222からの要求に応じて、ドライブ・インターフェース212を制御する。
次に、本実施の形態におけるコマンド・キューイングの基本的動作を説明する。尚、ホスト110から伝送されるコマンドは、キューされるコマンドの他、キューされないコマンドを含むことができる。例えば、SATA IIにおいては、NCQの他、DMA(Direct Memory Access)やPIO(Programmed I/O)などのプロトコルを同時にサポートすることができる。キューすべきコマンドは、例えば、コマンドに付される識別子を参照することによって決定することができる。ここでは、キューされるコマンド及びそれに伴うデータ伝送について説明する。また、キューされるコマンドとして、リード・コマンド及びライト・コマンドを例にとって説明する。
図3は、本形態におけるコマンドのデータ・フォーマットの一例を示している。図のデータ・フォーマットは、リード・コマンド又はライト・コマンドに適用することができる。本実施の形態において、キューイングされるコマンドは、タグ・フィールドを含むタグ付きのリード又はライト・コマンドである。キューイングされる各コマンドは、各コマンドに対応するタグによって識別される。タグによって識別可能な未終了コマンドの数は、キューの深さに応じて決定される。NCQにおいては32のコマンドのそれぞれが、0〜31を表すタグによって識別される。
図3における開始セクタは、転送要求されているデータの開始セクタを表している。セクタ数はその開始セクタからのセクタ数を表している。セクタは、例えば、LBAによって特定することができる。コマンドには、さらに、リード・コマンドとライト・コマンドとを識別するためのコマンドIDが付されている。この他、コマンドは、キャッシュ制御のためのデータなど、他の制御データ等を含むことができる。NCQにおいては、「Read FPDMA (First Party DMA) Queued」又は「Write FPDMA Queued」などである。
ホスト110から伝送されたコマンドは、ホスト・インターフェース211によって受信され、メモリ・マネージャ213を介してコマンド・キュー231に記憶される。ホスト・インターフェース211は、コマンドが入力されたことをホスト・インターフェース・マネージャ221に通知する。ホスト・インターフェース・マネージャ221は、ホスト・インターフェース211からの通知を受けると、ホスト・インターフェース211に、ビジーをクリアすることを要求する。コマンドを受信し、新たなコマンド受領が可能である段階で、ユーザ・データ転送前にビジーはクリアされる。さらに、ホスト・インターフェース・マネージャ221は、キュー・マネージャ223にコマンドの分類及びコマンド実行順序の再スケジューリングを要求する。コマンド・キュー231には、複数の未終了コマンドがキューされうる。
キュー・マネージャ223は、コマンド・キュー231に格納されているコマンドのコマンドIDにより、リード・コマンドであるか、ライト・コマンドであるかを識別する。また、リード・コマンドの場合、そのデータのLBAがキャッシュ232に存在するか否かをチェックする。ここで、リード・コマンドにおいては、キャッシュ232にリード・データが存在する場合は、キャッシュ232から読み出したリード・データをホストへ転送するデータ転送処理となる。また、ライト・コマンドは、ホストから転送されるライト・データを受け取りキャッシュ232に書き込むデータ転送処理となる。これに対し、リード・コマンドにおいてキャッシュ232にデータが存在しない場合は、磁気ディスクへアクセスしてデータを読み出す処理(以下、メディア・アクセス処理という。)が必要となり、この場合のリード・コマンドの処理は、このメディア・アクセス処理と上述のデータ転送処理とからなる。キュー・マネージャ223は、これらのコマンド及びその処理を、メディア・アクセスの要否及びメディア・アクセス処理かデータ転送処理かに基づき分類する。そして、この分類結果に基づきパフォーマンスの点から最適な順序でコマンドが実行されるように、コマンド・キュー231内の未終了コマンドの実行順序を決定し、コマンド順序を再スケジューリングする。コマンド実行順序は、特に、シーク時間及び回転待ち時間の合計の最短化が行われるように決定される。ここで、本明細書においては、シーク時間及び回転待ち時間の合計(以下、レイテンシともいう。)とデータの読み出し時間との合計をメディア・アクセス処理時間ということとする。
再スケジューリングにおいて、キュー・マネージャ223は、所定アルゴリズムに従って、様々なパラメータを考慮して実行順序を決定する。例えば、シーク長、アクセス開始位置、アクチュエータ動作プロファイル、回転方向における位置決め、キャッシュ状態など、多くのパラメータが参照される。ここで、本実施の形態においては、後述するように、リード・コマンドにおいてはリード・データのLBAから先読みの長さが決定され、この先読み分も考慮した実行順序が決定される。また、コマンド・キュー231に格納される順序を最適な実行順序に再スケジューリングするタイミングは、例えば、新たなコマンドがコマンド・キュー231に格納される毎としたり、所定の時間経過毎としたり、ホスト・インターフェース・マネージャ221の指示タイミングとしたりすることができる。
コマンド実行マネージャ222は、キュー・マネージャ223によって決定された順序に従ってコマンド実行を管理する。上記のように、本形態においては、ホスト−デバイス間のユーザ・データ転送は、ハード・ディスク・ドライブ120が内部的に制御することができる。ホスト110へのデータ転送あるいはホスト110からのデータ転送について、ハード・ディスク・ドライブ120が、内部処理におけるレイテンシ低減の観点から、最適なタイミングを決定することができる。
また、各コマンドに対応するデータ転送順序を順不同に決定することができることに加えて、一つのコマンドに対応するデータを、分割し、各部分データを順不同で転送することができることが処理効率化の観点から好ましい。また、一つのコマンドに対応する部分データと部分データの転送の間に、他のコマンドの部分データを転送することができることが更に好ましい。例えば、NCQにおいて、オプションとしてこれらの転送方法がサポートされている。NCQにおいて、"non-zero buffer offsets"が"Enable"、つまり、部分データを特定するオフセットの設定が可能であり、"guaranteed in-order delivery"が"Disable"である、つまり、順不同転送が可能である場合、部分データを上述のような転送方法によって転送することが可能である。なお、以下の説明においては、この条件が満たされているものとして説明する。
キャッシュ232にデータの一部又は全部が存在しないリード・データの転送を指示するリード・コマンドの処理は、キャッシュ232に存在するデータをホストへ転送するデータ転送処理に加えて、磁気ディスクにのみ存在するリード・データをキャッシュ232に一旦読み出すメディア・アクセス処理が必要になる。そこで、本実施の形態においては、一のリード・コマンドの処理をメディア・アクセス処理とデータ転送処理とに分類し、メディア・アクセス処理時間に、自己又は他のコマンドのデータ転送処理を実行することで、コマンドの処理効率を向上するものである。
更に、ユーザ・データ転送をハード・ディスク・ドライブ120が制御するため、ハード・ディスク・ドライブ120は、ホスト110に対してデータ転送のためのセットアップ・フレームを発行する。図4は、本実施の形態におけるセットアップ・フレームのデータ・フォーマットの一例を示している。NCQの"DMA Setup FIS(Frame Information Structure)"は、セットアップ・フレームの一例である。セットアップ・フレームは、リードもしくはライトのデータ転送方向を特定する転送方向を特定するフィールドを含む。タグ・フィールドは、データ転送が対応するキューされている未終了コマンドを特定する。上記のように、例えば、32のコマンドのそれぞれが、0〜31を表すタグによって識別される。
オフセット・フィールドは、一つのコマンドに対する部分データの転送を可能とするため、転送データのオフセットを特定する。NCQの"non-zero buffer offsets"は、オフセット・フィールドの一例である。転送データ・バイト・フィールドは、転送されるデータのバイト数を特定し、オフセットと共に一つのコマンドに対する部分データの転送を可能とする。セットアップ・フレームは、この他、フレーム・タイプや制御データ転送に関する情報などを含む制御データ・フィールドを含むことができる。
ユーザ・データ転送の終了に伴い、コマンド終了通知がハード・ディスク・ドライブ120からホスト110に送信される。このコマンド終了通知の転送はホスト・インターフェース・マネージャ221によって制御することができ、各コマンドに対応するコマンド終了通知のタイミングは、コマンド終了のタイミングの直後に限らず、パフォーマンス向上の観点から適切なタイミングにおいてコマンド終了通知をホスト110に出力することができる。
図5は、本実施の形態におけるコマンド終了通知のデータ・フォーマットの一例を示している。コマンド終了通知は、フレーム・タイプなどの情報を含む制御データ・フィールドの他に、コマンド・ステータス・フィールドを含む。コマンド・ステータス・フィールドは、各タグによって特定される各コマンドのステータスを表す。好ましくは、コマンド・ステータス・フィールドは、キューされうるコマンド数と同一の数のビットから構成される。つまり、32のコマンドがキュー可能であれば、コマンド・ステータス・フィールドは、32ビット・データとなる。各ビットが、各タグに対応付けられたコマンドのステータスを表すことができる。
例えば、所定のビットがセットされている場合、そのビットに対応するタグのコマンドが成功裏に終了したことを示すことができる。また、上述したように、複数のコマンドの終了をホスト110に知らせる場合は、コマンド・ステータス・フィールドにおける複数のビットをセットする。反対に、ビットがクリアされている場合、対応するタグのコマンドが未終了であることを示すことができる。NCQにおいては、"Set Device Bits FIS"がコマンド終了通知の一例であり、"SActive"フィールドがコマンド・ステータス・フィールドの一例である。
次に、本実施の形態におけるコマンドの処理方法について説明する。先ず、ライト・コマンド処理の基本的な動作について説明する。図6は、ライト・コマンド処理方法を示すフローチャートである。キュー・マネージャ223からライト・コマンドを取得すると(ステップS601)、コマンド実行マネージャ222は、ホスト・インターフェース・マネージャ221にホスト110からのデータ転送を開始することを要求する。ホスト・インターフェース・マネージャ221は、所定のアルゴリズムに従ってホスト110との間のデータ伝送(データはユーザ・データの他、コマンド終了通知などの制御データを含む)順序を決定する(ステップS602)。本例において、要求に応じてライト・データの転送開始をホスト・インターフェース211に要求する。ホスト・インターフェース211は、要求に応答して、セットアップ・フレームを発行する(ステップS603)。
ホスト110は、セットアップ・フレームに応答して、ライト・データを転送する(ステップS604)。転送されたライト・データは、ホスト・インターフェース211から、メモリ・マネージャ213を介して、キャッシュ232に記憶される(ステップS605)。その後、ホスト・インターフェース211が、ステータス・フィールドの該当ビットがセットされたコマンド終了通知をホスト110に送信する(ステップS606)。
なお、キャッシュ232がDisableである場合には、データ転送終了の通知を受けたホスト・インターフェース・マネージャ221は、転送完了をコマンド実行マネージャ222に通知し、コマンド実行マネージャ222は、ドライブ・マネージャ224にデータ書き込みの要求を行う。そして、ドライブ・インターフェース212は、ドライブ・マネージャ224の管理下において、メモリ・マネージャ213を介して、メモリ130から取得したライト・データを磁気ディスク121に出力し、磁気ディスク121へのライト・データ書き込みの終了後に、ホスト・インターフェース211がホスト110にコマンド終了通知を送信する。
次に、リード・コマンド処理の基本的な動作について説明する。図7は、リード・コマンド処理方法を示すフローチャートである。コマンド実行マネージャ222は、リード・コマンドが、磁気ディスクにアクセスが必要か否かに応じて処理が異なる。すなわち、磁気ディスクにアクセス必要なリード・コマンドである場合には磁気ディスクへのアクセスとデータ転送とを並列的に処理することも可能である。
通常、メディア・アクセスが必要、すなわちキャッシュ232にリード・データの一部又は全部が存在しない、アクセス要リード・コマンドとしてのリード・コマンドを処理する場合は、コマンド実行マネージャ222は、ドライブ・マネージャ224に磁気ディスク121からのリード・コマンドが指定するリード・データの読み出しを要求する。磁気ディスク121からのリード・データは、ドライブ・マネージャ224の制御の下、ドライブ・インターフェース212、メモリ・マネージャ213を介してメモリ130のキャッシュ232に記憶される(ステップS701)。
さらに、コマンド実行マネージャ222は、ホスト・インターフェース・マネージャ221にリード・データの転送要求を渡す。ホスト・インターフェース・マネージャ221は、コマンド実行マネージャ222からの要求に応答して、ホスト・インターフェース211にホスト110へのデータ転送を開始することを要求する。ホスト・インターフェース211は、要求に応答して、セットアップ・フレームを発行する(ステップS702)。ホスト・インターフェース211は、メモリ・マネージャ213からキャッシュ232に記憶されているリード・データを取得し、リード・データをホスト110に転送する(ステップS703)。転送処理が終了すると、リード・データの転送が終了したことがホスト・インターフェース211からホスト・インターフェース・マネージャ221に通知される。
ホスト・インターフェース・マネージャ221は、ホスト・インターフェース211にコマンド終了通知の送信を要求する。そして、ホスト・インターフェース211が、ステータス・フィールドの該当ビットがセットされたコマンド終了通知を、ホスト110に送信する(ステップS704)。
磁気ディスクにアクセスが不要、すなわち、キャッシュ232にリード・データの全部が存在する、アクセス不要リード・コマンドとしてのリード・コマンドを処理する場合は、ホスト・インターフェース・マネージャ221にリード・データの転送要求を渡し、ホスト・インターフェース・マネージャ221がホスト・インターフェース211にホスト110へのデータ転送開始を要求し、ホスト・インターフェース211が要求に応答して、セットアップ・フレームを発行する上述のステップS702からの処理を実行する。
なお、リード・コマンド、ライト・コマンドのコマンド終了通知の送信タイミングは、他のコマンド又は他のコマンド終了通知などを考慮し、内部処理効率の点から決定することが好ましい。
以下、本発明の実施の形態について更に詳細に説明する。上述のように、HDDは、ホストからライト・コマンド又はリード・コマンドを受け取り、これらのコマンドに従ってディスクからユーザデータ(転送データ)を読み出し、ホストへ転送したり、ホストから受け取った転送データをディスクへ書き込む処理を実行する。この際、ライト・キャッシュがオン(able)であれば、ホストからの転送データをキャッシュ232が受け取った時点でライト・コマンドは終了となる。この場合、ライト・キャッシュから磁気ディスクへの書き込みはHDD自身がそのタイミングを決定して実行することができる。
このように、ライト・コマンドは、ホストから転送されたデータがHDDのキャッシュ232に格納された時点で、ホストとの間のバスの占有が終了し、ライト・コマンドの終了とみなすことができる。すなわち、ライト・コマンドは、HDDがディスクにアクセスすることなく終了することができる。
一方、ホストへ転送する転送データは、一旦キャッシュ232に読み出した後、ホストへ転送される。この際、読み出すべき転送データのアドレスより先のアドレスまでユーザ・データを読み出しておきキャッシュ232に記憶しておくことで、他のリード・コマンドを効率よく実行するようないわゆる先読み(look-ahead)を必要に応じて行うことができる。
ここで、リード・コマンドの場合には、目的の転送データがキャッシュ232にない場合、HDDはディスクにアクセスして目的のデータを読み込みにいく必要がある。すなわち、キャッシュ232にコマンドが示すデータのLBAが存在していれば磁気ディスクにアクセスすることなくリード・コマンドを終了することができ、キャッシュ232にLBAが存在しなければメディア・アクセスが終了するまでコマンドを終了させることができない。この場合、一部のLBAがキャッシュ232に存在したとしても、全部のLBAがキャッシュ232に存在しない限り、当該リード・コマンドを終了させるためには磁気ディスクへのアクセスが必要となる。
すなわち、ライト・コマンドと、リード・コマンドであってキャッシュ232に全てのデータが存在する場合は、コマンドの実行は、データ転送処理となるが、リード・コマンドであってキャッシュ232に一部又は全部のデータが存在しない場合には、磁気ディスクにアクセスして、一旦キャッシュ232にデータを読み出し、それを転送するメディア・アクセス処理が必要となる。磁気ディスクへのアクセス処理は、機械的内部動作を伴うため、その処理に時間がかかる。また、メディア・アクセス処理の間はデータを転送しないためバスが空いた状態になる。
そこで、リード・コマンドであってキャッシュ232にリード・データの一部又は全部が存在しない場合、磁気ディスクにアクセスしてデータを読み出す間(メディア・アクセス時間)において、自己又は他のコマンドのデータ転送処理、すなわち、メディア・アクセス中のリード・コマンドのうちキャッシュ232に存在するリード・データのホストへの転送若しくは他のリード・コマンドであってキャッシュ232にデータが存在するもののホストへの転送、又はホストからキャッシュへのライト・データの転送(ライト・コマンド)のいずれかを実行する。このことにより、リード・コマンドのメディア・アクセス時間において、ホストとの間にてデータ転送する処理を並列処理することができ、コマンドの処理時間を短縮化することができる。
本実施の形態においては、キュー・マネージャ223が、キューされる各コマンド及びコマンドの処理を分類するが、本実施の形態におけるキュー・マネージャ223は、リード・コマンドを、キャッシュ232にデータ全部が存在するもの、一部存在するもの、全く存在しないもの、の3種類に分類する。ここで、本明細書においては、リード・コマンドにおいて、リード・データがキャッシュ232に全部存在する場合をオールヒット、キャッシュ232にリード・データの一部が存在する場合をハーフヒット、キャッシュ232にリード・データが存在せず、磁気ディスクにのみ存在する場合をノーヒットということとする。
すなわち、キュー・マネージャ223は、ライト・コマンド及びオールヒットのリード・コマンドを磁気ディスクへのアクセスが不要なコマンド(以下、アクセス不要コマンドともいう。)とし、ハーフヒット、ノー・ヒットのリード・コマンドを磁気ディスクへのアクセスが必要なコマンド(以下、アクセス要コマンドともいう。)として分類する。
コマンド実行の際に磁気ディスクにアクセスが必要なハーフヒット、ノーヒットは、上述したように、コマンド実行のためにはキャッシュ232に存在しないデータを磁気ディスクにアクセスして読み出す処理(ステップS701)が必要となる。このメディア・アクセスは上述の機械的内部動作であり、ホストとの間の伝送路であるバスを使用しない。一方、メディア・アクセスが不要なライト・コマンド及びオールヒットのリード・コマンドは、コマンド実行に際してバスを占有する。本実施の形態は、このように、一のコマンドのメディア・アクセス時間に、バスを占有する他のコマンドを並列処理することで、コマンドを効率よく処理するものである。そこで、キュー・マネージャ223は、各コマンドの処理を、バスの占有を伴わないメディア・アクセス処理と、バスの占有を伴うデータ転送処理とに分類し、コマンドの種類及びメディア・アクセスの要否(バスの占有の要否)に基づきコマンドの最適な実行順序を決定する。
すなわち、キュー・マネージャ223は、コマンド・キュー231にキューイングされている複数のコマンドの再スケジューリングを行う際、コマンドがライト・コマンドかリード・コマンドか、また、リード・コマンドがオールヒット、ハーフヒット又はノーヒットかを識別し、各コマンドをメディア・アクセスが必要か否かの分類を行う。そして、メディア・アクセスが必要なコマンドを実行する際のメディア・アクセス時間において、実行可能なメディア・アクセス不要なコマンドを検索し、並列処理可能か否かをも考慮してスケジューリングを実行する。
ここで、メディア・アクセス時間は、目的のLBAにヘッドをアクセスする際のシーク時間、回転待ち時間、及び目的のデータを読み出す読み出し時間からなる。このメディア・アクセス時間は、現在のヘッドの位置又は直前に実行したコマンドの最後のポイントのシリンダ、ヘッド、サーボセクタナンバと、ターゲットとなるコマンドの先頭のシリンダ、ヘッド、サーボセクタナンバとからMPU129にて算出することができる。シーク時間は、シリンダの差から、回転待ち時間は、サーボセクタナンバの差から、ディスクからキャッシュ232への転送時間(読み出し時間)は、キャッシュ232への転送速度及び読み出すデータ量から算出することができる。なお、ディスクからキャッシュ232への転送時間は、読み出すリード・データのLBAがディスクのどのゾーンに存在するに応じて変化する値である。
リード・コマンドの処理は、オールヒット、ノーヒット、ハーフヒットとで異なり、上述したように、オールヒットの場合はデータ転送処理のみであるが、ノーヒット、ハーフヒットのリード・コマンドは、いずれの場合であっても、メディア・アクセス処理が必要となる。従って、この間にメディア・アクセスが不要なデータ転送処理を行うことができる。更に、ハーフヒットのリード・コマンドは、リード・データの一部がディスクにのみ記憶され残りがキャッシュ232に記憶されている。したがって、上記ディスクにのみ記憶されたリード・データの一部をキャッシュ232へ読み出すメディア・アクセス処理の間に、キャッシュ232にすでに記憶されている上記残りのリード・データをホストへ転送するデータ転送処理を行ってもよいし、また、例えばライト・コマンド等の他のコマンドに従ってデータ転送処理を行ってもよい。
この再スケジューリングの際の一例について説明する。図8は、並列処理するコマンドを示す模式図である。図8に示すように、アクセス要コマンドAの例えばノーヒットのリード・コマンドの実行時間T、磁気ディスクにアクセスしてデータをキャッシュに読み出すメディア・アクセス処理a1(処理時間T1)、キャッシュからホストへデータを転送するデータ転送処理a2(処理時間T2)とし、実行時間TをT1+T2とすると、メディア・アクセス処理a1はバスの占有がないため、アクセス不要コマンド、すなわちバスの占有を伴うコマンドの処理が可能である。そこで、このメディア・アクセス処理の時間T1内に処理可能なアクセス不要コマンドを並列処理することができる。この場合、コマンド・キュー231からアクセス不要コマンドを選択することもでき、また、自身のコマンドの一部、すなわちデータ転送処理a2を実行することもできる。
いずれの場合であってもバスを占有しない処理時間T1を効率よく使用することが好ましい。コマンド・キュー231からアクセス不要コマンドを選択する場合、図8に示す例では、アクセス不要コマンドB、Eを処理すると処理時間T1をオーバするため処理可能なコマンドは、コマンドBのみとなる。この場合、再度残りの時間で処理できるコマンドを検索してもよい。例えば図8に示すように、コマンドEが処理不可であっても、コマンドCを処理することができる。
更に、処理時間T1にて処理可能なアクセス不要コマンドであればいずれも選択可能とすることができるが、例えばコマンド・キュー231にキューイングされているコマンドに優先度がある場合はそれを参照する。コマンドの優先度としては、例えば、ライト・コマンドよりリード・コマンドを優先することができる。リード・データはホストが必要なデータであり、可能な限り早く転送する必要があるからである。また、コマンド・キュー231にキューイングされた順(キューイング順序が古い順)を優先したり、これらを組み合せることが考えられる。
なお、コマンド・キュー231においては、コマンドがエンキューされる際にコマンドのキューイング順のリンクが生成され、またコマンドIDのリードフラグ、グライトフラグによりにより、コマンドの種類を容易に判定することができる。
図9は、アクセス不要コマンドを含むコマンド順序の決定方法の一例を示すフローチャートである。キュー・マネージャ223は、アクセス要コマンドを処理する際に並列処理するコマンドを選択しておくことができる。ここでは、アクセス要コマンドをノーヒットのリード・コマンドを例にとって説明する。先ず、キュー・マネージャ223は、ノーヒットのリード・コマンドのメディア・アクセス時間を算出しておく。そして、図9に示すように、コマンド・キュー231にキューイングされているコマンドを検索する。ここで、コマンド・キュー231において予めキューイングされた順序でのコマンド検索が可能であるものとする。
コマンド・キュー231において、まず、アクセス不要コマンドのうちリード・コマンド、すなわちオールヒットのリード・コマンドを検索する(ステップS1)。オールヒットのリード・コマンドがない場合には、ライト・コマンドを検索する(ステップS2)。オールヒットのリード・コマンドが存在する場合(ステップS1:YES)又はライト・コマンドが存在する場合、これらのコマンドが、メディア・アクセス時間内に処理可能か否か、すなわちこれらのコマンド処理時間がメディア・アクセス時間より短ければそのコマンドを並列処理するコマンドとして選択する(ステップS3)。そして、次のコマンドを選択するか否かを判定する(ステップS4)。この判定は、例えば残りのメディア・アクセス時間が所定の時間より短い場合は次のコマンドを選択しないなどとすることができ、その場合は処理を終了する。また、選択したオールヒットのリード・コマンド又はライト・コマンドの処理時間が処理時間T1より長い場合はステップS1又はステップS2にて選択したコマンドは並列処理できないと判断する。この場合も次のコマンドを選択するか否かを判定する(ステップS4)。次のコマンドを選択すると判断された場合には、ステップS1からの処理を繰り返す。
図10は、2つのコマンドを並列処理する場合のリード・コマンドの処理方法を示すフローチャートである。ここでは、コマンド実行マネージャ222が、リード・コマンドが、磁気ディスクにアクセスが必要なコマンド、すなわちノーヒット又はハーフヒットのリード・コマンドであって、これを処理する間に上述の方法にて並列処理する他のコマンドを選択している場合について説明する。また、本例では、磁気ディスクにアクセスが必要なノーヒットのリード・コマンドP2の処理中、磁気ディスクにアクセスが不要であるオールヒットのリード・コマンドP1を並列的に実行する場合について説明する。
この場合、コマンド実行マネージャ222は、ホスト・インターフェース・マネージャ221にオールヒットのリード・コマンドP1が指定するリード・データの転送要求を渡す。ホスト・インターフェース・マネージャ221は、コマンド実行マネージャ222からの要求に応答して、ホスト・インターフェース211にホスト110へのデータ転送を開始することを要求する。ホスト・インターフェース211は、要求に応答して、セットアップ・フレームを発行する(ステップS11)。ホスト・インターフェース211は、メモリ・マネージャ213からキャッシュ232に記憶されているリード・データを取得し、リード・データをホスト110に転送する(ステップS12)。
この間、コマンド実行マネージャ222は、ドライブ・マネージャ224に磁気ディスク121からのノーヒットのリード・コマンドにかかるデータの読み出しを要求する。磁気ディスク121から読み出されたリード・データは、ドライブ・マネージャ224の制御の下、ドライブ・インターフェース212、メモリ・マネージャ213を介してメモリ130のキャッシュ232に記憶される(ステップS13)。ここで、図9に示したように、リード・コマンドP2の磁気ディスクからのリード・データのキャッシュ232への読み出し処理時間(メディア・アクセス時間)内に終了可能なコマンドとしてリード・コマンドP1が選択されているため、磁気ディスクからの読み出し時間内にリード・コマンドP1のデータ転送は終了する。
こうして、オールヒットのリード・コマンドP1の転送処理が終了すると、ホスト・インターフェース211は、リード・データの転送が終了したことをホスト・インターフェース・マネージャ221に通知する。ホスト・インターフェース・マネージャ221は、ホスト・インターフェース211にコマンド終了通知の送信を要求する。そして、ホスト・インターフェース211が、ステータス・フィールドの該当ビットがセットされたコマンド終了通知を、ホスト110に送信する(ステップS14)。
その後、コマンド実行マネージャ222は、ステップS13の処理によりノーヒットがオールヒットとなったリード・コマンドP2の転送要求をホスト・インターフェース・マネージャ221に渡す。ホスト・インターフェース・マネージャ221は、コマンド実行マネージャ222からの要求に応答して、ホスト・インターフェース211にホスト110へのデータ転送を開始することを要求する。ホスト・インターフェース211は、要求に応答して、セットアップ・フレームを発行する(ステップS15)。ホスト・インターフェース211は、メモリ・マネージャ213からキャッシュ232に記憶されているリード・データを取得し、リード・データをホスト110に転送する(ステップS16)。ホスト・インターフェース211は、リード・データの転送が終了したことをホスト・インターフェース・マネージャ221に通知し、ホスト・インターフェース・マネージャ221は、ホスト・インターフェース211にコマンド終了通知の送信を要求する。そして、ホスト・インターフェース211が、ステータス・フィールドの該当ビットがセットされたコマンド終了通知を、ホスト110に送信する(ステップS17)。
なお、磁気ディスクにアクセスが必要なリード・コマンドはハーフヒットのリード・コマンドでもよく、また磁気ディスクにアクセスが不要なコマンドはライト・コマンドであってもよい。また、ハーフヒットのリード・コマンドを処理する場合は、他のオールヒットのリード・コマンド又はライト・コマンドを並列処理してもよいが、図8にて説明した如く、ハーフヒットのリード・コマンドの場合は、メディア・アクセスが必要な処理、すなわちキャッシュ232に読み出されていないデータを磁気ディスクにアクセスして読み出す処理と、メディア・アクセスが不要な処理、すなわちキャッシュ232に読み出されているデータをホストへ転送する処理とに分け、メディア・アクセスが必要な処理期間において、アクセスが不要な処理を行うようにしてもよい。更に、このようにハーフヒットのリード・コマンドのうち、メディア・アクセスがなくても実行可能な処理のみを、他のコマンドのメディア・アクセス時間に並列処理するようにしてもよい。更にまた、ステップS15以降の処理は、データ転送処理である。したがって、他のアクセス要リード・コマンドのメディア・アクセス処理と並行して処理するようにしてもよい。
ところで、上述したように、リード・コマンドは、ディスクからリード・データを読み出す際、データの先読み(look-ahead)も合わせて行なうことができる。データの先読みは、リード・コマンドを処理する際、対象のLBAのみならず、更に先のLBAのデータも共に読み出す処理である。先読みにより、キャッシュ232に読み出した先読みデータを格納しておくことができ、通常、リード・コマンドのシーケンシャルアクセスが多いこと等からオールヒットのヒット率を向上させ、コマンドの処理時間の短縮化を図ることができる。また、オールヒットが多いと上述のステップS1にて選択可能なコマンドが増え、メディア・アクセス時間をより効率的に使用することが可能となる。
先読みの長さは、例えば次に実行するべきコマンドがある場合、キャッシュ232の容量等によって適宜設定される。すなわち、次に実行すべきコマンドがある場合には、コマンド実行を優先するため先読みを止めたり、キャッシュ232の空き容量が少ない場合には先読みの長さを短くする等、適宜設定される。
ここで、オールヒットのリード・コマンドが多いと、メディア・アクセス処理の間に選択できるコマンドが多くなり、より効率のよい処理の実行が期待できる。そこで、本発明においては、オールヒットのリード・コマンド率を向上するべく先読みの長さを決定する。すなわち、キューされたリード・コマンドであって、ハーフヒット、ノーヒットの、ディスクから読み出すべきリード・データのアドレスを比較し、一のアドレスの後端と他のアドレスの先端とが所定の関係を満たす場合に前記一のアドレスのデータを読み出すリード・コマンドの先読み範囲に他のアドレスが含まれるよう設定する。
具体的には、先ず、キューされたリード・コマンドの読み出すべき先端及び後端のLBAを比較する。そして一のリード・コマンドにおける読み出すべきデータのLBAの後端と、他のリード・コマンドにおける読み出すべきデータのLBAの先端とを比較し、再度磁気ディスクにアクセスするよりも一のリード・コマンドから他のリード・コマンドまで連続して読み出した方が速い場合には、一のリード・コマンドの先読みの範囲に他のリード・コマンドにおける読み出すべきデータを含める。これにより、1つのリード・コマンドのメディア・アクセス処理によって他のリード・コマンドをオールヒットにすることができる。
オールヒットのリード・コマンド及びライト・コマンドの処理時間は、データを転送する時間(バス占有時間)と略同じで処理時間が極めて短く、リオーダリングしやすい。また、リード・コマンドにおいて、ハーフヒット、ノーヒットの場合、メディア・アクセスを必要とするがこのメディア・アクセス処理の間に並列処理するデータ転送処理を行うコマンドの選択が広がり、コマンド処理効率が向上される。
図11は、先読み範囲を決定する方法の一例を示すフローチャートである。ここでは、キュー・マネージャ223が、コマンド・キュー231に格納されるアクセス要コマンド(以下、コマンドαとする。)の先読み範囲を決定する方法について説明する。先ず、キュー・マネージャ223は、コマンド・キュー231にコマンドαが格納されると、コマンド・キュー231に格納されている複数のコマンドからアクセス要コマンド(以下、コマンドβとする。)を選択する(ステップS21)。なお、ここでは、コマンドα、コマンドβはいずれもノーヒットのリード・コマンドとする。
次に、両者のLBAを比較する。ノーヒットのリード・コマンドαのデータのLBAがαLBA_S〜αLBA_Eであり、ノーヒットのリード・コマンドβのデータのLBAがβLBA_S〜βLBA_Eであるとき、これらの始端と終端とを比較する。すなわち、αLBA_EとβLBA_Sとを比較し、βLBA_EとαLBA_Sとを比較し、この結果から先読みが可能か否かを判断する(ステップS23)。すなわち、コマンドαの読み込みの後コマンドβを続けて読むか、コマンドβの読み込みの後にコマンドαを続けて読み込みする処理時間が、コマンドα及びコマンドβを個別に読み込み処理する時間の合計より短い場合は、先読み可能と判断する。先読み可能ではない場合は、他のアクセス要コマンドを検索し(ステップS25)、他のアクセス要コマンドγがあればステップS22からの処理を繰り返す。先読み可能な場合は、処理を終了するか否かを判断し(ステップS24)、続ける場合は再びアクセス要コマンドを選択して先読み可能か否かを判断するステップS21からの処理を繰り返す。
なお、ステップS24の終了判定は、例えば、処理時間の合計が所定の時間以上になる場合、又は処理データの読み出し量が所定の大きさ以上になった場合には処理を終了するなどの判断をすることができる。処理を終了する場合、又はアクセス要リード・コマンドが存在しなくなった場合には処理を終了し、決定した先読みするアドレスを更新する(ステップS26)。
ここで、例えば、コマンド・キュー231に新たなコマンドがキューイングされる際、当該コマンドがアクセス要コマンドである場合には、コマンド・キュー231に既に格納されているアクセス要コマンドの先読み範囲に含められるか否かをこのようにして判断しておけばよい。
次に、本実施の形態の具体例について説明する。図12は、先読みによりリード・コマンドの処理の向上効果を説明する図である。図12に示すように、リード・コマンドC1、C2、C3があって、リード・コマンドC1はノーヒット、リード・コマンドC2はノーヒットとし、リード・コマンドC1のリード・データの一部のアドレスとリード・コマンドC3のリード・データの一部のアドレスとが重複するものとする(リード・コマンドC3はリード・コマンドC1にハーフヒット)。また、リード・コマンドC1の後端アドレスからリード・コマンドC2へのアクセス時間(シーク時間+回転待ち時間)を6msec、リード・コマンドC1の後端アドレスからリード・コマンドC3へのアクセス時間(シーク時間+回転待ち時間)を8msec、リード・コマンドC2の後端アドレスからリード・コマンドC3へのアクセス時間(シーク時間+回転待ち時間)を7msec、アクセス後の磁気ディスクからの読み出し時間は、リード・コマンドC2、C3のいずれも1msecとする。
リード・コマンドC1を最初に処理するとして、これら3つのリード・コマンドC1〜C3を処理する場合、従来のように、アクセス時間のみを考慮して処理順序を決定すると、
リード・コマンドC1→リード・コマンドC2→リード・コマンドC3
となる。この場合、リード・コマンドC1の後端からリード・コマンドC2、C3にアクセスしてこれらのデータを磁気ディスクから読み出す時間は、リード・コマンドC1の後端アドレスからリード・コマンドC2へのアクセス時間=6msecと、リード・コマンドC2のデータを読み出す時間=1msecと、リード・コマンドC2の後端アドレスからリード・コマンドC3へのアクセス時間=7msecと、リード・コマンドC3のデータを読み出す時間=1msecの合計、すなわち、6+1+7+1=15msecとなる。なお、以上の処理は、リード・コマンドC1〜C3のリード・データを磁気ディスクからキャッシュ232に読み出すメディア・アクセス処理に必要な時間である。
一方、上述したように、メディア・アクセス時間を考慮して先読み範囲を決定する場合、リード・コマンドC3のリード・データと、リード・コマンドC1のリード・データとは一部のアドレスが重複しており、したがってリード・コマンドC3は、リード・コマンドC1に連続して読むことができる。すなわち、リード・コマンドC3のリード・データをリード・コマンドC1の先読み範囲とすることで、リード・コマンドC3をオールヒットのリード・コマンドとして扱うことができる。このように、他のコマンドがなるべくオールヒットとなるよう3つのリード・コマンドの処理順序を決定すると、
リード・コマンドC1→リード・コマンドC3(=リード・コマンドC1の先読み)→リード・コマンドC2
となる。この場合、リード・コマンドC1の後端からリード・コマンドC3、C2にアクセスしてこれらのデータを磁気ディスクから読み出す時間は、リード・コマンドC1の先読み範囲としてリード・コマンドC3を読み出す時間=1msecと、リード・コマンドC3の後端アドレスからリード・コマンドC2へのアクセス時間=7msecと、リード・コマンドC2のデータを読み出す時間=1msecの合計、すなわち、この場合のメディア・アクセス処理時間は、1+7+1=9msecとなる。
以上のように、リード・コマンドのリード・データのアドレスを考慮して先読み範囲を決定することで、無駄なアクセス動作を削減してコマンドの処理時間を短縮化することができる。
本実施の形態においては、コマンドがコマンド・キュー231にエンキューされる際、キュー・マネージャ223がコマンド及びその処理の分類を行い、先読み範囲を決定する。そして、リード・コマンドについてリード・データがキャッシュ232に全部入っているものをオールヒット、一部入っているものをハーフヒット、全く入っていないものをノーヒットとし、ハーフヒット、ノーヒットの場合は磁気ディスクにアクセスしてリード・データを読み出す処理を実行するメディア・アクセス時間を算出し、磁気ディスクにアクセスする処理とデータ転送処理とを分け、メディア・アクセス時間にデータ転送処理を実行させることで、1つのリード・コマンドの処理においてもメディア・アクセスとデータ転送とを並列実行させ、処理時間を短縮化することができる。
すなわち、データ転送開始タイミングをHDD側で決定する機能、及び複数のコマンドのデータ転送が同時に行う機能を使用することで、コマンド毎の処理ではなく、メディアにアクセスが必要か否か、バスの占有が必要か否かの処理に分類し、メディア・アクセス処理の間にバスの占有を伴うデータ転送処理を並列実行させることで、1つのコマンドの処理を必要に応じて分割して処理することで、コマンド処理性能を向上することができる。
また、コマンドとしての処理時間を更に短縮化し、またメディア・アクセス時間に処理するデータ転送処理のコマンドを増やしてコマンド処理の高効率化を図るべく、メディア・アクセスする際の先読み範囲を決定する。すなわち、メディア・アクセスが必要なリード・データの各アドレスに基づき、個別に読むより連続して読み出した方が処理時間が短くなる場合は、一方のリード・データの先読み範囲に他方のリード・データを含ませるようにすることで当該他方のリード・データのコマンドをオールヒットとみなすことができる。
これらを総合してエンキューされたコマンドの再スケジューリングを行うことで、アクセス要リード・コマンドと並列処理する他のコマンドがある場合はそれらのセットとみなしたり、アクセス要リード・コマンドのメディア・アクセス処理とデータ転送処理とを並行して実行して処理時間を短縮したりして、効率のよいコマンドの処理を実行することができる。
こうして、本実施の形態においては、メディア・アクセスとデータ転送の並列処理及びオールヒットを増やすための先読み範囲の設定により、コマンド・キューに格納するコマンド数及びコマンド・キューの個数が少なくてもシーク時間及び回転待ち時間をできるだけ短くし、かつシーク時間+回転待ち時間の間を有効活用することができ、コマンド処理性能を向上することができる。また、本実施の形態においては、LBAの比較のみで先読み範囲を決定し、再スケジューリングを行うため、例えばRPS(rotational position sensing)情報等を使用してヘッドの位置を監視する等の機能がない場合であっても、極めて簡単に処理効率を向上することができる
なお、本発明は上述した実施の形態のみに限定されるものではなく、本発明の要旨を逸脱しない範囲において種々の変更が可能であることは勿論である。例えば、また、各処理と論理構成との関係は上記例に限定されるものではない。設計者は、効率的な機能及び回路構成によって、記憶装置を設計することができる。本実施形態において、磁気ヘッド122は、書き込み及び読み出し処理を行うことができる記録再生ヘッドであるが、再生のみを行う再生専用装置に本発明を適用することも可能である。尚、本発明は磁気ディスク記憶装置に特に有用であるが、光ディスク記憶装置など、記憶媒体としてのメディアを駆動する他の態様の記憶装置に適用することが可能である。
本発明の実施の形態におけるデータ処理システム100の概略構成を示す構成図である。 本発明の実施の形態のホスト−デバイス間インターフェースにおいて、ホスト−デバイス間のデータ転送処理を実行する要部を示すブロック図である。 本発明の実施の形態におけるコマンドのデータ・フォーマットの一例を示す図である。 本発明の形態におけるセットアップ・フレームのデータ・フォーマットの一例を示す図である。 本発明の実施の形態におけるコマンド終了通知のデータ・フォーマットの一例を示す図である。 本発明の実施の形態にかかるHDDにおけるライト・コマンド処理方法を示すフローチャートである。 本発明の実施の形態にかかるHDDにおけるリード・コマンド処理方法を示すフローチャートである。 本発明の実施の形態にかかるHDDにおけるリード・コマンドの並列処理を説明する模式図である。 本発明の実施の形態にかかるHDDにおけるアクセス不要コマンドを含むコマンド順序の決定方法の一例を示すフローチャートである。 本発明の実施の形態にかかるHDDにおける2つのコマンドを並列処理する場合のリード・コマンドの処理方法を示すフローチャートである。 本発明の実施の形態にかかるHDDにおける先読み範囲を決定する方法の一例を示すフローチャートである。 本発明の実施の形態にかかるHDDにおける先読みによりリード・コマンドの処理の向上効果を説明する図である。
符号の説明
120 ハード・ディスク・ドライブ、121 磁気ディスク
121 磁気ディスク、122 磁気ヘッド
123 ヘッド・スタック・アセンブリ
124 コントローラ、125 スピンドル・モータ
127 チャネル、127 リード・ライト・チャネル
128 ハードディスク・コントローラ、130 メモリ
133 サーボ・コントローラ、134 ドライバ
134 モータ・ドライバ・ユニット、136 ドライバ
211 ホスト・インターフェース、212 ドライブ・インターフェース
213 メモリ・マネージャ、221 ホスト・インターフェース・マネージャ
222 コマンド実行マネージャ、223 キュー・マネージャ
224 ドライブ・マネージャ、231 コマンド・キュー

Claims (19)

  1. ホストとの間にてライト・データ又はリード・データをコマンドに従って転送するメディア・ドライブであって、
    複数のコマンドを格納可能なキューと、
    前記複数のコマンドを、コマンドを処理する際のメディアへのアクセスの要否に基づき分類し、その実行順序を最適化するコマンド管理部とを有し、
    前記コマンド管理部は、前記メディアにアクセスして実行するメディア・アクセス処理とホストとの間にてデータ転送をするデータ転送処理とを並行して行なわせるよう前記実行順序を最適化する
    ことを特徴とするメディア・ドライブ。
  2. 前記コマンド管理部は、前記コマンドの処理を、前記メディア・アクセス処理を行うメディア・アクセス処理と、前記データ転送処理を行うデータ転送処理とに分類し、前記分類結果に基づき前記実行順序を最適化する
    ことを特徴とする請求項1記載のメディア・ドライブ。
  3. 前記ホストから転送されたライト・データ及びホストへ転送するリード・データを記憶する一時記憶部を有し、
    前記コマンド管理部は、リード・コマンドを、前記一時記憶部に前記リード・データの全部が記憶されたアクセス不要リード・コマンドと、前記メディアにのみ前記リード・データの一部又は全部が記憶されたアクセス要リード・コマンドとに分類し、前記分類結果に基づき前記実行順序を最適化する
    ことを特徴とする請求項1記載のメディア・ドライブ。
  4. 前記ホストから転送されたライト・データ及びホストへ転送するリード・データを記憶する一時記憶部を有し、
    前記コマンド管理部は、前記リード・コマンドの処理のうち、前記メディアにのみ記憶された一部又は全部のリード・データを前記一時記憶部へ読み出す処理を前記メディア・アクセス処理とし、前記一時記憶部に記憶されたリード・データを前記ホストへ転送する処理及び前記ホストからのライト・データを前記一時記憶部へ記憶するライト・コマンドの処理を前記データ転送処理として分類する
    ことを特徴とする請求項2記載のメディア・ドライブ。
  5. 前記リード・データの一部が前記メディアにのみ記憶され残りが前記一時記憶部に記憶されている場合、前記コマンド管理部は、前記メディアにのみ記憶された前記リード・データの一部を前記一時記憶部へ読み出す前記メディア・アクセス処理と、当該リード・データの前記一時記憶部に記憶されている前記残りを前記ホストに転送する前記データ転送処理とを並列して実行させる
    ことを特徴とする請求項3記載のメディア・ドライブ。
  6. 前記コマンド管理部は、前記メディアにのみ一部又は全部が記憶された前記リード・データを前記一時記憶部に読み出す前記メディア・アクセス処理と、他のリード・コマンド又はライト・コマンドの前記データ転送処理とを並列して実行させる
    ことを特徴とする請求項3記載のメディア・ドライブ。
  7. 前記リード・データの一部が前記メディアにのみ記憶され残りが前記一時記憶部に記憶されている場合、前記メディアにのみ記憶された前記リード・データの一部を前記一時記憶部へ読み出す前記メディア・アクセス処理と、前記一時記憶部に記憶された前記リード・データの前記残りを前記ホストへ転送するデータ転送処理、又は前記アクセス不要リード・コマンド若しくはライト・コマンドの処理とを並列して実行させる
    ことを特徴とする請求項4記載のメディア・ドライブ。
  8. 前記コマンド管理部は、前記分類結果に基づきリード・コマンドの先読みデータ範囲を決定する先読み範囲決定部を更に有し、
    前記先読み範囲決定部は、一の前記アクセス要リード・コマンドの前記メディアにのみ記憶されたデータが他の前記アクセス要リード・コマンドの前記先読みデータに含まれるよう前記先読み範囲を決定する
    ことを特徴とする請求項3記載のメディア・ドライブ。
  9. 前記先読み範囲決定部は、各前記アクセス要リード・コマンドにおける前記メディアから読み出すリード・データのアドレスを比較し、一のアドレスの一端と他のアドレスの一端とが所定の関係を満たす場合に、前記他のアドレスが含まれるよう前記一のアドレスの前記先読み範囲を設定する
    ことを特徴とする請求項8記載のメディア・ドライブ。
  10. 前記先読み範囲決定部は、複数の前記アクセス要リード・コマンドにおける前記メディアにのみ記憶されたリード・データを個別に読み出す時間の総和と、連続して読み出す時間の総和とを比較し、当該比較結果に基づき先読み範囲を決定する
    ことを特徴とする請求項8記載のメディア・ドライブ。
  11. 前記コマンド管理部は、前記先読み範囲決定部により決定された先読み範囲にリード・データが含まれるアクセス要リード・コマンドを、アクセス不要リード・コマンドとして再分類する
    ことを特徴とする請求項8記載のメディア・ドライブ。
  12. 前記コマンド管理部は、前記コマンド又はコマンドの処理の実行優先度に基づき前記実行順序を決定する
    ことを特徴とする請求項1記載のメディア・ドライブ。
  13. 前記コマンド管理部は、前記ライト・コマンドより前記リード・コマンドの実行を優先させる
    ことを特徴とする請求項12記載のメディア・ドライブ。
  14. 前記コマンド管理部は、前記キューに格納された順序が早いコマンドの実行を優先させる
    ことを特徴とする請求項12又は13記載のメディア・ドライブ。
  15. 前記コマンド管理部は、前記アクセス要リード・コマンドより前記アクセス不要リード・コマンドの実行を優先させる
    ことを特徴とする請求項12乃至14のいずれか1項記載のメディア・ドライブ。
  16. 前記コマンド管理部は、前記メディア・アクセス処理より前記データ転送処理の実行を優先させる
    ことを特徴とする請求項12乃至15のいずれか1項記載のメディア・ドライブ。
  17. ホストとの間にてライト・データ又はリード・データをコマンドに従って転送するメディア・ドライブであって、
    複数のコマンドを格納可能なキューと、
    前記複数のコマンドを、コマンドを処理する際のメディアへのアクセスの要否に基づき分類し、その実行順序を最適化するコマンド管理部と、
    前記分類結果に基づきリード・コマンドの先読み範囲を決定する先読み範囲決定部とを有し、
    前記先読み範囲決定部は、メディア・アクセスが必要なリード・コマンドの先読み範囲を、前記メディア・アクセスが必要な他のリード・コマンドのメディア・アクセスが不要となるよう決定する
    ことを特徴とするメディア・ドライブ。
  18. 複数のコマンドをキューに格納して処理可能なメディア・ドライブのコマンド処理方法であって、
    前記複数のコマンドを、コマンドを処理する際のメディアへのアクセスの要否に基づき分類し、
    前記分類結果に基づき、前記メディアにアクセスして実行するメディア・アクセス処理とホストとの間にてデータ転送をするデータ転送処理とを並行して行なわせるよう前記複数のコマンドの実行順序を最適化する
    ことを特徴とするメディア・ドライブのコマンド処理方法。
  19. 複数のコマンドをキューに格納して処理可能なメディア・ドライブのコマンド処理方法であって、
    前記複数のコマンドのうち、メディア・アクセスが必要なリード・コマンドの先読み範囲を、前記メディア・アクセスが必要な他のリード・コマンドのメディア・アクセスが不要となるようリード・コマンドの先読み範囲を決定し、
    前記コマンドを処理する際のメディアへのアクセスの要否に基づき、前記複数のコマンドの実行順序を最適化する
    ことを特徴とするメディア・ドライブのコマンド処理方法。
JP2004328625A 2004-11-12 2004-11-12 メディア・ドライブ及びそのコマンド実行方法 Withdrawn JP2006139548A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2004328625A JP2006139548A (ja) 2004-11-12 2004-11-12 メディア・ドライブ及びそのコマンド実行方法
US11/271,397 US7373460B2 (en) 2004-11-12 2005-11-10 Media drive and command execution method thereof

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2004328625A JP2006139548A (ja) 2004-11-12 2004-11-12 メディア・ドライブ及びそのコマンド実行方法

Publications (1)

Publication Number Publication Date
JP2006139548A true JP2006139548A (ja) 2006-06-01

Family

ID=36387775

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004328625A Withdrawn JP2006139548A (ja) 2004-11-12 2004-11-12 メディア・ドライブ及びそのコマンド実行方法

Country Status (2)

Country Link
US (1) US7373460B2 (ja)
JP (1) JP2006139548A (ja)

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009230772A (ja) * 2008-03-19 2009-10-08 Fujitsu Ltd データ記憶装置
JP2010282422A (ja) * 2009-06-04 2010-12-16 Toshiba Corp データ記憶装置及びデータ転送制御方法
JP2012532397A (ja) * 2009-07-02 2012-12-13 サンドフォース インク. ストレージデバイスに関連付けられた複数の書き込みコマンドの順序付け
JP2013206164A (ja) * 2012-03-28 2013-10-07 Nec Corp データ記憶制御装置、データ記憶制御システム、テータ記憶制御方法、及び、データ記憶制御プログラム
US8832333B2 (en) 2010-12-15 2014-09-09 Kabushiki Kaisha Toshiba Memory system and data transfer method
JP2014532237A (ja) * 2011-10-06 2014-12-04 マーベル ワールド トレード リミテッド ストレージにアクセスするためのコマンドキュー長を効率的に増やす方法及び装置
US8990462B2 (en) 2012-11-26 2015-03-24 Samsung Electronics Co., Ltd Storage device, computing system including the same and data transferring method thereof
US9213498B2 (en) 2013-09-03 2015-12-15 Kabushiki Kaisha Toshiba Memory system and controller
US11942110B2 (en) 2022-08-31 2024-03-26 Kabushiki Kaisha Toshiba Magnetic disk device and command processing method

Families Citing this family (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080320209A1 (en) * 2000-01-06 2008-12-25 Super Talent Electronics, Inc. High Performance and Endurance Non-volatile Memory Based Storage Systems
JP4804175B2 (ja) * 2006-03-02 2011-11-02 株式会社日立製作所 I/oコマンドをキューイングするストレージシステム及びその制御方法
US20080077727A1 (en) * 2006-09-25 2008-03-27 Baca Jim S Multithreaded state machine in non-volatile memory devices
US7996599B2 (en) * 2007-04-25 2011-08-09 Apple Inc. Command resequencing in memory operations
US8006047B2 (en) 2007-06-27 2011-08-23 Hitachi Global Storage Technologies Netherlands B.V. Storage device with write barrier sensitive write commands and write barrier insensitive commands
TWI347548B (en) * 2007-09-07 2011-08-21 Quanta Comp Inc Detecting and recovering failure command method and system
US7774540B2 (en) * 2007-12-26 2010-08-10 Hitachi Global Storage Technologies Netherlands B.V. Storage system and method for opportunistic write-verify
US7991948B2 (en) * 2008-01-30 2011-08-02 International Business Machines Corporation Optimizing execution of I/O requests for a disk drive in a computing system
JP2010140380A (ja) * 2008-12-15 2010-06-24 Toshiba Storage Device Corp コマンドの実行順序を変更する制御装置および記憶装置
KR101662729B1 (ko) * 2009-05-08 2016-10-06 삼성전자주식회사 시리얼 인터페이스 프로토콜을 사용하여 호스트와 인터페이스하는 비휘발성 메모리 기반 저장 장치의 커맨드 처리 방법 및 상기 방법을 수행하기 위한 메모리 컨트롤러
US8171332B2 (en) * 2009-05-12 2012-05-01 Himax Technologies Limited Integrated circuit with reduced electromagnetic interference induced by memory access and method for the same
US8677054B1 (en) * 2009-12-16 2014-03-18 Apple Inc. Memory management schemes for non-volatile memory devices
WO2011119151A1 (en) * 2010-03-24 2011-09-29 Hewlett-Packard Development Company, L.P. Communication between a computer and a data storage device
WO2012170025A1 (en) * 2011-06-09 2012-12-13 Hewlett-Packard Development Company, L.P. Regulating power consumption of a mass storage system
US8838841B2 (en) 2012-07-30 2014-09-16 HGST Netherlands B.V. Method and structure enabling improved native command queueing in a data storage device
US9058825B2 (en) * 2013-11-19 2015-06-16 Karim Kaddeche Apparatus, systems and processes for reducing a hard disk drive's access time and concomitant power optimization
US9454310B2 (en) * 2014-02-14 2016-09-27 Micron Technology, Inc. Command queuing
US10146293B2 (en) * 2014-09-22 2018-12-04 Western Digital Technologies, Inc. Performance-aware power capping control of data storage devices
US9965206B2 (en) 2015-10-23 2018-05-08 Western Digital Technologies, Inc. Enhanced queue management for power control of data storage device
US10423568B2 (en) * 2015-12-21 2019-09-24 Microsemi Solutions (U.S.), Inc. Apparatus and method for transferring data and commands in a memory management environment
KR102504660B1 (ko) 2018-02-05 2023-03-02 삼성전자주식회사 응용 프로세서, 전장 프로세서, 그리고 응용 프로세서를 포함하는 컴퓨팅 장치
US10418053B1 (en) * 2018-03-07 2019-09-17 Kabushiki Kaisha Toshiba Disk-drive with efficient command-reordering
US11455402B2 (en) * 2019-01-30 2022-09-27 Seagate Technology Llc Non-volatile memory with precise write-once protection
US11106390B1 (en) * 2020-04-24 2021-08-31 Seagate Technology Llc Combining in-process reads to reduce die collisions

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6189072B1 (en) * 1996-12-17 2001-02-13 International Business Machines Corporation Performance monitoring of cache misses and instructions completed for instruction parallelism analysis
US6643745B1 (en) * 1998-03-31 2003-11-04 Intel Corporation Method and apparatus for prefetching data into cache
JP2001209500A (ja) 2000-01-28 2001-08-03 Fujitsu Ltd ディスク装置およびディスク装置のリード・ライト処理方法
US7107415B2 (en) * 2003-06-20 2006-09-12 Micron Technology, Inc. Posted write buffers and methods of posting write requests in memory modules
US7370152B2 (en) * 2004-06-29 2008-05-06 Rambus Inc. Memory controller with prefetching capability

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009230772A (ja) * 2008-03-19 2009-10-08 Fujitsu Ltd データ記憶装置
US7949795B2 (en) 2008-03-19 2011-05-24 Toshiba Storage Device Corporation Power conservation in data storage device by only starting the active state when the measured time indicates data is present on the interface
JP2010282422A (ja) * 2009-06-04 2010-12-16 Toshiba Corp データ記憶装置及びデータ転送制御方法
JP2012532397A (ja) * 2009-07-02 2012-12-13 サンドフォース インク. ストレージデバイスに関連付けられた複数の書き込みコマンドの順序付け
US8832333B2 (en) 2010-12-15 2014-09-09 Kabushiki Kaisha Toshiba Memory system and data transfer method
JP2014532237A (ja) * 2011-10-06 2014-12-04 マーベル ワールド トレード リミテッド ストレージにアクセスするためのコマンドキュー長を効率的に増やす方法及び装置
JP2013206164A (ja) * 2012-03-28 2013-10-07 Nec Corp データ記憶制御装置、データ記憶制御システム、テータ記憶制御方法、及び、データ記憶制御プログラム
US8990462B2 (en) 2012-11-26 2015-03-24 Samsung Electronics Co., Ltd Storage device, computing system including the same and data transferring method thereof
US9213498B2 (en) 2013-09-03 2015-12-15 Kabushiki Kaisha Toshiba Memory system and controller
US11942110B2 (en) 2022-08-31 2024-03-26 Kabushiki Kaisha Toshiba Magnetic disk device and command processing method

Also Published As

Publication number Publication date
US7373460B2 (en) 2008-05-13
US20060106980A1 (en) 2006-05-18

Similar Documents

Publication Publication Date Title
JP2006139548A (ja) メディア・ドライブ及びそのコマンド実行方法
US7664884B2 (en) Media drive that creates a transfer unnecessary period, and power saving method thereof
US7320050B2 (en) Data transmission control method and storage device
US6842801B2 (en) System and method of implementing a buffer memory and hard disk drive write controller
US7225293B2 (en) Method, system, and program for executing input/output requests
US7574538B1 (en) Contiguous I/O command queuing within a data storage device
US8656097B2 (en) Selection of data storage locations based on one or more conditions
JP4991605B2 (ja) データ記憶装置およびその制御方法
US7451261B2 (en) Data storage device and control method with buffer control thereof
US6957311B2 (en) Data storage apparatus, computer apparatus, data processing apparatus, and data processing method
US8117491B2 (en) Disk-drive device and method for error recovery thereof
US6567886B1 (en) Disk drive apparatus and control method thereof
US20040015878A1 (en) Reordering controller, reordering method and storage apparatus
US8320066B2 (en) Storage device and read/write processing method therefor
US10418053B1 (en) Disk-drive with efficient command-reordering
US6654852B2 (en) Method and system of reading and writing data by a disk drive apparatus
US20060129716A1 (en) Data storage device and buffer control method thereof
US20030084261A1 (en) Method for reordering commands to a storage device
JP5030387B2 (ja) データ記憶装置
JP2013157062A (ja) ディスクドライブ装置およびライト制御方法
JPWO2008129616A1 (ja) 記憶装置、記憶装置の制御装置、記憶装置の制御方法
JP2012038330A (ja) ハードディスクドライブ
US11942110B2 (en) Magnetic disk device and command processing method
JP2003256145A (ja) データ転送システムおよびデータ転送方法

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20070702

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20070702

A761 Written withdrawal of application

Free format text: JAPANESE INTERMEDIATE CODE: A761

Effective date: 20090515