JP2004507023A - 順不同の書き込み動作を実行するように構成されたディスク制御装置 - Google Patents
順不同の書き込み動作を実行するように構成されたディスク制御装置 Download PDFInfo
- Publication number
- JP2004507023A JP2004507023A JP2002521285A JP2002521285A JP2004507023A JP 2004507023 A JP2004507023 A JP 2004507023A JP 2002521285 A JP2002521285 A JP 2002521285A JP 2002521285 A JP2002521285 A JP 2002521285A JP 2004507023 A JP2004507023 A JP 2004507023A
- Authority
- JP
- Japan
- Prior art keywords
- buffer memory
- write operation
- data
- write
- address
- 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.)
- Granted
Links
- 239000000872 buffer Substances 0.000 claims abstract description 247
- 238000012546 transfer Methods 0.000 claims abstract description 27
- 238000000034 method Methods 0.000 claims description 68
- 238000010586 diagram Methods 0.000 abstract description 3
- 238000005516 engineering process Methods 0.000 description 7
- 230000006870 function Effects 0.000 description 5
- 230000004044 response Effects 0.000 description 5
- 238000012545 processing Methods 0.000 description 4
- 230000003190 augmentative effect Effects 0.000 description 3
- 230000003139 buffering effect Effects 0.000 description 3
- 230000002950 deficient Effects 0.000 description 3
- 238000011161 development Methods 0.000 description 3
- 230000018109 developmental process Effects 0.000 description 3
- 230000001174 ascending effect Effects 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 125000004122 cyclic group Chemical group 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11B—INFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
- G11B20/00—Signal processing not specific to the method of recording or reproducing; Circuits therefor
- G11B20/10—Digital recording or reproducing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
- G06F12/0607—Interleaved addressing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
- G06F12/0868—Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
- G06F3/0613—Improving I/O performance in relation to throughput
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0674—Disk device
- G06F3/0676—Magnetic disk device
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11B—INFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
- G11B5/00—Recording by magnetisation or demagnetisation of a record carrier; Reproducing by magnetic means; Record carriers therefor
- G11B5/012—Recording on, or reproducing or erasing from, magnetic disks
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Signal Processing (AREA)
- Signal Processing For Digital Recording And Reproducing (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Indexing, Searching, Synchronizing, And The Amount Of Synchronization Travel Of Record Carriers (AREA)
- Control Of Indicators Other Than Cathode Ray Tubes (AREA)
Abstract
【解決手段】ハードディスク装置はディスクと、制御装置マイクロプロセッサーと、ホストバスインターフェースと、バッファメモリーと、バッファメモリー制御装置と、ディスクフォーマッターとを含む。バスインターフェースは書き込み動作を受け取り、バッファメモリー制御装置は動作が受け取られる相対的順序でバッファメモリーの対応する書き込み動作データを記憶する。バッファメモリー制御装置は次に書き込み動作のデータをバッファメモリーから、データをフォーマット化してディスクに書き込むディスクフォーマッターに転送する。バッファメモリー制御装置はバッファメモリーへの読み出しおよび書き込みアクセスを制御する。バッファメモリー制御装置は1組のアドレスレジスターと1組のブロックカウントレジスターを含む。マイクロプロセッサーは2個以上の書き込み動作のデータのバッファメモリー内のアドレスをアドレスレジスターにロードする。マイクロプロセッサーは対応する動作のブロック内の大きさをブロックカウントレジスターにロードする。マイクロプロセッサーは次に、バッファメモリー制御装置に一つのコマンドを出してアドレスレジスターとブロックカウントレジスターによって識別されたデータをバッファメモリーからディスクフォーマッターに転送する。アドレスレジスターとブロックカウントレジスターによって、バッファメモリー制御装置がいくつかの書き込み動作のデータをいかなる順序でも転送できるようになる。以前のバッファ制御装置は一般にデータがバッファメモリーに記憶されたのと同じ順序でしかいくつかの書き込み動作のデータを転送できない。
【選択図】図8
Description
(発明の分野)
本発明はハードディスク制御装置に関するものであって、特に、ディスクの1 周期の間に多数の書き込み動作を順不同に行うことができるディスク制御装置およびその方法に関する。
【0002】
(関連技術の説明)
ハードディスクドライブがホストコンピュータによって要求された読み出しおよび書き込み動作を行う速度は、コンピュータの性能にとって重要である。ハードディスクドライブによるいかなる遅延も、コンピュータによるプログラムの実行においてそれと対応する遅延を引き起こしやすい。ハードディスク技術におけるいくつかの開発において、個々のディバイス動作の応答時間を短くしたり、データ転送速度を増したりすることに焦点をあてている。ハードドライブ技術における他の開発では、多数の動作を行うのにかかる時間を短くすることに焦点をあてている。後者のタイプの開発のうちの2 つが米国特許第4 ,667 ,286 号および第6 ,029 ,226 号において記載されている。
【0003】
「ディスクと中央演算処理装置間のデータ転送のための方法および装置」と題する米国特許第4 ,667 ,286 号は、トグリングデータバッファを備えた構造を開示している。その構造によれば、多数の動作をディスクの1 周期の間に行うことができる。データは中央演算処理装置と最初のデータバッファの間を転送される一方で、データは2 番目のデータバッファとディスク間で転送される。バッファの動作は、データが中央演算処理装置と2 番目のデータバッファ間で転送されている一方で、1 番目のデータバッファとディスク間を転送されるように、トグルされ得る。
【0004】
「2 つの書き込みコマンドを1 つの書き込みコマンドとして処理することによってオプションのスキップで自動書き込みデータ転送をする方法および装置」と題する米国特許第6 ,029 ,226 号は書き込みコマンドを組み合わせる方法を提示している。2 番目の書き込みコマンドの1 番目の論理ブロックアドレス(LBA )と1 番目の書き込みコマンドの最後のLBA との近さが比較される。もし2 番目の書き込みコマンドが充分に近いなら、ディスク制御装置は組み合わせた書き込みの間に2 つのコマンド間のセクターをスキップしながら、2 つの書き込みコマンドを1 つの書き込みコマンドとして実行する。それゆえ、2 個の書き込みがハードディスクの1 周期(single revolution) で行われ得る。
【0005】
ディスク制御装置によって受け取られた順序以外の順序で書き込み動作を実行することがよい場合もある。順不同で書き込み動作をすることによって、ディスクの複数の周期よりむしろ単一周期の間に書き込みが行われることが可能となる。そのため、動作にかかる時間が短くなる。本発明はとりわけこの点を追及している。
【0006】
【課題を解決するための手段】
(発明の要約)
好ましい実施例において、ハードディスク装置は、ディスクと、制御装置マイクロプロセッサーと、ホストバスインターフェースと、バッファメモリーと、バッファメモリー制御装置と、ディスクフォーマッターとを含む。書き込み動作は、バスインターフェースによって受け取られ、各書き込み動作に対応する書き込み動作のデータがバッファメモリー内の円形バッファに記憶される。バッファメモリー制御装置は、円形バッファを実行し、バッファメモリーへの読み出しおよび書き込みアクセスを制御する。書き込み動作データが到着すると、バッファメモリー制御装置は、その動作がハードディスク装置によって受け取られた順序で円形バッファにデータを連続して記憶する。
【0007】
マイクロプロセッサーからのコマンドを受け取ると、一般的には、バッファメモリー制御装置は、書き込み動作のデ―タをバッファメモリーから、データをフォーマット化してディスクに書き込むディスクフォーマッターに転送する。一実施例では、バッファ制御装置は、最初の書き込み動作のデータがディスクに書き込まれたあとであっても、円形バッファからデータを転送し続ける。バッファ制御装置は、ハードディスク装置によって受け取られた順序で動作ごとにデータを供給する。マイクロプロセッサーは、単に次に受け取られた動作のデータを書き込み続けるようにディスクフォーマッターにコマンドを出すこともできる。
【0008】
好ましい実施例では、バッファメモリー制御装置はまた、1 組のアドレスレジスターと1 組のブロックカウントレジスターを含む。これらのレジスターは、バッファ制御装置がマイクロプロセッサーからのただ1つのコマンドを用いて、コマンドが受け取られた以外の順序でいくつかの動作のデータをバッファメモリーから転送できるようにする。
【0009】
好ましい実施例では、マイクロプロセッサーは、2個以上の書き込み動作のデータのバッファメモリー内のアドレスをアドレスレジスターにロードする。マイクロプロセッサーは対応する動作のブロック内の大きさをブロックカウントレジスターにロードする。マイクロプロセッサーは次に、バッファメモリー制御装置に一つのコマンドを出して、アドレスレジスターとブロックカウントレジスターによって識別されたデータをバッファメモリーからディスクフォーマッターに転送する。バッファ制御装置はまず、1 番目のアドレスレジスターとブロックカウントレジスターによって識別されたデータを転送し、次に2 番目のアドレスレジスターとブロックカウントレジスター、といったように、以下同様である。アドレスレジスターとブロックカウントレジスターによって、バッファメモリー制御装置はバッファ内のデータの置かれている順序に関係なくいかなる順序でも円形バッファから書き込み動作のデータにアクセスできる。
【0010】
マイクロプロセッサーは一般に、ディスクの1 周期の間に並行して2 番目または追加の動作のためのデータを遅れずに供給するようにバッファ制御装置に2 番目または追加のコマンドを出すほど動作は速くない。一般には、マイクロプロセッサーがバッファメモリー制御装置をセットして追加のコマンドを出すまでに、書き込まれるべきセクターは書き込みヘッドを過ぎ、ディスクの1 周期は終わっている。しかしながら、好ましい実施例によれば、例え動作がディスクに書き込まなくてはならない順序以外の順序で受け取られたとしても、同じトラックへの2 個以上の書き込み動作がディスクの1 周期の間に完了できる。
【0011】
本発明は添付の図面に関連して以下に説明される。
【0012】
【発明の実施の形態】
(実施例の詳細な説明)
以下の説明では、本発明の一部を成し、かつ本発明の実施にあたっての特定の実施例または過程を図示する添付の図面を参照する。同じまたは同様の構成要素にはそれらの図面を通して、できる限り同じ参照符号が付されている。本発明を徹底して理解するために、多くの特定の詳細が述べられる場合もあるが、本発明は特定の詳細がなくても実施されてもよいし、また、その代わりの同等の構成要素およびここで述べられた方法で実施されてもよい。あるいは、公知の方法および構成要素は本発明の特徴を不必要にあいまいにしないように詳細には説明されていない。
【0013】
I .ハードディスク制御装置の動作
A .コンピュータシステム
第1 図はホストシステム120 の大容量記憶装置としてハードディスク装置110 が利用されるコンピュータシステムの典型的な形態を示す。ホストシステム120 はコンピュータシステムのマザーボードであることが好ましく、一般的には、1個以上のマイクロプロセッサーや、RAM や、あるいは他の構成要素を接続するシステムバス122 を含む。ハードディスク装置110 、は一般的にはディスク114 を制御するハードディスク制御装置112 を含む。ディスク114 は一般的に、図示されていない読み出し及び書き込みヘッドにより読み出されたり、書き込まれたりする回転磁気媒体のプラターをいくつか含む。例示された実施例では、ハードディスク制御装置112 は先進技術連結(ATA :Advanced Technology Attachment)バス116 を介してホストシステムに接続されている。このATA バス116 はまた、入出力バスブリッジアダプター124 を介してホストシステムバス112 に接続されている。アダプター124 はホストシステムバス122 とATA バス116 の異なるプロトコル及び技術のブリッジとなっている。SCSIやUSB やファイヤーワイヤーといった別の技術がATA バス116 の代わりに用いられてもよい。
【0014】
一般的に、ホストシステム120 は、ATA バス116 を介してハードディスク制御装置112 に対して読み出しおよび書き込み動作を送信する。一般的に、読み出し動作は、データの開始論理ブロックアドレス(LBA )のディスク上の位置によって要求されたデータを見分ける。LBA は、ヘッド、トラックおよびデータのブロック(512K)のセクター番号を特定する。一般的には、1 セクターは1 ブロックのデータを保持する。要求により、ハードディスク装置110 は、ATA バス116 を介して要求されたデータを読み出してホストシステム120 に送り返すことにより応答する。一般的に、書き込み動作は、書き込むべきディスク上の位置の開始LBA を見分ける。データはホストシステム120 からハードディスク制御装置112 に送られ、特定されたLBA で始まるディスクに書き込まれる。
【0015】
B .ハードディスク制御装置
第2 図はハードディスク制御装置112 の一般的な形態を示す。ハードディスク制御装置112 は一般的に、マイクロプロセッサー204 と、1 組のファームウェアのコード205 と、バッファメモリー206 と、ハードディスク制御装置のコア210 を含む。制御装置コア210 はATA バス116 とディスク114 間のデータのフローを処理する。一般的に、制御装置のタスクにはディスク114 とバッファメモリー206 間でデータを転送したり、バッファメモリー206 とATA バス116 間でデータを転送したり、エラーの修正を行ったり、CRC 計算を行ったりすることが含まれる。また、制御装置コア210 の動作は、一般的にファームウェアコード205 の一組を実行する制御装置マイクロプロセッサー204 によって制御される。ファームウェアコード205 は不揮発性メモリーに保存されてもよい。マイクロプロセッサーもまたディスク114 への図示されていない追加のインターフェースを有して、ディスク114 の読み出し/書き込みヘッドを適切なトラックに移動させるといったタスクを処理してもよい。バッファメモリー206 は遅延や、待ち時間や2 つの装置のタイミング差を補うためにディスク114 とATA バス116 間でデータをバッファに入れるために用いられる。ある形態では、バッファメモリー206 もまた、制御装置マイクロプロセッサー204 のためのメモリーとしての役割をする。バッファメモリー206 の大きさはそのアプリケーションによるが、256 キロバイトから8 メガバイトの範囲である。
【0016】
制御装置コア210 は一般的に、ATA バスインターフェース220 と、バッファメモリー制御装置230 と、ディスクフォーマッター240 を含む。ATA バスインターフェース220 は、ATA バスプロトコルを実現して書き込みおよび読み出し動作を受け取り、ホストシステム120 に読み出したデータを送信する。書き込み動作222 は点線で示され、バスインターフェース220 を通過することがわかる。書き込み動作のLBA は一般にマイクロプロセッサー204 によって読み出されて記憶される。バスインターフェース220 はバッファメモリー制御装置240 を介してデータをバッファメモリー206 に送る。
【0017】
バッファメモリー制御装置230 は、ATA バスインターフェース220 とディスクフォーマッター240 とマイクロプロセッサー204 によってバッファメモリー206 へのインターリーブアクセスを制御する。バッファメモリー制御装置230 によるバッファメモリー206 の制御は、一般に先に述べたバッファメモリー206 とそれにアクセスする装置間でデータをバッファに入れることの他に種々の装置によるアクセスをアービトレイト(調停)することを含む。バッファメモリー制御装置230 は、一般に、ATA バスインターフェース220 とバッファメモリー206 間でデータをバッファに入れるATA バスインターフェースデータFIFO(先入れ先出しバッファ)232 と、バッファメモリー206 とディスクフォ―マッター240 間でデータをバッファに入れるディスクフォーマッターデータFIFO234 と、バッファ制御装置230 の機能性を制御するバッファ制御装置論理236 とを含む。一般にバッファ制御装置230 は、好ましくはポインターを使ってバッファメモリー206 内でバッファ制御装置230 が実現する円形データバッファ208 に書き込み動作データを記憶する。ATA バスインターフェースデータFIFO232 とディスクフォーマッターデータFIFO234 は比較的小さなFIFOバッファであって、それぞれ64バイト程であるのが好ましい。一方、円形データバッファ208 はずっと大きいのが好ましく、バッファメモリー206 全体を占有するほどで、実施形態にもよるが、256 キロバイトから8 メガバイトである。
【0018】
ディスクフォーマッター240 はディスク114 への実際のデータの書き込みを制御する。一般にディスクフォーマッター240 は、バッファメモリー制御装置を介してバッファメモリー206 からデータ―を受け取り、エラー修正コードを加えることがありえるが、ディスクに書き込むためにデータをフォーマット化し、ディスクの書き込みヘッドにデータを送る。ディスクフォーマッター240 はまた、書き込みヘッドにデータを送るための適切なタイミングを決定するためにディスクの読み出し/書き込みヘッドが配置されるトラックのセクターをモニターする。ディスクフォーマッターの機能性はディスクフォーマッター論理242 によって制御される。
【0019】
第3 図は典型的なディスク書き込み時のホストシステム120 からディスク114 へのデータの流れを示す。データはまず、ATA バス116 を介して、ホストシステム120 からハードディスク制御装置112 のATA バスインターフェース220 に送信される。ATA バスインターフェース220 は、バッファメモリー制御装置230 のATA バスインターフェースFIFO232 を介してバッファメモリー206 の円形データバッファ208 にデータを送信する。そのデータはディスク114 に書き込まれるまで円形データバッファ208 にある。もし、ディスクヘッドが正しく位置決めされ、マイクロプロセッサー204 がデータをディスク114 に書き込む準備ができていると決定したなら、マイクロプロセッサー204 はバッファ制御装置230 にコマンドを出してデータをディスクフォーマッターデータFIFO234 に送信し始める。マイクロプロセッサー204 もまたディスクフォーマッター240 にコマンドを出して、ディスクフォーマッターデータFIFO234 からデータを読み出し、そのデータをフォーマット化し、ディスク114 の書き込みヘッドにデータを送信し始めるようにする。一般に、ディスクフォーマッターの1 つのコマンドはディスクフォーマッター240 にディスク上の1 個のトラックにデータを書き込む指示をするのみである。例えば、数メガバイトのオーダーの大きな書き込み動作の場合、円形のデータバッファ208 にすでに置かれていた先のデータはディスクフォーマッター240 によって読み出され、一方で、同じ動作のための後のデータがATA バスインターフェース220 によって円形データバッファ208 に書き込まれている。もし書き込み動作が多数のトラックに書き込むことを含むなら、ディスクフォーマッター240 が各トラックにデータを書き込んだ後に、マイクロプロセッサー204 が書き込みヘッドを次のトラックに移動させ、ディスクフォーマッター240 に更なるコマンドを出して次のトラックにデータを書き込むようにする。
【0020】
第4 図は書き込み動作中の円形データバッファ208 の動作を示す。例示された例では、3 つの書き込み動作のデータがATA バスインターフェース220 によってバッファメモリー206 に書き込まれている。バッファメモリー制御装置230 は書き込みポインター402 を更新して、制御装置がATA バスインターフェース220 からの入力データを書き込むバッファメモリー206 内のアドレスを示すようにする。データが書き込まれると、ポインター402 は更新される。もし書き込みポインター402 が円形バッファ208 の最後に達したら、ポインター402 は円形バッファを機能させるために他方の端に戻される。読み出しポインター404 はディスクフォーマッター240 に転送されるためにデータが円形バッファ208 から読み出されるアドレスを示す。例示された例では、バッファ208 内にある3 つの書き込み動作のデータはまだディスクフォーマッター240 に転送されていない。データが読み出されると、バッファメモリー制御装置論理236 のデフォルト動作が円形バッファ208 内の読み出しポインター404 を進める。読み出しポインターは書き込みポインターと同様、最終的にはもとに戻される。一実施例では、バッファ制御装置がリセットされない限り、ディスクフォーマッター234 がディスクフォーマッターデータFIFO234 からデータを読み出し続けている間、読み出しポインター404 は書き込み動作のデータを通って継続的に進む。しかしながら、書き込みポインター404 は一般に読み出しポインター402 を超えない。
【0021】
第5 図はバッファメモリー制御装置230 とディスクフォーマッター240 をより詳細に示す。バッファメモリー制御装置230 は、読み出しポインター404 が書き込み動作の間維持されているディスクフォーマッター(DF)バッファアドレスレジスター502 を含む。一般に、バッファアドレスレジスター502 はまずマイクロプロセッサー204 によってロードされる。しかしながら、バッファメモリー制御装置論理236 は、データがディスクフォーマッターデータFIFO234 に送信されると、自動的にバッファアドレスレジスター502 を進める。
【0022】
一般に、ディスクフォーマッター240 はセクター要求レジスター512 と、セクターカウントレジスター514 と、一組のスキップセクターレジスター516 とを備えている。マイクロプロセッサー204 はそのセクター要求レジスター512 と、セクターカウントレジスター514 と、スキップセクターレジスター516 に適切な値をロードすることによって、そしてディスクフォーマッター240 にコマンドを出すことによってディスク動作を開始する。セクター要求レジスター512 にはそのコマンドに応じて、トラック上に書き込まれるべき最初のセクターのセクター番号がロードされる。セクターカウントレジスター514 には動作中に書き込まれるセクター数がロードされる。一般に、8 個のスキップセクターレジスター516 がある。それぞれのスキップセクターレジスター516 は、一般に10ビットセクターIDフィールドと4 ビット長のフィールドを有し、コマンドの実行中にスキップされる特有のセクターを識別する。一般に、欠陥のあるセクターがスキップされる。4 ビット長のフィールドは、IDフィールドによってポイントされたセクターから始まる範囲値を提供する。その範囲値はスキップレジスターが有効でない時ゼロに設定される。スキップセクターレジスター516 へのアクセスは、単一のFIFO同様のインターフェースを通る。スキップセクターレジスター516 は昇順にロードされなければならない。コマンドの実行中にセクター要求レジスター512 はスキップセクターレジスターと比較されて、セクターがスキップされるべきか決定する。スキップされたセクターはセクターカウントとしてカウントされない。
【0023】
C .書き込み動作を処理する一般的な方法
第6 図はハードディスク制御装置112 が書き込み動作を処理する方法600 を示す。ステップ602 では、ハードディスク制御装置112 のATA バスインターフェース220 がホストシステム120 からの書き込み動作222 を受け取る。一般に、書き込み動作222 はディスクに書き込まれるデータとデータが書き込まれるディスク上の開始位置を識別するLBA とを含む。
【0024】
ステップ604 では、ATA バスインターフェース220 がバッファメモリー206 の円形データバッファ208 にデータを送信する。バッファメモリー206 にデータを送信するために、ATA バスインターフェース220 はバッファメモリー制御装置230 のATA バスインターフェースFIFO232 にデータを書き込む。次に、バッファメモリー制御装置230 は円形データバッファ208 の書き込みポインター402 を維持し、バッファメモリー206 にデータを書き込む。バッファメモリー制御装置230 は、ATA バスインターフェースFIFO232 からのデータの書き込みを、例えば、ディスクフォーマッターデータFIFO234 および制御装置マイクロプロセッサー204 といったバッファメモリーにアクセスする他の装置からの読み出し及び書き込みとインターリーブする。
【0025】
ステップ606 では、マイクロプロセッサー204 はATA バスインターフェース220 からLBA を読み出し、書き込み動作222 のLBA を記憶する。一般に、制御装置マイクロプロセッサー204 はその処理メモリーとしてバッファメモリー206 の一部を利用する。この場合、マイクロプロセッサー204 はバッファメモリー制御装置230 を介してバッファメモリーにアクセスして、バッファメモリー206 にLBA を記憶させてもよい。制御が方法600 の残りのステップに進む前に、ステップ606 からステップ602 への矢印に示されるように、ATA バスインターフェース220 によって追加の書き込み動作が受け取られてマイクロプロセッサー204 によって処理されるかもしれない。
【0026】
ステップ608 では、マイクロプロセッサー204 は受け取られた書き込み動作を実行するかを決定する。マイクロプロセッサー204 はその動作をいつ実行するかを決定するために、周知の技術に従ってファームウェアコード205 によってプログラミングされるのが好ましい。
【0027】
ステップ610 では、マイクロプロセッサー204 はバッファメモリー206 内の書き込み動作データの開始アドレスをディスクフォーマッターバッファアドレスレジスター502 にロードする。ステップ612 では、マイクロプロセッサー204 は書き込み動作のためのバッファ制御装置204 のプログラミングを完了する。このステップには陳腐データ(stale data)のディスクフォーマッターデータFIFO234 のクリアおよび/またはバッファメモリー制御装置230 のコマンドレジスターへのコマンドのローディングが含まれるかも知れない。
【0028】
ステップ614 では、バッファメモリー制御装置230 は、バッファメモリー206 からディスクフォーマッターデータFIFO234 にデータを送信し始める。ディスクフォーマッター240 がFIFO234 からデータを読み出すと、バッファメモリー制御装置230 はFIFO234 がアンダーフローをしないようにしてデータをFIFO234 に書き込む。
【0029】
ステップ616 では、マイクロプロセッサー204 はディスク114 の書き込みヘッドを適切なトラックに移動するために必要な、すべての追加の構成要素をプログラミングする。書き込みヘッドの移動を制御する回路は、制御装置コア210 の外部にあるのが好ましいが、コア210 内に含まれていてもよい。ステップ616 はステップ610 とステップ608 の間で行われてもよい。
【0030】
ステップ618 では、マイクロプロセッサー204 は、ディスクフォーマッター240 のセクター要求レジスター512 にトラックに書き込まれる書き込み動作の最初のセクターのセクターIDをロードする。ステップ620 では、マイクロプロセッサー204 はセクターカウントレジスター514 にトラックに書き込まれるセクター数をロードする。書き込み動作が多数のトラックに渡っている場合、トラックに書き込まれるセクター数はすべての動作におけるブロック数より少ないかもしれない。この場合、ディスクフォーマッター240 は現在のトラックの書き込みが完了してから次のトラックにデータを書き込むようにプログラミングされる。
【0031】
ステップ622 では、マイクロプロセッサー204 は、スキップセクターレジスター516 にトラックに書き込んでいる間スキップされるべきトラック上の欠陥セクタを識別するデータをロードする。ステップ624 では、マイクロプロセッサー204 はトラックへの書き込みのためのディスクフォーマッター240 のプログラミングを完了する。一般にこのステップにはディスクフォーマッター240 のコマンドレジスターにコマンドをロードすることが含まれる。
【0032】
ステップ626 では、ディスクフォーマッター240 は、マイクロプロセッサー204 によってそのコマンドレジスターにロードされたコマンドの実行を開始する。ディクスフォーマッター240 はディスクフォーマッターデータFIFO234 からデータを読み出し、ディスク114 に書き込むためにデータをフォーマット化し、ディスク114 の書き込みヘッドにデータを送る。ディスク114 に書き込むためのデータのフォーマット化には巡回冗長検査(Cyclic Redundancy Check )コードをデータに追加することが含まれるかもしれない。一般に、ディスクフォーマッター240 はまた、ディスク114 の書き込みヘッドにデータを送信する適切なタイミングを決定し、その結果データはトラック上の適切な位置に書き込まれる。
【0033】
ステップ628 では、ディスクフォーマッター240 は現在のトラックへの最後のセクターの書き込みを完了する。ステップ630 では、ディスクフォーマッター240 は制御装置マイクロプロセッサー204 に割り込みを送り、トラックへの書き込みの成功状態を示す。一般に書き込みは成功しているであろう。もし、書き込みに失敗があれば、マイクロプロセッサーがその問題に対処する。
【0034】
ステップ632 では、マイクロプロセッサーは現在の書き込み動作に関連した別のトラックへの書き込むためのデータがあるかを決定する。もし別のトラックに書き込む付加的なデータがまだ残っているなら、制御はステップ616 に戻る。ステップ616 から、マイクロプロセッサーは書き込みヘッドを次のトラックに移動して次のトラックに更なるデータを書き込むためにディスクフォーマッター240 をプログラミングする。
【0035】
ステップ632 では、もし別のトラックに書き込むデータがもうなくて現在の書き込み動作が終了しているなら、ディスク制御装置112 は別の書き込み動作の受け取りまたは実行をする準備ができている。従って、別の書き込み動作がすでに受信されたかどうかによって、ステップ602 またはステップ608 のいずれかに行く。
【0036】
D .性能をよくするための書き込み動作の組み合わせ
一実施例において、マイクロプロッセサー204 はバッファメモリー制御装置230 へのたったひとつのコマンドで2 個以上の書き込み動作を完了するようにプログラミングされてもよい。バッファメモリー制御装置は、最初の動作が完了する前に、円形データバッファ208 内の最初の書き込み動作のデータの後、2 番目の書き込み動作からのデータが連続して書き込まれている限り、ステップ610 からステップ614 のように再びプログラミングされる必要は無い。バッファメモリー制御装置230 はディスクフォーマッター240 がデータを読み出している限り、円形データバッファ208 からディスクフォーマッターデータFIFO242 にデータを供給し続けるように構成されているのが好ましい。従って、バッファメモリー制御装置230 は、最初の書き込み動作のデータの最後がディスクフォーマッター240 によって読み出され、ディスクに書き込まれても、円形データバッファ208 からディスクフォーマッターデータFIFO234 にデータを供給し続ける。FIFO234 を再び満たす(refill)ためにバッファメモリー制御装置230 が自動的に供給するデータは、2 番目の書き込み動作のデータとなる。そのため、この場合バッファメモリー制御装置230 は、再びプログラミングされる必要がなく、プロセス600 のステップ610 からステップ614 はとばすことができる。
【0037】
一実施例では、マイクロプロセッサー204 はまた、ディスクフォーマッター240 への単一のコマンドを用いて2 個の書き込み動作からデータを部分的にまたは完全に書き込むようにプログラミングされてもよい。ディスクフォーマッターへの単一のコマンドは、先の動作の最後のLBA が同じトラックを有するが、次の動作の開始LBA より小さいセクター番号を有する時に利用することができる。この場合、マイクロプロセッサーは2 つの動作の間のセクターをスキップするようにディスクフォーマッター240 に指示を出すことによって、単一の動作として2 つの動作を処理することができる。これは書き込み動作の間でスキップされるレジスターを1 個以上のスキップセクターレジスター516 にロードすることによって達成できる。
【0038】
前述の技術により、2 つ以上の動作のためにバッファ制御装置230 および/またはディスクフォーマッター240 のプログラミングを組み合わすことができる。2 つ以上の動作のためにディスクフォーマッター240 のプログラミングを組み合わせる1 つの利点は書き込み動作が単一の周期で完了できることである。
【0039】
一般に、マイクロプロセッサー204 はディスクフォーマッター240 に比べてずっと長い応答時間を有し、反応時間がずっと遅い。一般に、ディスク114 の1 周期の間にマイクロプロセッサー204 が2 番目の書き込み動作のためにディスクフォーマッター240 を再度プログラミングすることができるように、ディスクフォーマッター240 が書き込み動作の終了と同時にマイクロプロセッサー204 に割り込んだ後には充分な時間がない。従って、ディスク114 の単一の周期の間に1 つ以上の書き込み動作を完了するために、2 つ以上の書き込み動作がディスクフォーマッター240 への単一のコマンドで完了されなければならない。2 つ以上の動作のためにディスクフォーマッター240 のプログラミングを組み合わせるには、これらの動作のためにバッファ制御装置230 のプログラミングもまた組み合わさなくてはならない。これは、マイクロプロセッサー204 もまた一般的には書き込み動作の間にバッファ制御装置230 を再度プログラミングするほど速くないからである。
【0040】
すでに述べたように、制御装置マイクロプロセッサー204 は一般に、書き込み動作の間にバッファメモリー制御装置230 またはディスクフォーマッター240 を再度プログラミングできるほど速くない。また、ディスクフォーマッターは、例えば、データを書き込むためにタイミングシーケンスを始めるといったような、トラック上の最初のセクターを検索することによって各コマンドを実行し始めるように構成されている場合がある。この場合、ディスクフォーマッター240 は、マイクロプロセッサー204 の速度にかかわらず、1 周期につき1 つのコマンドのみを実行することしかできない。従って、ディスク上の同じトラックにデータを書き込むいくつかの書き込み動作が単一の周期で行われる場合、一般的に書き込み動作はバッファ制御装置230 とディスクフォーマッター240 のそれぞれに対して1 つのコマンドで終了されなくてはならない。
【0041】
1 つ以上の書き込み動作をディスク114 の単一の周期で実行することにより、実質的に書き込みのスピードはアップする。例えば、もし2 つの書き込みが単一の周期で行われるなら、実行時間は別々に書き込みを行う場合の半分に減る。もし、4 つの書き込みを1 周期で行うなら、その実行時間は個別に行う場合の4 分の1 、多くても3 分の1 に減るであろう。
【0042】
E .前述の技術の制限
以上述べられた技術はいくつかの書き込み動作を行う時間を短くするために利用されることがあるが、これらの技術は利用できない場合がある。例えば、もし、書き込み動作が到着する順序がディスク上のそれぞれの書き込み動作の順序に対応していない場合は、これらの技術は利用することができない。
【0043】
第7 図は書き込みヘッド704 に関連したハードディスクプラター702 の概略図である。ディスク702 は反時計回りに回転している。また、プラター700 のトラック704 の1 つに対して3 つの別々の書き込み動作(書き込み1 と書き込み2 と書き込み3 )のセクターが示されている。動作のセクターは書き込みヘッド704 の下を、動作3が最初に、動作2が2番目に、動作1が3番目に通過するようになっている。もし書き込み動作1 が最初にハードディスク制御装置112 に到着するとしたら、動作2 は2 番目に到着し、動作3 は3 番目に到着する。書き込み動作は第4 図に示されるように、これと同じシーケンスでバッファメモリーに記憶される。従って、動作が円形データバッファ208 に記憶されている順序はトラック704 上の動作セクタの順序に対応しない。その結果、バッファメモリー制御装置230 がディスクに正しい順序で書き込むようにそれぞれの動作のデータを供給するためのプログラミングは単一のコマンドではできない。
【0044】
上述されたバッファメモリー制御装置230 は、1つのコマンドで、円形データバッファ208 に置かれているのと同じ順序でデータを供給するように構成されている。その結果、もし、2 つの動作が同じトラックに対してその書き込み動作が順不同なら、その連続した動作のデータは1 つのバッファ制御装置のコマンドでは得られない。
【0045】
以下の好ましい実施例で示されるように、バッファ制御装置240 はマイクロプロセッサー204 からの1 つのコマンドを用いて円形データバッファ208 の違うセクションからデータを不連続の順序で供給することができる構成要素を新たに加えることができる。
【0046】
II.好ましい実施例
A .増補バッファメモリーおよびディスクフォーマッター
第8 図はマイクロプロセッサー204 からの単一のコマンドでバッファメモリー206 から不連続の読み出しを行うために増補されたバッファメモリー制御装置830 の好ましい実施例を示す。バッファメモリー制御装置830 はバッファメモリー制御装置230 の第4 図に示されるすべての構成要素を含むことが好ましい。バッファメモリー制御装置830 はまた1 組のアドレスレジスター852 と、作業ディスクフォーマッターバッファアドレスレジスター802 と、1 組のブロックカウントレジスター862 と、作業ブロックカウントレジスター864 と、使用中フラグ854 と、組み合わせ書き込み論理870 とを含むことが好ましい。
【0047】
1 組のアドレスレジスター852 には8 個以上のレジスターがあるのが好ましい。4 個か3 個か2 個のアドレスレジスターを使用することも可能であるが、バッファメモリー制御装置830 およびディスクフォーマッター240 への1 組のコマンドで書き込むことができる書き込み動作の数が限定されてしまう。マイクロプロセッサー204 は、トラックに書き込まれる書き込み動作のうちの1 つのためにバッファメモリー206 のデータの開始アドレスを各アドレスレジスター852 にロードする。アドレスレジスター852 は、書き込み動作が行われる順序でロードされる。アドレスレジスター852 はスキップセクターレジスター516 と同様に、FIFOのようなインターフェースを介してマイクロプロセッサー204 によって書き込まれるように構成されているのが好ましい。1組のアドレスレジスター852 内のそれぞれのアドレスは、書き込み動作の間にやがては作業ディスクフォーマッターバッファアドレスレジスター802 に転送される。作業アドレスレジスター802 はバッファアドレスレジスター502 と実質的に同様の機能をする。
【0048】
ブロックカウントレジスター862 の数はアドレスレジスター852 の数と一致する。マイクロプロセッサー204 は、対応する書き込み動作のために、トラックに書き込まれるバッファメモリー206 に記憶されたデータのブロック数をブロックカウントレジスター862 の各々にロードする。ブロックカウントレジスター862 は書き込み動作が行われる順序でロードされる。アドレスレジスター852 同様、ブロックカウントレジスター862 はスキップセクターレジスター516 と同様に、FIFOのようなインターフェースを介してマイクロプロセッサー204 によって書き込まれるように構成されているのが好ましい。ブロックカウントレジスター862 内の各ブロックカウントはやがて、書き込み動作の間に作業ブロックカウントレジスター864 に送られる。作業ブロックカウントレジスター864 は、動作ごとにバッファメモリー206 からディスクフォーマッターデータFIFO234 にブロック数が転送されている間に、転送される残りのブロック数をカウントダウンするのに用いられる。
【0049】
使用中フラグ854 は、アドレスレジスター852 およびブロックカウントレジスター862 が一杯かどうかを決定するためにマイクロプロセッサー204 により読み出されることができるレジスターまたはレジスター内の1 ビットであることが好ましい。もしレジスターが852 と862 が一杯であると設定するなら、そのビットが設定される。もしレジスターが852 と862 が一杯でないと設定するなら、そのビットはクリアされる。
【0050】
組み合わせ書き込み論理870 は、ブロックカウントレジスター862 と、アドレスレジスター852 と、作業ブロックカウントレジスター864 と、使用中フラグ854 の機能性を制御するために、バッファメモリー制御装置論理236 に加えられるのが好ましい。論理870 はバッファメモリー206 内の動作データの順序に関わらず、マイクロプロセッサー204 によって供給された1 つのコマンドからディスクフォーマッターデータFIFO234 に多数の書き込み動作のデータを転送するようにこれらの素子を制御する。
【0051】
好ましい実施例のディスクフォーマッター240 は実質的に変更されていない。しかしながら、スキップセクターレジスター516 の数は増加するのが好ましい。好ましい実施例では、同じトラック上の2 個以上の書き込み動作間での追加のセクタースキップを処理するために、8 個の代わりに16個のスキップセクターレジスター516 となっている。
【0052】
B .バッファメモリー制御装置による方法
第9A図および第9B図は、順不同で受け取られた書き込み動作に対して、組み合わされた書き込み機能を達成するために、その組み合わせた書き込み論理870 とバッファメモリー制御装置論理236 の制御のもとで、制御装置830 によって行われる好ましい方法900 および950 を示す。この方法900 および950 は好ましくはインターリーブされて同時に行われてもよい。方法900 は使用中フラグ854 をセットし、方法950 は作業バッファアドレスレジスター802 および作業ブロックカウントレジスター864 を扱う。
【0053】
方法900 のステップ902 では、バッファメモリー制御装置830 はアドレスレジスター852 およびブロックカウントレジスター862 においてデータを受け取る。ステップ904 では、制御装置830 がアドレスレジスター852 およびブロックカウントレジスター862 が一杯かどうか決定する。もし、レジスター852 および862 が一杯なら制御装置830 は使用中フラグ854 をセットする。もし、レジスター852 および862 が一杯でないなら、制御装置830 はステップ902 に戻す。
【0054】
方法950 のステップ952 では、バッファメモリー制御装置830 は多数の動作のデータを転送するために、アドレスレジスター852 およびブロックカウントレジスター862 の使用を選択するマイクロプロセッサー204 からのコマンドを受け取る。これらのレジスター852 および862 の使用は、マイクロプロセッサー204 のオプションであるのが好ましく、そのオプションは組み合わされるべき動作が順不同で到着している時にのみ選択される。
【0055】
ステップ954 では、バッファメモリー制御装置830 は書き込み動作のためにデータのアドレスをアドレスレジスター852 から作業アドレスレジスター802 に転送する。アドレスはアドレスレジスター852 からアドレスレジスター852 がマイクロプロセッサー204 によってロードされた順序で転送される。要するに、アドレスレジスター852 はFIFOの機能を有することが好ましい。ステップ956 では、制御装置830 が書き込み動作のためにブロックカウントをブロックカウントレジスター862 から作業ブロックカウントレジスター864 に転送する。ブロックカウントレジスター862 もまたFIFO機能を有する。ステップ858 では、レジスター852 およびレジスター862 のそれぞれの組の少なくとも1 つの位置が空にされているので、制御装置が使用中フラグをクリアにする。
【0056】
ステップ960 では、制御装置830 はバッファメモリー206 からディスクフォーマッターデータFIFO234 にデータを転送し始め、これは作業アドレスレジスター802 におけるアドレスから始める。制御装置は作業アドレスレジスター802 を読み出しポインターとして利用するのが好ましく、データをバッファメモリー206 から読み出すとレジスター802 は増加する。
【0057】
ステップ962 では、バッファメモリー206 からディスクフォーマッターデータFIFO234 にデータの各ブロック(512K)を転送し始めると、制御装置830 は作業ブロックカウントレジスター864 を減少させる。
【0058】
ステップ964 では、制御装置830 は、作業ブロックカウントレシスター864 がゼロになるのを待機する。これによって、動作の最後のブロックがバッファメモリー206 からディスクフォーマッターデータFIFO234 に転送し始めていることがわかる。ステップ966 では、制御装置830 は動作のためにデータの最後のブロックを転送し、そしてデータを転送するのを停止する。この時点で、ステップ954 に戻り、次の書き込み動作のデータが転送される。
【0059】
プロセス950 は、アドレスレジスター852 とブロックカウントレジスター862 の入力がすべて実行されるまで継続される。すべての入力が実行されると、制御装置830 はマイクロプロセッサー204 からの別のコマンドを受け取る準備ができている。
【0060】
C .ハードディスク制御装置による方法
第10A 図および第10B 図はバッファメモリー制御装置830 およびディスクフォーマッター240 への1 組のコマンドを用いて多数の順不同の動作を完了させるために、ハードディスク制御装置112 によって行われる好ましい方法1000を示す。マイクロプロセッサー204 は方法1000を実行するためにファームウェア205 でプログラミングされるのが好ましい。ステップ1002と、ステップ1004と、ステップ1006は方法600 のステップ602 とステップ604 とステップ606 とほぼ同じである。
【0061】
ステップ1008では、マイクロプロセッサー204 は同じトラックにデータを書き込む2 つ以上の書き込み動作を識別し、そのトラックには1 つ以上の動作がトラックの対応しているセクターの位置に対して順不同に到着する。ステップ1010では、マイクロプロセッサー204 はトラック上のそれぞれのセクターの位置に基づいて動作を命令する。
【0062】
ステップ1012では、マイクロプロセッサー204 は書き込み動作のデータブロックのバッファメモリー206 内の開始アドレスをアドレスレジスター852 にロードする。好ましい実施例では、アドレスレジスター852 はアドレスが書き込まれる順序を維持するFIFO同様のインターフェースを介して書き込まれる。従って、データブロックのアドレスは、対応する書き込み動作がトラックに書き込まれる(ステップ1010でマイクロプロセッサー204 によって決定される)順序でロードされる。ステップ1014では、同様に、マイクロプロセッサーは各書き込み動作のためにデータブロックの対応する数をブロックカウントレジスター862 にロードする。
【0063】
ステップ1016では、マイクロプロセッサー204 はバッファメモリー制御装置830 のプログラミングを完了させる。このプログラミングは、バッファメモリー制御装置830 にコマンドを出して、アドレスレジスター852 およびブロックカウントレジスター862 にロードされたアドレスとブロックカウントに基づいてデータを転送するようにするのが好ましい。マイクロプロセッサー204 はまた、方法600 に従っていつものデータ転送を行うために、バッファメモリー制御装置830 をプログラミングするオプションを有することが好ましい。
【0064】
ステップ1018では、バッファメモリー制御装置830 は、バッファメモリー206 からディスクフォーマッターFIFO234 に書き込み動作のデータを転送し始める。ディスクフォーマッター240 がFIFO234 からデータを読み出すと、バッファメモリー制御装置830 はFIFO234 にデータを書き込み、FIFO234 がアンダーフローしないようにする。
【0065】
ステップ1020では、マイクロプロセッサー204 は、ディスク114 の書き込みヘッドを適切なトラックに移動するのに必要な更なる構成要素をプログラミングする。ステップ1020はステップ1012とステップ1010の間で行われてもよい。
【0066】
ステップ1022では、マイクロプロセッサー204 はトラックに書き込まれる最初の書き込み動作の最初のセクターのセクターIDをディスクフォーマッター240 のセクター要求レジスター512 にロードする。ステップ1024では、マイクロプロセッサー204 はすべての識別された動作のためにトラックに書き込まれるセクターの合計数をセクターカウントレジスター514 にロードする。
【0067】
ステップ1026では、マイクロプロセッサー204 は書き込み動作間でスキップされるトラック上のデータ識別セクターをスキップセクターレジスター516 にロードする。レジスターにはまた、書き込み中にスキップされるトラック上の欠陥セクターがロードされる。ステップ1028では、マイクロプロセッサー204 は、トラックへの書き込みのためのディスクフォーマッター240 のプログラミングを完了する。一般にこのステップはディスクフォーマッター240 のコマンドレジスターにコマンドをロードすることを含む。
【0068】
ステップ1030では、ディスクフォーマッター240 はマイクロプロセッサー204 によってそのコマンドレジスターにロードされたコマンドを実行し始める。ディスクフォーマッター240 はディスクフォーマッターデータFIFO234 からデータを読み出し、ディスク114 に書き込むためにデータをフォーマット化し、そしてそのデータをディスク114 の書き込みヘッドに送信する。
【0069】
ステップ1032では、バッファメモリー制御装置830 はアドレスレジスター852 およびブロックカウントレジスター862 にロードされたアドレスおよびブロックカウントに従って連続書き込み動作からデータを供給する。バッファメモリー制御装置830 はこのステップで方法950 を行うのが好ましい。
【0070】
ステップ1034では、ディスクフォーマッター240 は現在のトラックへの最後のセクターの書き込みを完了する。ステップ1034では、ディスクフォーマッター240 は制御装置マイクロプロセッサー204 に割り込みを送り、トラックへの書き込みの成功状態を示す。
【0071】
1つのトラック上でのすべての書き込みが終了すると、この時点でその方法は終了し、ハードディスク制御装置112 は更なる書き込み動作を行う準備ができている。または、2 個以上のトラックにわたって最初の書き込み動作および/または最後の書き込み動作が実行される時、方法1000も利用されてもよい。例えば、トラックへの短い書き込み動作は、同じトラックで終わる長い動作の前に到着するかもしれない。1 つのバッファメモリー制御装置のコマンドを利用して、後の動作を先に実行してから、その後で最初の動作を実行することができる。後のコマンドのデータの最後の部分および以前のコマンドのデータのすべてを書き込むために、1つのディスクフォーマッターのコマンドを用いることができる。1 個以上の書き込み動作が2個のトラックにわたっている場合、方法1000は以下のように続く。
【0072】
つぎのステップ1036では、マイクロプロセッサーは現在の書き込み動作の組に関連して別のトラックに書き込むべきデータがあるかどうかを決定する。もし別のトラックに書き込まれるべき更なるデータが残っているなら、ステップ1020に戻る。ステップ1020から、マイクロプロセッサーは書き込みヘッドを次のトラックに移動して、次のトラックにデータをさらに書き込むためにディスクフォーマッター240 をプログラミングする。
【0073】
ステップ1038では、もし別のトラックに書き込むべきデータがもう残っておらずに現在の書き込み動作の組が完了しているなら、ハードディスク制御装置112 は別の組の書き込み動作を受け取るか、または実行する準備ができている。従って、別の書き込み動作がすでに受け取られているかによって、ステップ1002かまたはステップ1008のいずれかに戻る。
【0074】
D .実例動作
第11図は、順不同で到着する2 つの書き込み動作のためにハードディスク制御装置112 によって行われるステップの実例シーケンスの方法1100を示す。方法1100は、方法1000のステップ1002からステップ1014の2 個の書き込み動作の場合をより詳細に説明する。
【0075】
ステップ1102では、ATA バスインターフェース220 が最初の書き込み動作を受け取る。ステップ1104では、バッファメモリー制御装置230 が最初の書き込み動作のデータを円形データバッファ208 に書き込む。ステップ1106では、バスインターフェース220 は2 番目の書き込み動作を受け取る。ステップ1108では、バッファメモリー制御装置230 が最初の書き込み動作のデータの後に、2 番目の書き込み動作のデータを円形データバッファ208 に書き込む。しかしながら、2 番目の書き込み動作のデータは、バッファメモリー206 内で最初の書き込み動作とデータと連続している必要は無い。
【0076】
ステップ1110では、マイクロプロセッサー204 は、2番目の書き込み動作が最初の書き込み動作と同じトラックに書き込まれるかを決定する。マイクロプロセッサー204 はまた陳腐データを作るのを避けるために、2 つの書き込み動作間で共通に書き込まれるセクターがないことを決定するのが好ましい。もし2 つの動作が共通のセクターを含むなら、その動作は到着した順序で書き込まれるべきである。
【0077】
ステップ1112では、マイクロプロセッサー204 がトラック上で2 番目の書き込み動作が最初の書き込み動作の前に位置しているかを決定する。マイクロプロセッサーはまた各動作が書き込む最初のセクターのセクター数を比較することによって、この決定をすることが好ましい。動作の順序は、書き込みヘッドがトラック上に最初の書き込みができる位置に関連して決定される。いくつかの実施例では、ディスクフォーマッター240 は、トラック上のどのセクターにでも最初にデータを書き込むことができるように構成されている。もしヘッドが1024個のセクターを持つトラックに到着して、例えばヘッドが511 番目のセクターの上にある間固定されているなら、これらの実施例はディスクの現在の周期の間、512 番目のセクターにデータを書き込むことができるように構成される。この場合、もし最初の書き込み動作がセクター127 に書き込み、2 番目の書き込み動作がセクター575 に書き込むなら、その2 番目の書き込み動作はトラック上で最初の書き込み動作の前に位置する。他の実施例では、ディスクフォーマッター240 は、データを書き込む前に、待機してトラック上のゼロ番目のセクターを検知するように構成されてもよい。これらの実施例では、ヘッドが1024個のセクターを持つトラックの511 番目のセクター上で固定していても、ディスクフォーマッターはデータを書き込む前にゼロ番目のセクターがヘッドの下を通過するまで待機していなくてはならない。この場合、もし最初の書き込み動作がセクター575 に書き込み、2 番目の書き込み動作がセクター127 に書き込むなら、2 番目の書き込み動作はトラック上で最初の書き込み動作の前に位置している。
【0078】
一実施例では、ステップ1110およびステップ1112は、各書き込み動作の開始と最終のセクター番号を比較することによって、組み合わされることができる。この場合、両動作は同じトラックに書き込まなくてはならない。また、ディスクフォーマッター240 がデータを書き込む前にゼロ番目のセクターが通過するまで待機しなくてはならないとしたら、2 番目の動作の最後のセクター数は最初の動作の開始セクター数よりも少なくてはならない。ディスクフォーマッター240 が動作を始める前にゼロ番目のセクターを待つ必要のない場合の処理方法は当業者には明らかであろう。
【0079】
ステップ1114では、マイクロプロセッサー204 は円形データバッファ208 の2 番目の書き込み動作のデータのアドレスをアドレスレジスター852 の一つにロードする。ステップ1116では、マイクロプロセッサー204 は2 番目の書き込み動作のデータブロックの数をブロックカウントレジスター862 の一つにロードする。ステップ1118では、マイクロプロセッサー204 は、円形データバッファ208 内の最初の書き込み動作のデータのアドレスをアドレスレジスター852 の一つにロードする。ステップ1120では、マイクロプロセッサー204 は最初の書き込み動作内のデータブロックの数をブロックカウントレジスター862 の一つにロードする。
【0080】
バッファメモリー制御装置830 が2 つの動作のアドレスとブロックカウントをロードすると、方法1100は方法1000のステップ1016で継続する。
【0081】
E .拡張および追加の実施例
方法1100はいくつかの書き込み動作を処理するために当業者によってファームウェアコード205 に一般化できる。一般化されたファームウェア205 は、動作が受け取られた順序に関係なくディスクフォーマッター240 に多数の書き込み動作のデータを提供するために、バッファメモリー制御装置830 をプログラムするように構成されることができる。
【0082】
バッファメモリー制御装置830 への一つのコマンドで処理できる動作の数はアドレスレジスター852 およびブロックカウントレジスター862 のレジスターの数によって制限されるかもしれない。しかしながら、好ましい実施例では、これらのレジスター852 とレジスター862 のセットは、バッファメモリー制御装置830 がコマンドを実行している間にマイクロプロセッサー204 によって書き込まれることができる。この機能によりバッファ制御装置830 への単一のコマンドで順不同の書き込み動作の無限の可能性の数が処理できるようになる。
【0083】
III .結論
ある好ましい実施例を用いて本発明の説明がなされてきたが、ここで前述されたすべての特長および利点を呈さない実施例を含む、当業者に明らかな他の実施例もまた本発明の範囲内にあることとする。従って、本発明は以下の請求の範囲によって定義される。請求の範囲において、本発明はその一部に限定されず、全体的に解釈されるものとする。方法の請求の範囲において、参照符号は説明の便宜のためのみに用いられ、その方法を実施するための特定の順序を示すものではない。
【図面の簡単な説明】
【図1】ハードディスク装置がホストシステムの大容量記憶装置として利用されるコンピュータ装置の典型的な形態を示す。
【図2】ハードディスク制御装置の典型的な形態を示す。
【図3】典型的なディスク書き込み動作の間のホストシステムからディスクへのデータの流れを示す。
【図4】書き込み動作中の円形データバッファの動作を示す。
【図5】バッファメモリー制御装置およびディスクフォーマッターを詳細に示す。
【図6】ハードディスク制御装置が一般に書き込み動作を扱う方法を示す。
【図7】書き込みヘッドとともにハードディスクプラターの概略図を示す。
【図8】マイクロプロセッサーからの単一のコマンドでバッファメモリーの不連続の読み出しを行うために増補されたバッファメモリー制御装置の好ましい例を示す。
【図9】図9A、図9Bは順不同で受け取られた書き込み動作のための組み合わせた書き込み機能を達成するためにバッファメモリー制御装置によって実施される好ましい方法を示す。
【図10】図10A 、図10B はバッファメモリー制御装置およびディスクフォーマッターへの1 組のコマンドを用いて順不同の多数の動作を完了させるために、ハードディスク制御装置によって実施される好ましい方法を示す。
【図11】順不同で到着する2 個の書き込み動作のためにハードディスク制御装置によって実施される実例シーケンスのステップの方法を示す。
Claims (29)
- ハードディスク制御装置のためのバッファメモリー制御装置であって、
バッファメモリーとディスクの書き込みヘッドの間で書き込み動作データをバッファに入れるように構成されたデータバッファと、
バッファメモリー内に記憶された対応する書き込み動作データの位置を識別するアドレスを複数の書き込み動作のそれぞれに対して記憶するように構成された複数のアドレスレジスターと、
少なくともアドレスレジスターに記憶された対応するアドレスに基づいて、対応する書き込み動作データを書き込み動作のそれぞれに対してバッファメモリーからデータバッファに転送するように構成された制御装置論理とを含む、バッファメモリー制御装置。 - 各書き込み動作のために、バッファメモリー内に記憶された対応する量の書き込み動作データを記憶するように構成された複数のブロックカウントレジスターをさらに含む、請求項1に記載のバッファメモリー制御装置。
- 制御装置論理はブロックカウントレジスターに記憶された量に新たに基づいて転送を行うようにさらに構成されている、請求項2に記載のバッファメモリー制御装置。
- ブロックカウントレジスターがFIFOとして働く、請求項3に記載のバッファメモリー制御装置。
- データバッファがFIFOとして働く、請求項1に記載のバッファメモリー制御装置。
- データバッファがディスクフォーマッターに書き込み動作データを供給するように構成された、請求項1に記載のバッファメモリー制御装置。
- アドレスレジスターがFIFOとして働く、請求項1に記載のバッファメモリー制御装置。
- 制御装置論理がバッファメモリー制御装置への単一のコマンドに基づいて少なくとも2個の動作のデータを転送するようにさらに構成された、請求項1に記載のバッファメモリー制御装置。
- アドレスレジスターが一杯かどうかを示すように構成された使用中フラグをさらに含む、請求項1に記載のバッファメモリー制御装置。
- アドレスレジスターの数が少なくとも4個である、請求項1に記載のバッファメモリー制御装置。
- アドレスレジスターの数が少なくとも8個である、請求項1に記載のバッファメモリー制御装置。
- ハードディスク装置を操作するための方法であって、
(A )最初の書き込み動作を受け取り、
(B )(A )の次に2番目の書き込み動作を受け取り、
(C )2番目の書き込み動作のデータをディスクに書き込み、
(D )(C )の次に最初の書き込み動作のデータをディスクに書き込む、方法。 - 最初の書き込み動作と2番目の書き込み動作が同じトラックにデータを書き込むことを決定することをさらに含む、請求項12に記載の方法。
- 2番目の書き込み動作が最初の書き込み動作の開始セクターの数より小さい最終セクター数を有しているのを決定することをさらに含む、請求項13に記載の方法。
- ディスクの書き込みヘッドがトラックに最初に書き込むことができる位置に関連して、2番目の書き込み動作が最初の書き込み動作の前に位置されることを決定することをさらに含む、請求項13に記載の方法。
- 最初の書き込み動作のデータの一部分と、2番目の書き込み動作のデータの一部分とが1 つの周期の間にディスクに書き込まれる、請求項13に記載の方法。
- 最初の書き込み動作のデータと2番目の書き込み動作のデータが1つの周期の間にディスク装置に完全に書き込まれる、請求項13に記載の方法。
- 複数の書き込み動作を受け取り、かつ
各書き込み動作のために、それぞれの書き込み動作の書き込み動作データのバッファメモリー内のアドレスをバッファメモリー制御装置の複数のアドレスレジスターの異なる一つにロードすることを含む、方法。 - 各書き込み動作のために、それぞれの書き込み動作に関連して書き込み動作データの量を特定する値をバッファメモリー制御装置の複数のブロックカウントレジスターの異なる一つにロードすることをさらに含む、請求項18に記載の方法。
- アドレスレジスターとブロックカウントレジスターに、書き込み動作が実行される順序で書き込み動作のデータのアドレスと量がロードされる、請求項19に記載の方法。
- ディスクフォーマッターに複数の書き込み動作の書き込み動作データを提供するようにバッファメモリー制御装置に指示を出すことをさらに含む、請求項18に記載の方法。
- ハードディスク制御装置を動作させる方法であって、
バッファメモリー制御装置の最初のアドレスレジスターに、最初の書き込み動作の書き込み動作データのバッファメモリーのアドレスをロードし、かつ
バッファメモリー制御装置の2番目のアドレスレジスターに、2 番目の書き込み動作の書き込み動作データのバッファメモリーのアドレスをロードし、
最初のアドレスレジスターは2番目のアドレスレジスターと異なり、最初の書き込み動作は2 番目の書き込み動作と異なる、方法。 - 単一のコマンドでディスクフォーマッターに最初と2番目の書き込み動作の書き込み動作データを提供するようにバッファメモリー制御装置に命令することをさらに含む、請求項22に記載の方法。
- ハードディスク制御装置のバッファメモリー制御装置を動作させる方法であって、
(A )複数の書き込み動作ごとに、バッファメモリー制御装置の複数のアドレスレジスターの異なる一つにおいて、それぞれの書き込み動作の書き込み動作データのバッファメモリー内のアドレスを受け取り、
(B )複数の書き込み動作の書き込み動作データを提供するコマンドを受け取る、
方法。 - (C )書き込み動作ごとに、バッファメモリー制御装置の複数のブロックカウントレジスターの異なる1つにおいて、それぞれの書き込み動作に関連した書き込み動作データの量を特定する値を受け取ることをさらに含む、請求項24に記載の方法。
- (D )書き込み動作ごとに、バッファメモリーから書き込み動作データを転送し、その書き込み動作データの量は対応するブロックカウントレジスターの値によって特定され、かつその書き込み動作データのアドレスは対応するアドレスレジスターのアドレスによって特定される、請求項25に記載の方法。
- バッファメモリー制御装置で残りの書き込み動作のごとに(D )を繰り返すことをさらに含む、請求項26に記載の方法。
- ディスクドライブ制御装置であって、
マイクロプロセッサーと、
書き込み動作データを記憶するためのバッファメモリーと、
バッファメモリー制御装置と、このバッファメモリー制御装置は
バッファメモリーとディスクの書き込みヘッドとの間で書き込み動作データをバッファに入れるように構成されたデータバッファと、
複数の書き込み動作ごとに、バッファメモリーに記憶された対応する書き込み動作データの位置を識別するアドレスを記憶するように構成された複数のアドレスレジスターと、
書き込み動作ごとに、少なくともアドレスレジスターに記憶された対応するアドレスに基づいて、対応する書き込み動作データをバッファメモリーからデータバッファに転送するように構成された制御装置論理とを含み、
マイクロプロセッサーによって実行されるファームウェアコードとを含み、そのファームコードはマイクロプロセッサーが書き込み動作が制御装置によって受け取られた順序以外の順序で書き込み動作を行うことができるように構成されている、ディスクドライブ制御装置。 - ファームウェアコードはマイクロプロセッサーが
(A )制御装置によって受け取られた最初の書き込み動作を識別し、
(B )最初の書き込み動作の後、制御装置によって受け取られた2番目の書き込み動作を識別し、
(C )バッファメモリー制御装置の1 番目のアドレスレジスターに2番目の書き込み動作の書き込み動作データのバッファメモリーのアドレスをロードし、
(D )バッファメモリー制御装置の2 番目のアドレスレジスターに最初の書き込み動作の書き込み動作データのバッファメモリーのアドレスをロードし、
(E )バッファメモリー制御装置が1 番目のアドレスレジスターによって識別されたデータを転送し、その後2番目のアドレスレジスターによって識別されたデータを転送するように、バッファメモリー制御装置に対して一つのコマンドを出すように構成されている、請求項28に記載のディスクドライブ制御装置。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/643,636 US6826650B1 (en) | 2000-08-22 | 2000-08-22 | Disk controller configured to perform out of order execution of write operations |
PCT/US2001/022404 WO2002017305A2 (en) | 2000-08-22 | 2001-07-17 | Disk controller configured to perform out of order execution of write operations |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2004507023A true JP2004507023A (ja) | 2004-03-04 |
JP4579494B2 JP4579494B2 (ja) | 2010-11-10 |
Family
ID=24581665
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2002521285A Expired - Lifetime JP4579494B2 (ja) | 2000-08-22 | 2001-07-17 | 順不同の書き込み動作を実行するように構成されたディスク制御装置 |
Country Status (9)
Country | Link |
---|---|
US (6) | US6826650B1 (ja) |
EP (1) | EP1344213B1 (ja) |
JP (1) | JP4579494B2 (ja) |
KR (1) | KR100697862B1 (ja) |
AT (1) | ATE408877T1 (ja) |
AU (1) | AU2001280575A1 (ja) |
CA (1) | CA2418334C (ja) |
DE (1) | DE60135871D1 (ja) |
WO (1) | WO2002017305A2 (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2012508428A (ja) * | 2008-12-22 | 2012-04-05 | インテル コーポレイション | 単一のコマンドにより複数の非連続アドレス範囲の転送をキューイングするための方法及びシステム |
Families Citing this family (36)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6826650B1 (en) * | 2000-08-22 | 2004-11-30 | Qlogic Corporation | Disk controller configured to perform out of order execution of write operations |
US7007114B1 (en) | 2003-01-31 | 2006-02-28 | Qlogic Corporation | System and method for padding data blocks and/or removing padding from data blocks in storage controllers |
US7039771B1 (en) | 2003-03-10 | 2006-05-02 | Marvell International Ltd. | Method and system for supporting multiple external serial port devices using a serial port controller in embedded disk controllers |
US7457903B2 (en) | 2003-03-10 | 2008-11-25 | Marvell International Ltd. | Interrupt controller for processing fast and regular interrupts |
US7870346B2 (en) | 2003-03-10 | 2011-01-11 | Marvell International Ltd. | Servo controller interface module for embedded disk controllers |
US7492545B1 (en) | 2003-03-10 | 2009-02-17 | Marvell International Ltd. | Method and system for automatic time base adjustment for disk drive servo controllers |
WO2005041207A2 (en) * | 2003-10-29 | 2005-05-06 | Matsushita Electric Industrial Co.,Ltd. | Drive device and related computer program |
US7139150B2 (en) | 2004-02-10 | 2006-11-21 | Marvell International Ltd. | Method and system for head position control in embedded disk drive controllers |
US7676603B2 (en) * | 2004-04-20 | 2010-03-09 | Intel Corporation | Write combining protocol between processors and chipsets |
US8166217B2 (en) | 2004-06-28 | 2012-04-24 | Marvell International Ltd. | System and method for reading and writing data using storage controllers |
US9201599B2 (en) | 2004-07-19 | 2015-12-01 | Marvell International Ltd. | System and method for transmitting data in storage controllers |
US8032674B2 (en) | 2004-07-19 | 2011-10-04 | Marvell International Ltd. | System and method for controlling buffer memory overflow and underflow conditions in storage controllers |
US7757009B2 (en) | 2004-07-19 | 2010-07-13 | Marvell International Ltd. | Storage controllers with dynamic WWN storage modules and methods for managing data and connections between a host and a storage device |
US7386661B2 (en) | 2004-10-13 | 2008-06-10 | Marvell International Ltd. | Power save module for storage controllers |
US7240267B2 (en) | 2004-11-08 | 2007-07-03 | Marvell International Ltd. | System and method for conducting BIST operations |
US7802026B2 (en) | 2004-11-15 | 2010-09-21 | Marvell International Ltd. | Method and system for processing frames in storage controllers |
KR100759427B1 (ko) * | 2005-03-17 | 2007-09-20 | 삼성전자주식회사 | 전력 소모가 적은 하드디스크 드라이버 및 이를 구비한 정보처리 시스템, 그리고 그들의 데이터 입출력 방법 |
US7609468B2 (en) | 2005-04-06 | 2009-10-27 | Marvell International Ltd. | Method and system for read gate timing control for storage controllers |
US20060271739A1 (en) * | 2005-05-24 | 2006-11-30 | Shu-Fang Tsai | Management of transfer of commands |
TWI260609B (en) * | 2005-11-23 | 2006-08-21 | Benq Corp | Recording method for optical disc |
US20080005384A1 (en) * | 2006-06-01 | 2008-01-03 | Broadcom Corporation, A California Corporation | Hard disk drive progressive channel interface |
US7984210B2 (en) * | 2006-06-20 | 2011-07-19 | Freescale Semiconductor, Inc. | Method for transmitting a datum from a time-dependent data storage means |
WO2007147441A1 (en) * | 2006-06-22 | 2007-12-27 | Freescale Semiconductor, Inc. | Method and system of grouping interrupts from a time-dependent data storage means |
US7644206B2 (en) * | 2006-06-30 | 2010-01-05 | Seagate Technology Llc | Command queue ordering by positionally pushing access commands |
US8127089B1 (en) | 2007-02-14 | 2012-02-28 | Marvell International Ltd. | Hard disk controller which coordinates transmission of buffered data with a host |
JP2008293578A (ja) * | 2007-05-24 | 2008-12-04 | Hitachi Ltd | ストリームデータ制御モジュール |
KR101447188B1 (ko) * | 2007-07-31 | 2014-10-08 | 삼성전자주식회사 | 플래시 메모리에 최적화된 입출력 제어 방법 및 장치 |
US8468319B1 (en) | 2010-01-19 | 2013-06-18 | Infinidat Ltd. | Concurrent access to a single disk track by combining reads and writes to a disk with a mask |
JP5520747B2 (ja) * | 2010-08-25 | 2014-06-11 | 株式会社日立製作所 | キャッシュを搭載した情報装置及びコンピュータ読み取り可能な記憶媒体 |
WO2013101179A1 (en) * | 2011-12-30 | 2013-07-04 | Intel Corporation | Write mechanism for storage class memory |
US8966598B2 (en) | 2012-05-25 | 2015-02-24 | LiveQoS Inc. | System and method for group video messaging service |
US9032184B2 (en) * | 2012-09-14 | 2015-05-12 | HGST Netherlands B.V. | Implementing drive list mode for reads and writes for hard disk drives |
US20150026427A1 (en) * | 2013-07-17 | 2015-01-22 | Kabushiki Kaisha Toshiba | Data reassign method and storage device |
US9423965B2 (en) * | 2014-07-11 | 2016-08-23 | Dell Products L.P. | Method and system for writing to and reading from computer readable media |
CN110018897B (zh) | 2018-01-09 | 2023-05-26 | 阿里巴巴集团控股有限公司 | 数据处理方法、装置及计算设备 |
US12086462B2 (en) | 2020-07-29 | 2024-09-10 | Seagate Technology Llc | Pre-suspend before program in a non-volatile memory (NVM) |
Family Cites Families (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4584617A (en) * | 1983-09-22 | 1986-04-22 | Dual Systems Corporation | Method and apparatus for improving the transfer time in rotating data storage systems |
US4667286A (en) | 1984-12-20 | 1987-05-19 | Advanced Micro Devices, Inc. | Method and apparatus for transferring data between a disk and a central processing unit |
US5109500A (en) | 1986-10-31 | 1992-04-28 | Hitachi, Ltd. | Disk drive control unit having sets of operating command and operation length information and generating end signal based upon operation length information |
JPH03183067A (ja) | 1989-12-11 | 1991-08-09 | Fujitsu Ltd | 磁気ディスク装置 |
EP0528273B1 (en) | 1991-08-16 | 1999-10-27 | Fujitsu Limited | Buffer memory and method of managing the same |
US5729718A (en) * | 1993-11-10 | 1998-03-17 | Quantum Corporation | System for determining lead time latency as function of head switch, seek, and rotational latencies and utilizing embedded disk drive controller for command queue reordering |
US5523903A (en) | 1993-12-23 | 1996-06-04 | International Business Machines Corporation | Sector architecture for fixed block disk drive |
US5666494A (en) * | 1995-03-31 | 1997-09-09 | Samsung Electronics Co., Ltd. | Queue management mechanism which allows entries to be processed in any order |
JP3362329B2 (ja) * | 1995-06-26 | 2003-01-07 | 住友電気工業株式会社 | 光ファイバ接続部材とその製造方法及び接続方法 |
JPH0991098A (ja) | 1995-09-27 | 1997-04-04 | Nec Software Ltd | デバイスドライバアクセス方式 |
JPH1021012A (ja) | 1996-06-28 | 1998-01-23 | Toshiba Corp | 磁気ディスク装置及び同装置のコマンド処理方法 |
US6029226A (en) | 1996-09-30 | 2000-02-22 | Lsi Logic Corporation | Method and apparatus having automated write data transfer with optional skip by processing two write commands as a single write command |
US6112265A (en) * | 1997-04-07 | 2000-08-29 | Intel Corportion | System for issuing a command to a memory having a reorder module for priority commands and an arbiter tracking address of recently issued command |
US6381659B2 (en) * | 1999-01-19 | 2002-04-30 | Maxtor Corporation | Method and circuit for controlling a first-in-first-out (FIFO) buffer using a bank of FIFO address registers capturing and saving beginning and ending write-pointer addresses |
US6574676B1 (en) * | 2000-01-11 | 2003-06-03 | International Business Machines Corporation | System and method for scheduling disk drive commands by expected total access time |
US6490635B1 (en) * | 2000-04-28 | 2002-12-03 | Western Digital Technologies, Inc. | Conflict detection for queued command handling in disk drive controller |
US6826650B1 (en) * | 2000-08-22 | 2004-11-30 | Qlogic Corporation | Disk controller configured to perform out of order execution of write operations |
-
2000
- 2000-08-22 US US09/643,636 patent/US6826650B1/en not_active Expired - Lifetime
-
2001
- 2001-07-17 JP JP2002521285A patent/JP4579494B2/ja not_active Expired - Lifetime
- 2001-07-17 KR KR1020037002436A patent/KR100697862B1/ko not_active IP Right Cessation
- 2001-07-17 DE DE60135871T patent/DE60135871D1/de not_active Expired - Lifetime
- 2001-07-17 WO PCT/US2001/022404 patent/WO2002017305A2/en active Application Filing
- 2001-07-17 CA CA2418334A patent/CA2418334C/en not_active Expired - Fee Related
- 2001-07-17 AT AT01958970T patent/ATE408877T1/de not_active IP Right Cessation
- 2001-07-17 AU AU2001280575A patent/AU2001280575A1/en not_active Abandoned
- 2001-07-17 EP EP01958970A patent/EP1344213B1/en not_active Expired - Lifetime
-
2004
- 2004-08-18 US US10/920,881 patent/US7103715B2/en not_active Expired - Fee Related
-
2006
- 2006-08-24 US US11/509,285 patent/US7484037B2/en not_active Expired - Lifetime
-
2008
- 2008-12-18 US US12/338,013 patent/US7814271B2/en not_active Expired - Fee Related
-
2010
- 2010-10-12 US US12/902,364 patent/US8145835B2/en not_active Expired - Fee Related
-
2012
- 2012-03-26 US US13/430,063 patent/US8769219B2/en not_active Expired - Lifetime
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2012508428A (ja) * | 2008-12-22 | 2012-04-05 | インテル コーポレイション | 単一のコマンドにより複数の非連続アドレス範囲の転送をキューイングするための方法及びシステム |
Also Published As
Publication number | Publication date |
---|---|
US20120185655A1 (en) | 2012-07-19 |
ATE408877T1 (de) | 2008-10-15 |
CA2418334A1 (en) | 2002-02-28 |
US20050015543A1 (en) | 2005-01-20 |
US20090150607A1 (en) | 2009-06-11 |
US8769219B2 (en) | 2014-07-01 |
US7484037B2 (en) | 2009-01-27 |
KR100697862B1 (ko) | 2007-03-23 |
KR20040010517A (ko) | 2004-01-31 |
US8145835B2 (en) | 2012-03-27 |
DE60135871D1 (de) | 2008-10-30 |
WO2002017305A2 (en) | 2002-02-28 |
CA2418334C (en) | 2012-01-24 |
JP4579494B2 (ja) | 2010-11-10 |
EP1344213B1 (en) | 2008-09-17 |
US20110029727A1 (en) | 2011-02-03 |
AU2001280575A1 (en) | 2002-03-04 |
US20060288160A1 (en) | 2006-12-21 |
US7814271B2 (en) | 2010-10-12 |
US7103715B2 (en) | 2006-09-05 |
US6826650B1 (en) | 2004-11-30 |
WO2002017305A3 (en) | 2003-07-17 |
EP1344213A2 (en) | 2003-09-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4579494B2 (ja) | 順不同の書き込み動作を実行するように構成されたディスク制御装置 | |
US6845405B1 (en) | Disk drive executing part of a linked disk command | |
US6330626B1 (en) | Systems and methods for a disk controller memory architecture | |
EP2377028B1 (en) | Modifying commands | |
US7480754B2 (en) | Assignment of queue execution modes using tag values | |
US6401149B1 (en) | Methods for context switching within a disk controller | |
KR101245011B1 (ko) | 복수의 전달을 큐잉하는 방법, 복수의 불연속 어드레스 범위 전달 요청 방법, 제품 및 시스템 | |
JP2007522560A (ja) | マスストレージアクセラレータ | |
JP3745552B2 (ja) | 情報記憶装置 | |
WO1995006284A1 (en) | Ata interface architecture employing state machines | |
US5860089A (en) | Disk system with command processing function | |
US6567886B1 (en) | Disk drive apparatus and control method thereof | |
EP1631911B1 (en) | Method and device for transferring data between a main memory and a storage device | |
US20030172229A1 (en) | Systems and methods for detecting and compensating for runt block data transfers | |
EP1188106B1 (en) | Systems and methods for a disk controller memory architecture | |
US6957300B2 (en) | Reducing delay of command completion due to overlap condition | |
US7526605B2 (en) | System and method for optimizing random XOR command performance | |
JP2004102440A (ja) | コマンド処理方法及び記憶装置 | |
JPH07295916A (ja) | ディスク制御方式 | |
WO1994022134A1 (en) | Buffer control for data transfer within hard disk during idle periods | |
JPH11110138A (ja) | 記憶制御装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20041101 |
|
A711 | Notification of change in applicant |
Free format text: JAPANESE INTERMEDIATE CODE: A711 Effective date: 20060801 |
|
RD04 | Notification of resignation of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7424 Effective date: 20060823 |
|
RD05 | Notification of revocation of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7425 Effective date: 20060823 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20061121 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20070214 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20070313 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20070709 |
|
A911 | Transfer to examiner for re-examination before appeal (zenchi) |
Free format text: JAPANESE INTERMEDIATE CODE: A911 Effective date: 20070807 |
|
A912 | Re-examination (zenchi) completed and case transferred to appeal board |
Free format text: JAPANESE INTERMEDIATE CODE: A912 Effective date: 20071005 |
|
RD13 | Notification of appointment of power of sub attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7433 Effective date: 20100531 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A821 Effective date: 20100531 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20100707 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20100826 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130903 Year of fee payment: 3 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 4579494 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
EXPY | Cancellation because of completion of term |