JP3745552B2 - 情報記憶装置 - Google Patents
情報記憶装置 Download PDFInfo
- Publication number
- JP3745552B2 JP3745552B2 JP04961399A JP4961399A JP3745552B2 JP 3745552 B2 JP3745552 B2 JP 3745552B2 JP 04961399 A JP04961399 A JP 04961399A JP 4961399 A JP4961399 A JP 4961399A JP 3745552 B2 JP3745552 B2 JP 3745552B2
- Authority
- JP
- Japan
- Prior art keywords
- command
- data
- write
- host
- medium
- 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.)
- Expired - Fee Related
Links
Images
Classifications
-
- 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
-
- 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
- G11B20/00—Signal processing not specific to the method of recording or reproducing; Circuits therefor
- G11B20/10—Digital recording or reproducing
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Signal Processing (AREA)
- Signal Processing For Digital Recording And Reproducing (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Description
【発明の属する技術分野】
本発明は、ホストからの書込コマンドで転送されたデータを媒体に書き込む磁気ディスクドライブ等の情報記憶装置に関し、特に、ホストから連続して発行された複数の書込コマンドに対し、媒体書込中に後続する書込コマンドのデータを先取データとして受信して処理する情報記憶装置に関する。
【0002】
【従来技術】
従来、ハードディスクとして知られた情報記憶装置にあっては、ホストがハードディスクにデータを書き込む場合、ホストは書込コマンドを発行し、この書込コマンドによりハードディスクがホストにデータを要求してデータバッファに格納し、データ受信完了でディスク媒体にデータを書き込む。ディスク媒体に対するデータ書込完了をすると、ハードディスクは、書込コマンドの実行結果を示すステータスをホストに報告し、その書込コマンドが完了する。
【0003】
ホストからの書込コマンドは、書込開始アドレスと書込ブロック数を示す情報が示されており、ハードディスクドライブはホストインタフェースを通してMCUで書込コマンドを認識する。ホストからのデータはデータバッファに一時的に記憶され、ブロック単位でディスク媒体に書き込まれる。ステータス報告には次の2つの方式がある。
【0004】
▲1▼データ受信が完了した時点でステータス報告を行ってコマンドを完了するデータ受信コマンド完了方式;
▲2▼ディスク書込みが完了した時点でステータス報告を行ってコマンドが完了する媒体書込コマンド完了方式;
データ受信コマンド完了方式は、ホストからのデータ受信の完了でコマンドを終了することにより、次のコマンドの処理の開始を容易にしている。つまり、データ先取りを目的として発行されるコマンド完了方式である。これに対し媒体書込コマンド完了方式は、データがディスク媒体に正常に書かれたかをホストが確認しながら書き込むコマンド完了方式である。
【0005】
ハードディスクドライブは、複数の書込コマンドが連続して発行された場合、複数の書込コマンドの実行前にアクセス時間の短い順に並び替えて実行することによりコマンド処理能力を向上させる。一度実行が開始されれば、その後、実行順序は変えない。ここでの実行開始は、データ受信の開始を意味する。
【0006】
データバッファは、セグメントと呼ばれるいくつかのブロックに分割され、データ書込みまたは読出コマンドで一つのセグメントを使用して実行する。データバッファを複数のブロックに分割する目的は、読出コマンドの実行時に、その読出コマンドのデータ又はそれ以降のデータをデータバッファに保持しておき、データバッファに保持されているデータの読出コマンドがそれ以降のコマンドで発行されたならば、ディスク媒体から読まずに直接データバッファからデータをホストに転送してコマンド処理を短縮することである。
【0007】
【発明が解決しようとする課題】
ところで、データ受信コマンド完了方式においてデータの先取りを実施する目的は、発行された書込コマンドの先頭セクタまでの移動完了までに、書込データ全部または一部がデータバッファに受信されており、データバッファに書込データが無いことによるディスク媒体の回転待ちを少なくすることにある。
【0008】
つまり、データ先取りしない場合は目的セクタまでの移動中に受信しなければならないが、データを先取りしている場合には前の書込コマンドによるディスク媒体の書込時間もホストからの先取データの受信時間に含むため、データ受信に余裕があり、データバッファに書込データが無いことによる回転待ちが発生しにくくなるからである。しかし、データの先取りを実施するには以下の問題がある。
【0009】
1)コマンド発行方式に関する問題点
図16は、書込データの受信が完了した時点でコマンドを完了するデータ受信コマンド完了方式について、ホストから2ブロックの書込コマンドが発行された際のデータの流れである。
【0010】
図16(A)はホストインタフェースであり、2ブロックのデータを指定した2つの書込コマンドCMD1,CMD2が連続して発行される。時刻t1で書込コマンドCMD1,CMD2の受信が完了すると、ハードディスクドライブは書込コマンドCMD1の実行によりホストから2ブロックのデータD11,D12を受信してデータバッファに格納し、データ受信完了でステータスSTS1をホストに報告し、書込コマンドCMD1を時刻t2で完了させる。
【0011】
このため次の書込コマンドCMD2のデータD21,D22の受信が開始され、データバッファに先取データとして格納され、データ受信完了でステータスSTS2を報告して書込コマンドCMD2を時刻t4で完了させる。
【0012】
図16(B)は、ディスクインタフェースであり、ホストからの2ブロックのデータD11,D12の受信に並行して書込コマンドCMD1で指定される目的セクタへのヘッド移動を開始し、ディスク媒体へのデータ書込を時刻t3で完了する。
【0013】
このように書込データの受信が完了した時点でコマンドを完了するデータ受信コマンド完了方式は、ホストに対してディスク媒体に対するデータ書込結果を報告する必要がないため、次の書込コマンドの処理を開始することを容易にし、所謂データの先取りができる。
【0014】
しかし、データ受信コマンド完了方式でディスク媒体への書込みに失敗した場合、その書込コマンドは既に終了しているため、最後に先取りした書込コマンドの次の書込コマンドを実行せずに先取コマンドで失敗したことをホストに報告する。
【0015】
また、ホストから連続して発行した複数の先取コマンドのディスク書込みで失敗した場合、最後に失敗した先取コマンドの個所のみ報告される。このため、ホストは報告された個所以前の先取コマンドの全てに対して再書込みを実施しなければならないという問題がある。
【0016】
この問題を解消するため、ホストはディスク媒体に正常に書かれたことを確認できるディスク書込コマンド完了方式を採用するのが一般的であった。
【0017】
図17は、ディスク書込みが完了した時点でコマンドを完了するディスク書込コマンド完了方式について、ホストから2ブロックの書込コマンドが発行された際のデータの流れである。
【0018】
図17(A)はホストインタフェースであり、2ブロックのデータを指定した2つの書込コマンドCMD1,CMD2が連続して発行される。時刻t1で書込コマンドCMD1,CMD2の受信が完了すると、ハードディスクドライブは書込コマンドCMD1の実行によりホストから2ブロックのデータD11,D12を受信してデータバッファに格納する。
【0019】
図17(B)は、ディスクインタフェースであり、ホストからの2ブロックのデータD11,D12の受信が時刻t2で完了すると、書込コマンドCMD1で指定される目的セクタへのヘッド移動を開始し、ディスク媒体へのデータD11,D12の書込みを時刻t3で完了する。
【0020】
このディスク書込完了でホストインタフェースはステータスSTS1をホストに報告し、書込コマンドCMD1を完了させる。続いて書込コマンドセCMD2のデータD21,D22が受信され、ヘッド移動の後にディスク書込みが行われる。
【0021】
しかし、近年、複数のホストや複数のターゲット(ハードディスクドライブ等)を接続したシステムが増加し、データの先取りを実施しない場合、他のターゲットとホストが交信中のためにデータ受信が遅れ、目的セクタへの移動完了までにデータを受信できないという短所が無視できなくなってきている。
【0022】
2)実行順序の最適化に関する問題点
図16のように、データ受信コマンド完了方式でデータの先取りを行う場合、コマンド受信からデータ受信を開始するまでの時間が短くなるため、ディスク書込みのための書込コマンドの実行順序が最適化されずにコマンドの実行が開始される可能性がある。もし、最適化されていなければ、先取りを実施しない場合よりも処理能力が低下する可能性がある。
【0023】
3)先読みデータの破壊に関する問題点
図17のように、媒体書込コマンド完了方式でデータの先取りを実施しない場合は、データバッファの1つのセグメントを使って連続した書込コマンドを処理するため、他のセグメントのデータを破壊することはない。しかし図17のように、データ受信コマンド完了方式によってデータ先取りを実施する場合は、複数のセグメントを使用するため、既に各セグメントに保存されているリードデータが失われ、リード性能が低下する可能性がある。
【0024】
本発明は、ディスク媒体への書込み完了によって書込コマンドを終了する場合にも、データの先取りを実施することにより、書込データをデータバッファに確保して処理能力を向上するようにした情報記憶装置を提供することを目的とする。
【0025】
また本発明の他の目的は、複数の書込コマンドのデータを受信した場合のディスク書込み順序の最適化と、ディスク書込中のコマンドと先取コマンドで使用するバッファ領域を同一とすることにより、データの先取りによるコマンド処理能力を向上するようにした情報記憶装置を提供することを目的とする。
【0026】
【課題を解決するための手段】
図1は本発明の原理説明図である。
【0027】
本発明は、ホストから発行された書込コマンドを媒体への書込完了によって終了する情報記憶装置であり、図1(A)ように、ホストから連続して発行された複数の書込コマンドを受信してコマンドキュー76に格納するコマンド受信部66と、コマンドキュー76の先頭位置からの書込コマンドの実行によりホストからデータを受信してデータバッファ24に格納するデータ受信部68と、データ受信部68によるデータの受信完了で受信データの媒体書込みを開始する媒体書込部70と、媒体書込部70による書込完了でステータスをホストに報告して実行中の書込コマンドを終了させるステータス報告部72と、媒体書込部70による受信データの媒体書込完了を待たずに、次の書込コマンドの実行によりホストからデータを先取データとして受信してデータバッファ24に格納する先取処理部74とを設けたことを特徴とする。
【0028】
このように本発明の情報記憶装置は、書込コマンドをディスク媒体への書込完了によって終了する場合、図1(B)のように、ホストから連続して発行された複数の書込コマンドCMD1,CMDに対して実行中のコマンドCMD1のデータD11,D12の受信が完了したならば、ディスク媒体への書込完了を待たずに次のコマンドCMD2のデータD21,D22の受信を開始することにより、コマンド処理能力を向上できる。
【0029】
即ち、書込コマンドをディスク媒体への書込完了によって終了する従来装置では、データバッファに書込データが無いことによるディスク書込処理の遅れが、アクセス時間が短い場合や複数接続で発生しやすく処理能力低下の要因であったが、本発明により、データバッファに先取データが確保されることで、処理性能低下を無くし安定した処理能力が得られる。
【0030】
ここで、実行中の書込コマンド以降のコマンドのデータ受信をデータの先取りと定義し、データの先取りを実施しているコマンドを先取コマンドと定義する。
【0031】
本発明の情報記憶装置は、更に、コマンドキュー76に対し、図1(C)のように、次に受信するコマンド格納位置を示す次コマンド受信ポインタP1、ホストからのデータ受信開始又は受信中のコマンドを示すデータ受信ポインタP2、前記データバッファから媒体へのデータ書込開始又は書込中のコマンドを示す媒体書込ポインタP3、及び次にステータスを報告するコマンドを示すステータス報告ポインタP4を設ける。
【0032】
コマンド受信部66によるコマンド受信完了でコマンド受信ポインタP1を歩進し、データ受信部68によるデータ受信完了でデータ受信ポインタP2を歩進し、媒体書込部70による媒体書込完了で媒体書込ポインタP3を歩進し、更にステータス報告部72によるステータス報告完了でステータス報告ポンイタP4を歩進する。
【0033】
コマンド受信ポインタP1、データ受信ポインタP2、媒体書込ポインタP3及びステータス報告ポンイタP4の順番に配置し、各ポインタが歩進する毎に、歩進したポインタの示す処理を実行する。
【0034】
本発明の情報記憶装置は、コマンドキュー76に複数の先取データ受信済みの先取書込コマンドがある場合、複数の先取書込コマンドの実行順序をアクセス時間の短い順に並び替えて最適化する最適化部75を設ける。
【0035】
この最適化部75は、先取書込コマンドのアクセス時間を、先行するコマンドの媒体書込み完了から次のコマンドの媒体書込開始までの時間として求め、アクセス時間の短い順に実行順序を変えて最適化する。
【0036】
このようにコマンドキューに複数のデータ受信済みの先取コマンドがある場合、先取コマンドの実行順序をアクセス時間の短い順に順序を変えることにより、コマンド処理能力を向上できる。即ち、従来の先取データの処理では、実行順序の最適化が不十分なための処理能力低下や、先読みデータの破壊によるデータ読出コマンドの処理能力の低下を防止するために、高性能なMPUをハードディスクドライブに設けて短時間で最適化を実施するようにしたり、大容量なデータバッファをもって先読みするデータの個数を増やすなどして対策したが、本発明は、高価なハードウェアを用いることなく、先取コマンドの実行順序の最適化によりコマンド処理能力を向上できる。
【0037】
本発明の情報記憶装置は、データバッファ24を複数の領域に分割し、ホストから連続して発行された複数の書込コマンドをコマンドキューに格納した際には、ディスク書込中のコマンドで使用するバッファ領域と、先取コマンドで使用するバッファ領域を同一としたことを特徴とする。
【0038】
例えばデータバッファを所定サイズの複数の領域に分割すると共に、各領域を最初のコマンドで格納したデータに基づく所定サイズで細分化したサブ領域に分割し、ホストから連続して発行された複数の書込コマンドをコマンドキューに格納した際には、ディスク書込中のコマンドと先取コマンドの各々で特定のバッファ領域のサブ領域を使用する。
【0039】
またデータバッファを所定サイズの複数の領域に分割すると共に、ホストから連続して発行された複数の書込コマンドをコマンドキューに格納した際には、ディスク書込中のコマンドと先取コマンドの各々のデータサイズに応じて特定のバッファ領域をサブ領域に分割して使用するようにしてもよい。
【0040】
このようにディスク書込中のコマンドと先取コマンドで使用するバッファ領域を同一としたことで、複数の書込コマンドの最初のコマンドで使用したバッファ領域の空領域に先取データを受信することになり、他の領域にある先読データを破壊せずに、データの先取りを実現する。
【0041】
本発明の別の形態にあっては、ホストから発行された書込コマンドをホストからのデータ受信完了によって終了する情報記憶装置を対象とする。このデータ受信コマンド完了方式の情報記憶装置は、ホストから連続して発行された複数の書込コマンドを受信してコマンドキューに格納するコマンド受信部と、コマンドキューの先頭位置からの書込コマンドの実行によりデータを受信してデータバッファに格納するデータ受信部と、データ受信部によるデータ受信完了でステータスをホストに報告して実行中の書込コマンドを終了させるステータス報告部と、データ受信部によるデータの受信完了で受信データの媒体書込みを開始する媒体書込部と、コマンドキューに複数の先取データ受信済みの先取書込コマンドがある場合、前記複数の先取書込コマンドの実行順序をアクセス時間の短い順に並び替えて最適化する最適化部とを設けたことを特徴とする。
【0042】
ここで最適化部は、先取書込コマンドのアクセス時間を、先行するコマンドの媒体書込完了から次のコマンドの媒体書込み開始までの時間として求め、アクセス時間の短い順に実行順序を変えて最適化する。
【0043】
このようにコマンドキューに複数のデータ受信済みの先取コマンドがある場合、先取コマンドの実行順序をアクセス時間の短い順に順序を変えることにより、コマンド処理能力を向上できる。
【0044】
また、この情報記憶装置は、データバッファを複数の領域に分割し、ホストから連続して発行された複数の書込コマンドをコマンドキューに格納した際には、ディスク書込中のコマンドで使用するバッファ領域と、先取コマンドで使用するバッファ領域を同一としたことを特徴とする。
【0045】
例えばデータバッファを所定サイズの複数の領域に分割すると共に、各領域を最初のコマンドの実行で格納したデータに基づく所定サイズで細分化したサブ領域に分割し、ホストから連続して発行された複数の書込コマンドをコマンドキューに格納した際には、ディスク書込中のコマンドと先取コマンドの各々で特定のバッファ領域のサブ領域を使用する。
【0046】
またデータバッファを所定サイズの複数の領域に分割すると共に、ホストから連続して発行された複数の書込コマンドを前記コマンドキューに格納した際には、ディスク書込中のコマンドと先取コマンドの各々のデータサイズに応じて特定のバッファ領域をサブ領域に分割して使用してもよい。
【0047】
このようにディスク書込中のコマンドと先取コマンドで使用するバッファ領域を同一としたことで、複数の書込コマンドの最初のコマンドで使用したバッファ領域の空領域に先取データを受信することにより、他の領域にある先取データを破壊せずに、データの先取りを実現する。
【0048】
【発明の実施の形態】
図2は、本発明が適用されるハードディスクドライブのブロック図である。図2において、ハードディスクドライブは、SCSIコントローラ10、ドライブコントローラ12及びディスクエンクロージャ14で構成される。
【0049】
SCSIコントローラ10には、MCU16、制御記憶として使用されるフラッシュメモリ18、制御プログラムを格納したプログラムメモリ20、ハードディスクコントローラ22及びデータバッファ24が設けられる。ドライブコントローラ12には、ドライブインタフェースロジック26、DSP28、リード/ライトLSI30、サーボ復調部32及びサーボドライバ34が設けられる。
【0050】
ディスクエンクロージャ14にはヘッドIC36が設けられ、ヘッドIC36をライトヘッドとリードヘッドを備えた複合ヘッド38−1〜38−6に接続している。複合ヘッド38−1〜38−6は、磁気ディスク40−1〜40−3の各記録面に対し設けられ、VCM44による駆動でディスク媒体40−1〜40−3と任意のセクタ位置に位置決めされる。磁気ディスク40−1〜40−3はスピンドルモータ42により一定速度で回転される。
【0051】
ホストから発行された書込コマンドは、ハードディスクコントローラ22を介してフラッシュメモリ18のコマンドキューに格納される。MCU16はフラッシュメモリ18のコマンドキューの先頭位置から書込コマンドを取り出し、ハードディスクコントローラ22を使用してホストに対し書込データの転送を要求する。
【0052】
ホストから転送された書込データは、データバッファ24に格納される。データバッファ24に書込データの格納が終了すると、MCU16はハードディスクコントローラ22を起動して、磁気ディスク40−1〜40−3側に対する書込みを行う。
【0053】
即ち、データバッファ24に格納された書込データは、ハードディスクコントローラ22、ドライブインタフェースロジック26、リード/ライトLSI30のライト系ヘッドIC36を通って、例えば複合ヘッド38−1から磁気ディスク40−1の書込コマンドで指定されたセクタ位置に書き込まれる。
【0054】
同時にDSP28は、書込コマンドで与えられたセクタ位置に対するVCM44によるヘッドの位置付けを、サーボドライバ34とサーボ復調部32を介して得られたサーボ復調信号により制御し、複合ヘッド38−1が書込コマンドを指定された目的セクタに位置付けられたときに書込データのディスク書込みを実行する。
【0055】
このようにデータバッファ24からの書込データの磁気ディスクへの書込みが完了すると、MCU16はハードディスクコントローラ22を介してホストに書込データが正常終了したことを示すステータスを報告する。
【0056】
図3は、図2のハードディスクコントローラ22の内部構成のブロック図である。ハードディスクコントローラ22には、マイクロプロセッサインタフェースロジック46、データフローコントローラ48、バッファコントローラ50、SCSIシーケンサ52、ディスクフォーマッタ54、リード・ソロモンECCエンジン56及びSCSIコントローラ58が設けられる。
【0057】
SCSIコントローラ58には、ホストと接続するためのSCSIポート64が設けられる。またSCSIコントローラ58及びディスクフォーマッタ54に対しては、データバッファ24と接続するためのデータバッファポート62が設けられる。更にディスクフォーマッタ54に対しては、図2のドライブインタフェースロジック26と接続するためのディスクポート60が設けられる。
【0058】
ホストからの書込コマンドは、SCSIポート64からSCSIコントローラ58に与えられ、バッファコントローラ50、マイクロプロセッサ・インタフェース・ロジック46を介してMCU16側に送られ、フラッシュメモリ18のコマンドキューに格納される。
【0059】
書込コマンドの実行でホストから送られてくる書込データは、SCSIポート64からSCSIコントローラ58を経由し、データバッファポート62からデータバッファ24に格納される。データバッファ24に格納された書込データは、データバッファポート62を介してディスクフォーマッタ54に読み込まれ、磁気ディスクに書き込むためのフォーマッタを行うと同時に、リード・ソロモンECCエンジン56によって多バイト訂正機能を持つリード・ソロモン符号によるECCエンコード処理を行い、ディスクポート62から磁気ディスク側に送って磁気ディスクに書き込む。
【0060】
ホストとの間のコマンド及びデータの転送はSCSIシーケンサ52及びSCSIコントローラ58により制御される。またデータバッファ24に対するデータの書込み,読出しは、バッファコントローラ50により制御される。更にデータバッファから読み出した書込データのディスクポートを経由したディスクへの書込制御は、データフローコントロール48により行われる。
【0061】
図4は本発明による情報記憶装置の実施形態の機能ブロック図であり、ホストから発行された書込コマンドを媒体への書込完了によって終了する媒体書込コマンド完了方式の装置であり、現在ディスク書込実行中の書込コマンドによる媒体書込完了を待たずに、次の書込コマンドの実行によりホストからデータを先取りデータとして受信するようにしたことを特徴とする。
【0062】
図4において、この情報記憶装置は、コマンド受信部66、データ受信部68、媒体書込部70、ステータス報告部72及び先取処理部74で構成される。またコマンド受信部66、データ受信部68媒体書込部70及び先取処理部74に対しては、図2のフラッシュメモリ18で実現される制御記憶18によってコマンドキュー76とポインタテーブル78が設けられている。
【0063】
コマンド受信部66は、ホストから連続して発行された複数の書込コマンドを受信してコマンドキュー76に格納する。データ受信部68は、コマンドキュー76の先頭位置からの書込コマンドの実行によりホストからデータを受信してデータバッファ24に格納する。
【0064】
媒体書込部70は、データ受信部68によるホストからの書込データの受信完了で受信データの媒体書込みを完了する。ステータス報告部72は、媒体書込部70による書込完了でステータスをホストに報告して、実行中の書込コマンドを終了させる。更に先取処理部74は、媒体書込部70による受信データの媒体書込完了を待たずに次の書込コマンドの実行によりホストからデータを先取りデータとして受信し、データバッファ24に格納する。
【0065】
図5はホストから発行されるコマンドのフォーマット説明図であり、6バイト長のコマンドを例にとっている。このコマンドについて、コマンドコード80として「2A」を設定すると、「Write Extended」の書込コマンドとなり、1,2,3バイトで指定された指定論理ブロックから4バイト目で指定された転送データ長で示される任意のブロック数のデータ書込みを指定することができる。
【0066】
図6はデータのディスク媒体書込完了でホストに報告するステータスのフォーマット説明図である。このステータスは1バイトのステータス情報であり、第1ビットから第5ビットの5ビットをステータスバイトコードに使用しており、コマンド実行が正常終了となるグッドステータス、エラー、実行不可、異常終了、センサ生成等の異常を示すチェックコンディションステータス、ハードディスクドライブがビジィ状態でコマンド受付不能を示すビジィステータス、リンク指示コマンドの正常終了を示すインターメディエード/グッドステータス、他のホストがリザーブ状態にあることを示すリザベーション/コンフリクトステータス、コマンドキューに空きがなくコマンドキューに登録不可を示すキューフルステータス等がある。
【0067】
図7は、図4の制御記憶18に設けたコマンドキュー76とポインタテーブル78の説明図である。図7(A)はコマンドキュー76であり、例えばホストから発行された図5のコマンドフォーマットを持つ4つの書込コマンドCMD1,CMD2,CMD3,CMD4が格納された状態を示している。
【0068】
このようなコマンドキュー76に格納された書込コマンドCMD1〜CMD4に対し、図7(B)のポインタテーブル78が設けられる。ポインタテーブル78はコマンドキュー76に対し次に受信するコマンドの格納位置を示す次コマンド受信ポインタP1、ホストからのデータ受信開始または受信中のコマンドを示すデータ受信ポインタP2、データバッファ24から媒体へのデータ書込開始または書込中のコマンドを示す媒体書込ポインタP3及び、次にステータスを報告するコマンドを示すステータス報告ポインタP4を設けている。
【0069】
これら4種類のポインタP1〜P4には、各ポインタが示すコマンドキュー76の書込コマンドCMD1〜CMD4の先頭アドレスA001,A002,A004,A005が格納されている。各ポインタP1〜P4は、それぞれに対応する処理が終了すると1つ歩進される。
【0070】
即ち、コマンド受信部66によるコマンド受信完了でコマンド受信ポインタP1が歩進する。またデータ受信部68によるデータ受信完了でデータ受信ポインタP2が歩進する。また媒体書込部70による媒体書込完了で媒体書込ポインタP3が歩進する。更にステータス報告部72によるステータス報告完了でステータス報告ポインタP4が歩進する。
【0071】
このポインタP1〜P4は、コマンド受信ポインタP1、データ受信ポインタP2、媒体書込ポインタP3及びステータス報告ポインタP4の順番に配置され、各ポインタが歩進するごとに、歩進したポインタの示す処理を実行することになる。
【0072】
図7(A)のコマンドキュー76に対するポインタテーブル78の関係は、図8のように表わすことができる。図8において、コマンドキュー76に格納された4つの書込コマンドCMD1〜CMD4及び最初の空領域に対し、図7(B)のようなポインタテーブル78に対するコマンドキューのアドレスA001〜A005の設定によりポインタP1,P2,P3,P4が図示のように設定されたことに相当し、データ書込みの場合には
▲1▼次コマンド受信ポインタP1
▲2▼データ受信ポインタP2
▲3▼媒体書込ポインタP3
▲4▼ステータス報告ポインタP4
の順に進むことができる。
【0073】
したがって、前に位置するポインタが進んだことにより、そのポインタの示す処理を実施することが可能となる。図8の場合には、4つの書込コマンドCMD1〜CMD4を受信しており、書込コマンドCMD1,CMD2,CMD3,CMD4の順で実行される。ここでステータス報告ポインタP4が設定された書込コマンドCMD1は、データをディスクに書き終えてステータスを報告する状態を示している。
【0074】
媒体書込ポインタP3が示された書込コマンドCMD2,CMD3は、データをホストから受信済みで書込コマンドCMD2についてディスクに対する書込開始または書込実行中であることを示している。データ受信ポインタP2が示された書込コマンドCMD3は、ホストからデータを受信開始または受信実行中であることを示している。
【0075】
本発明の情報処理装置にあっては、このようにコマンドキュー76に対するポインタP1〜P4の設定制御によって、ホストから連続して発行された複数の書込コマンドを実行する際のデータ先取りを含む書込処理を実現する。
【0076】
図9は、図4の機能ブロックに示した本発明の情報処理装置による書込処理のタイムチャートである。
【0077】
図9(A)はホストからデータバッファに対するホストインタフェースの状態であり、ホストから2ブロックを指定した2つの書込コマンドCMD1,CMD2が連続して発行された場合を例にとっている。ホストから書込コマンドCMD1,CMD2を受信し、時刻t1でコマンド受信が完了すると、続いてホストに対し書込コマンドCMD1のデータD11,D12の転送を要求し、時刻t2でデータD11,D12の受信を終了する。
【0078】
一方、図9(B)のディスクインタフェースにあっては、時刻t1でホストから書込コマンドCMD1,CMD2を受信した後、書込コマンドCMD1の実行によるディスク書込みのためヘッド移動を開始し、ヘッド移動完了で、時刻t2でデータバッファに受信完了で格納したデータD11,D12のディスク書込みを行う。
【0079】
このデータD11,D12のディスク書込みに並行して、図4の先取処理部74は、書込コマンドCMD2のデータD21,D22の転送をホストに要求し、データD11,D12のディスク書込みに並行してホストから次の書込コマンドCMD2のデータD21,D22が先取データとして受信され、データバッファ24に格納される。
【0080】
ディスクインタフェースにおけるデータD11,D12のディスク書込みが時刻t3で終了し、続いて次の書込コマンドCMD2のデータD21,D22のホストからの受信が時刻t4で完了すると、書込コマンドCMD1のディスク書込正常終了を示すステータスSTS1をホストに報告し、時刻t5でステータス報告を完了する。
【0081】
これと同時に次の書込コマンドCMD2の実行によるヘッド移動84を開始し、ヘッド移動完了で先取りデータとして受信したデータD21,D22のディスク書込みを行ってステータスを報告することになる。 このように本発明の情報記憶装置にあっては、データのディスク書込完了でホストにステータスを報告して書込コマンドを終了させる方式であっても、現在実行中の書込コマンドによるデータのディスク書込みに並行して次に実行する書込コマンドのデータをホストから先取データとして受信でき、現在実行中のディスク書込完了に続いて次の書込コマンドのデータのディスク書込みが直ちにできる。このため、ディスク書込みの際にデータバッファにホストからのデータがないことによるディスク書込処理の遅れを防ぎ、書込処理の処理性能を大幅に向上することができる。
【0082】
図10は、図9の書込処理におけるコマンドキュー76に対するポインタ設定とデータバッファ24の状態を時系列的に示している。
【0083】
図10(A)は、図9の時刻t1であり、書込コマンドCMD2の受信完了で次コマンド受信ポインタP1が1つ進んで、次のコマンド格納位置を示している。このときデータバッファ24にはデータは受信されていない。
【0084】
図10(B)は、図9の時刻t2であり、書込コマンドCMD1のデータD11,D12の受信完了によりデータ受信ポインタP2が1つ進んで、次の書込コマンドCMD2についてデータ受信を示している。このときデータバッファ24には現在実行中の書込コマンドCMD1についてホストから受信したデータD11,D12が格納されている。
【0085】
図10(C)は、図9の時刻t3であり、データD11,D12のディスク書込みの完了により媒体書込ポインタP3が1つ進み、現在実行中の次の書込コマンドCMD2のデータD21,D22の受信を示すデータ受信ポインタP2と同じ位置にセットされている。このときデータバッファ24には次の書込コマンドCMD2のデータD21とデータD22の途中までが格納されている。
【0086】
図10(D)は、図9の時刻t4であり、次の書込コマンドCMD2のデータD21,D22の先取りが完了した時刻t4の状態である。このとき次の書込コマンドCMD2のデータ受信が完了したことで、データ受信ポインタP2は1つ進んで次コマンド受信ポインタP1と同じ位置にセットされ、書込コマンドCMD1にはステータス報告ポインタP4がセットされ、次の書込コマンドCMD2には媒体書込ポインタP3がセットされる。
【0087】
このため、ホストとのインタフェースがデータD21,D22の受信完了で空くことから、ステータス報告ポインタP4のセットにより書込コマンドCMD1についてステータスSTS1の報告が行われ、同時に媒体書込ポインタP3によって書込コマンドCMD2の実行によるデータD21,D22のディスク書込みが行われる。
【0088】
図10(E)は、図9の時刻t5の書込コマンドCMD1のステータスSTS1の報告が完了した状態である。この場合には、ステータス報告ポインタP4が1つ進んで媒体書込ポインタP3と同じ書込コマンドCMD2の位置にセットされ、データD21,データD22の媒体書込完了を待ってステータス報告ポインタP4による書込コマンドCMD2のステータス報告が行われることになる。この時データバッファ24は、書込コマンドCMD1のステータス報告終了でデータD11,D12は空き領域として扱われる。
【0089】
図11は、図4の実施形態におけるポインタテーブル78のポインタP1〜P4を用いた書込処理のフローチャートである。
【0090】
図11において、この書込処理はステップS1のコマンド受信完了割込み、ステップS3のホストデータ受信完了割込み、ステップS5のデータ書込完了割込み、ステップS7のステータス報告完了割込みの各割込みにより起動する。
【0091】
ステップS1,S3,S5,S7のいずれかで割込みがあると、ステップS2,S4,S6,S8に示すように、次コマンド受信ポインタP1、データ受信ポインタP2、媒体書込ポインタP3及びステータス報告ポインタP4のそれぞれが1つカウントアップされてコマンドキューに対する指定位置を進めるようになる。
【0092】
この図11のフローチャートによる処理を、図9に示した2つの書込コマンドCMD1,CMD2をホストから連続して発行した場合について説明すると次のようになる。まず時刻t1でホストからの書込コマンドCMD1,CMD2の受信が完了すると、ステップS1でコマンド受信完了割込みが得られ、ステップS2に進み、次コマンドポインタP1を1つ進める。
【0093】
続いてステップS9に進み、ステータス報告を行うコマンドがあるか否かチェックする。このときポインタは、図10(A)のように書込コマンドCMD1につきポインタP2,P3,P4がセットされており、ステータス報告有りの条件であるP3≠P4の条件が成立しないことから、ステップS10に進み、データ受信可能か否かチェックする。
【0094】
ステップS10でデータ受信可能となるのは、ポインタP1,P2の間にP1≠P2の関係がある時である。このとき図10(A)のようにポインタP1とP2は異なった位置を示していることから、P1≠P2が成立し、書込コマンドCMD1についてデータ受信が可能である。続いてステップS11に進み、ハードディスクドライブ自身がホストバスを使用中か否かチェックし、このときホストバスは使用していないことから、ステップS12でデータ受信を起動する。
【0095】
続いてステップS13でディスクに対するデータ書込可能か否かをチェックする。ディスクに対するデータ書込可能はポインタP2,P3の間にP2≠P3の関係が成立するときである。このとき図10(A)のようにポインタP2,P3は同じ位置にあることから、データ書込可能とはならず、一連の処理を終了する。
【0096】
次に図9の時刻t2でデータD11,D12の受信が完了すると、図11のステップS3のホストデータ受信完了割込みが得られ、ステップS4でデータ受信ポインタP2を1つ進める。これによって図10(B)のコマンドキュー76に対するポインタ設定状態となる。
【0097】
続いてステップS9に進み、ステータス報告を行うコマンドがあるか否かチェックし、この場合にはステータス報告を行うコマンドはないことから、ステップS10でデータ受信可能か否かチェックする。このとき図10(B)のようにポインタP1,P2は異なる位置にあることからデータ受信可能であり、ステップS11でハードディスクドライブ自身がホストバスを使用中でないことから、ステップS12で次の書込コマンドCMD2のデータ受信を起動する。
【0098】
続いてステップS13でディスクに対するデータ書込可能か否かチェックし、このとき図10(B)のようにポインタP2とP3は異なる位置にあることからデータ書込みは可能であり、ステップS14で、既に受信したデータD11,D12のディスク書込みを起動する。
【0099】
次に図9の時刻t3でデータD11,D12のディスク書込みが完了すると、図11のステップS5のデータ書込完了割込みが得られ、ステップS6で媒体書込ポインタP3を1つ進める。これによって図10(C)のコマンドキュー76に対するポインタ設定状態となる。
【0100】
次にステップS9に進み、ステータス報告を行うコマンドがあるか否かチェックする。この場合には図10(C)のようにステータス報告ポインタP4がコマンドCMD1に設定され且つポインタP3は異なる位置にあることから、ステータス報告有りが判別され、ステップS15に進む。
【0101】
ステップS15にあっては、ハードディスクドライブ自身がホストバスを使用中か否かチェックする。このとき図9の時刻t3にあっては、ホストバスは書込コマンドCMD2のデータD22の受信中にあり、ホストバスが使用中であることから、ステップS16のステータス起動は行わず、ステップS13に進む。
【0102】
ステップS13にあってはデータ書込可能か否かをチェックするが、この場合には図10(C)のようにポインタP2,P3は同じ書込コマンドCMD2の位置にあるためデータ書込みは可能ではなく、ステップS14をスキップして一連の処理を終了する。
【0103】
次に図9の時刻t4で書込コマンドCMD2のデータD21,D22の受信が完了したとすると、図11のステップS3でホストデータ受信完了割込みが得られ、ステップS4でデータ受信ポインタP2を1つ進める。
【0104】
これによって図10(D)のコマンドキュー76に対するポインタ設定状態となる。続いてステップS9に進み、ステータス報告有りが判別され、ステップS15に進み、このときホストからのデータ受信は完了していることからホストバスは使用中になく、したがってS16でステータス報告を起動する。
【0105】
次にステップS13に進み、データ書込可能か否かをチェックするが、このとき図10(D)のようにポインタP2とP3は異なる位置にあるため、ポインタP3がセットされた書込コマンドCMD2についてデータ書込みが可能であり、ステップS14でデータD21,D22のディスク書込みを起動する。
【0106】
次に図9の時刻t5で書込コマンドCMD1についてステータスSTS1の報告が完了すると、図11のステップS7のステータス報告完了割込みが得られ、ステータス報告ポインタP4がステップS8で1つ進められ、これによって図10(E)のコマンドキュー76に対するポインタ設定状態となる。
【0107】
続いてステップS9に進み、ステータス報告の有無をチェックするが、この場合にポインタP3,P4は同じ書込コマンドCMD2にセットされていることからステータス報告はなく、ステップS10で現在受信可能か否かチェックするが、空位置にポインタP1,P2がセットされていることから、ステップS12のデータ受信起動は行わず、ステップS13でデータ書込可能か否かチェックする。
【0108】
ここでポインタP2,P3は異なる位置にあるが、既に書込コマンドCMD2についてはディスク書込みを起動していることから、ステップS14のデータ書込みの起動は行わず、一連の処理を終了する。
【0109】
図12は、先取コマンドの最適化処理の説明図である。図12(A)は、コマンドキュー76の格納状態であり、この場合にはホストから7つの書込コマンドCMD1〜CMD7が連続して発行された状態である。そしてデータ受信ポインタP2で示す書込コマンドCMD6がホストからデータ受信を開始または受信中であり、それより前の書込コマンドCMD2〜CMD5の4つについてはホストから既にデータを先取り受信してディスク書込みを待っている状態にある。
【0110】
先頭の書込コマンドCMD1は、ポインタP3によってディスクにデータを書込中である。即ち、書込コマンドCMD1はディスクにデータを書込中、書込コマンドCMD2からCMD5がデータ先取り済み、書込コマンドCMD6がデータをホストから受信中、書込コマンドCMD7がホストからのデータ受信を待っている状態である。
【0111】
このとき書込コマンドCMD1の実行によりディスク書込みを行っている間に、データ先取り済みの書込コマンドCMD2からCMD5の実行順序を現在実行中の書込コマンドCMD1のディスク書込終了位置から一番アクセス時間の短い順に並び替える。
【0112】
例えば書込コマンドCMD4が一番アクセス時間が短かった場合、図12(B)のように書込コマンドCMD2と書込コマンドCMD4の順序を入れ替え、書込コマンドCMD1のディスク書込終了後に書込コマンドCMD4のディスク書込みを終了する。
【0113】
図13は、本発明の情報記憶装置における先取コマンド最適化処理のフローチャートである。まずステップS1で、現在ディスクにデータ書込中のセクタ最終位置と次にアクセスするセクタ開始位置との角度差θt[rad]を算出する。この角度差θtの算出は、セクタアドレスの差を角度に変換することで算出できる。
【0114】
次にステップS2で、現在実行中のセクタ最終位置から次の開始セクタまでのシーク予測時間tsをトラックアドレスから算出する。次にステップS3で、シーク予測時間tsの間に次のセクタ先頭位置が移動する回転角θs[rad]を算出する。このセクタ回転角θsは、ディスク媒体の角速度をω[rad/s]とすると、
θs=ω×ts
で求まる。
【0115】
次にステップS4で、現在のセクタ終了位置と次のセクタ開始位置との角度差θtとシーク予測時間tsから算出した次セクタ先頭位置の回転角θsの大小関係を比較する。即ち、セクタ終了位置と次のセクタ開始位置との角度差θtに対し、シーク予測時間tsから算出した次セクタ先頭位置の回転角θsが等しいかそれ以下であれば、次セクタ先頭位置がヘッドに来るまでにシークが完了し、ディスク回転待ちが必要ない。
【0116】
これに対しセクタ終了位置と次のセクタ開始位置との角度差θtをシーク予測時間tsから求めた次セクタ先頭位置のθsが超えた場合には、ディスクの回転待ちをすることになる。
【0117】
ステップS4でセクタ終了位置と次のセクタ開始位置との角度差θtとシーク予測時間tsから算出した次セクタ先頭位置の回転角θsに等しいかそれより大きい場合には、ステップS5に進み、アクセス時間tをシーク予測時間tsに角度差(θt−θs)を角速度ωで割った時間を加えた値として算出する。
【0118】
これに対し角度差θtがシーク予測時間tsから求めた回転角θsより大きかった場合には、ステップS6に進み、シーク時間tsに1回転を示す2πから角度差(θt−θs)を差し引いた角度を角速度ωで割った時間を加えた回転待ち時間を含むアクセス時間を算出する。
【0119】
次にステップS7で全ての先取コマンドについて処理したか否かチェックし、全ての処理が終了するまでステップS1〜S6の処理を繰り返す。ステップS7で全ての先取コマンドについてアクセス時間の算出処理が終了したならば、ステップS8で、最もアクセス時間の短い先取りコマンドを次に実行するコマンド位置に並び替える。
【0120】
このように、ある書込コマンドのディスク書込実行中にディスク書込待ち状態にあるデータ先取り済みの先取りコマンドについてアクセス時間を算出して最もアクセス時間の短い書込コマンドを次に実行する書込コマンドの位置に並び替えることで、処理性能を大幅に向上できる。
【0121】
図14は、本発明の情報記憶装置で使用するデータバッファのセグメント分割の説明図である。図14(A)のデータバッファ24にあっては、データバッファ24を例えば8つのセグメント82−1〜82−8に分割している。これらのセグメント82−1〜82−8は、先頭のセグメント82−1に示すように、8つのサブセグメント84−1〜84−8に更に分割されている。
【0122】
ホストから連続して複数の書込コマンドが発行された場合には、この連続して発行された複数の書込コマンドについて1つのセグメントを使用し、各書込コマンドについてサブセグメント84−1〜84−8を個別に使用する。サブセグメントのサイズは最初の書込コマンドの受信で決定し、例えば最初の書込コマンドで指定されたデータブロック数と同じサイズのサブセグメントに分割する。
【0123】
これによって、図14(A)の場合にはセグメント82−1について最初の書込コマンドに加えて後続して7つの書込コマンドのデータを先取りすることができる。具体的には、データ先取りを実施する前に空いているサブセグメントをサーチし、コマンド情報に使用するサブセグメントをセットしておく。書き込むときにはサブセグメントの情報を基にデータを書き込む。
【0124】
図14(B)は、データバッファ24のデータ先取りのためのサブセグメントの分割の他の実施形態である。図14(A)にあっては、最初の書込コマンドのデータ受信でサブセグメントを等間隔に決めたため、サブセグメントの大きさ以上のブロックサイズの書込コマンドが発行された場合、データをバッファに格納することができないため、その時点でデータ先取りは終了してしまう。
【0125】
そこで図14(B)にあっては、セグメント情報としてサブセグメントの先頭位置と大きさをセットできるようにすれば、ブロックサイズが一定でなくともサブセグメントを指定ブロックサイズに合わせてセットすることでデータ先取りを実施することができる。
【0126】
例えば図14(B)のセグメント82−1のように、サブセグメント84−1〜84−4のそれぞれは、それぞれの書込コマンドのブロックサイズに対応してサブセグメント先頭位置と大きさをセットすることでダイナミックにサブセグメントが確保できる。
【0127】
図15は、本発明の情報記憶装置の他の実施形態の機能ブロック図であり、この実施形態にあっては、ホストから発行された書込コマンドをホストからのデータ受信完了によって終了するデータ受信コマンド完了方式の情報記憶装置に本発明による実行順序の最適化とデータバッファ分割を適用したことを特徴とする。
【0128】
図15において、この実施形態の情報記憶装置は、コマンド受信部100、データ受信部102、媒体書込部104、ステータス報告部106で構成され、制御記憶18にはコマンドキュー76とポインタテーブル78が設けられている。
【0129】
コマンド受信部100は、ホストから連続して発行された複数の書込コマンドを受信してコマンドキュー76に格納する。データ受信部102は、コマンドキュー76の先頭位置からの書込コマンドの実行によりデータを受信してデータバッファ24に格納する。
【0130】
ステータス報告部106は、データ受信部102によるホストからのデータ受信完了でステータスをホストに報告して、実行中の書込コマンドを終了させる。媒体書込部104は、データ受信部によるホストからのデータ受信完了で受信データの媒体書込みを開始する。
【0131】
これに加えて図15の実施形態にあっては最適化部108が設けられる。最適化部108は、コマンドキュー76に複数の先取データ受信済みの先取書込コマンドがある場合、複数の先取書込コマンドの実行順序をアクセス時間の短い順に並び替えて最適化する。
【0132】
具体的には、図12(A)に示したように、データ先取済みの書込コマンドCMD2〜CMD5について、現在ディスク書込中の書込コマンドCMD1の書込終了セクタ位置からのアクセス時間が最も短い書込コマンドを次に実行する書込コマンドとなるように順番を並び替え、例えば書込コマンドCMD4のアクセス時間が最も短かった場合には、図12(B)のように次に実行する書込コマンドを書込コマンドCMD4に並び替える。この先取コマンドの最適化処理は図13のフローチャートに従って行われる。
【0133】
更に図15の実施形態にあっては、データバッファ24のセグメント分割として、図14(A)に示した最初の書込コマンドのブロック数で固定的にサブセグメントを分割する構成、あるいは図14(B)のように各書込コマンドごとにサブセグメントの先頭位置とブロック数を割り当てて動的にサブセグメントを分割する方式のいずれかを採用する。
【0134】
尚、図4のディスク書込完了でステータスを報告して書込コマンドを終了させる方式と、図15のホストからのデータ受信完了でステータスを報告して書込コマンドを終了させる方式については、同じハードディスクにいずれかのコマンド終了方式のモードを切替設定するスイッチ等の手段を設けておき、必要に応じて図4の実施形態あるいは図15の実施形態を選択的に使用できるようにしてもよい。もちろん、ハードディスクドライブごとに個別に図4の実施形態または図15の実施形態としてもよい。
【0135】
また本発明は、その目的と利点を損なわない適宜の変形を含み、更に実施形態に示した数値による限定は受けない。
【0136】
【発明の効果】
以上説明してきたように本発明によれば、ディスクへの書込完了によってホストから発行した書込コマンドを終了させる装置について、ディスク書込みの完了を待たずに次の書込コマンドについてホストからデータを受信するデータ先取りを行うことにより、ディスク書込みの際にデータがデータバッファにないことによる書込処理の遅れを防止し、複数の書込コマンドを連続して発行した場合の各書込コマンドのアクセス時間が短い場合やホストに対し複数の情報記憶装置を接続した場合に発生し易い処理能力の低下を防ぎ、書込コマンドに対し処理性能の高い情報記憶装置を実現することができる。
【0137】
また、ホストからデータ先取りが済んだ複数の書込コマンドについて、次に実行するコマンドをアクセス時間の最も短いコマンドとなるように並び替えることで、先取書込コマンドの最適化ができ、データ先取りによる性能向上とコマンド実行順序の最適化による処理性能の向上の両方をもって、より高性能な書込処理が実現できる。
【0138】
更に、データ先取りを行った場合のバッファ領域の使用の仕方として、ディスク書込中の書込コマンドと先取コマンドで使用するバッファ領域を同一としたことにより、書込コマンドの先取処理によってデータバッファの他のセグメントのデータを破壊してしまうことを防止でき、リードバッファとしてのデータバッファの使用を最大限に生かすことでリード性能の低下を確実に防止できる。
【図面の簡単な説明】
【図1】本発明の原理説明図
【図2】本発明が適用されるハードディスクドライブのブロック図
【図3】図2のハードディスクコントローラのブロック図
【図4】ディスク書込完了でホストからのコマンドを終了させる本発明の実施形態の機能ブロック図
【図5】本発明で使用するコマンドのフォーマット説明図
【図6】本発明で使用するステータスのフォーマット説明図
【図7】図4の制御記憶に設けたコマンドキューのポインタテーブルの説明図
【図8】図7のコマンドキューに対するポインタのセット状態の説明図
【図9】図4の実施形態によるデータ先取処理のタイムチャート
【図10】図9のタイムチャートの時刻t1〜t5におけるコマンドキューとデータバッファの説明図
【図11】ポインタ制御による図4の書込処理のフローチャート
【図12】データ先取済みの書込コマンドを最適化処理の説明図
【図13】先取コマンド最適化処理のフローチャート
【図14】先取データを格納するデータバッファ構成の説明図
【図15】ホストからのデータ受信完了でコマンドを終了させる本発明の他の実施形態の機能ブロック図
【図16】ホストからのデータ受信完了でコマンドを終了させる従来装置の書込状態のタイムチャート
【図17】ディスク書込完了でコマンドを終了させる従来装置の書込状態のタイムチャート
【符号の説明】
10:SCSIコントローラ
12:ドライブコントロール
14:ディスクエンクロージャ
16;MCU
18:フラッシュメモリ(制御記憶)
20:プログラムメモリ
22:ハードディスクコントローラ
24:データバッファ
26:ドライブインタフェースロジック
28:DSP
30:リード/ライトLSI
32:サーボ復調部
34:サーボドライバ
36:ヘッドIC
38−1〜38−6:複合ヘッド
40−1〜40−3:磁気ディスク
42:スピンドルモータ
44:ボイスコイルモータ(VCM)
46:マイクロプロセッサ・インタフェース・ロジック
48:データフローコントロール
50:バッファコントローラ
52:SCSIシーケンサ
54:ディスクフォーマッタ
56:リード・ソロモンECCエンジン
58:SCSIコントローラ
60:ディスクポート
62:データバッファポート
64:SCSIポート
66,100:コマンド受信部
68,102:データ受信部
70,104:媒体書込部
72,106:ステータス報告部
74:先取処理部
75,108:最適化処理部
76:コマンドキュー
78:ポイタンテーブル
Claims (10)
- ホストから発行された書込コマンドを媒体への書込完了によって終了する情報記憶装置に於いて、
ホストから連続して発行された複数の書込コマンドを受信してコマンドキューに格納するコマンド受信部と、
前記コマンドキューの先頭位置からの書込コマンドによりホストからデータを受信してデータバッファに格納するデータ受信部と、
前記データ受信部によるデータの受信完了で受信データの媒体書込みを開始する媒体書込部と、
前記媒体書込部による書込完了でステータスをホストに報告して実行中の書込コマンドを終了させるステータス報告部と、
前記媒体書込部による受信データの媒体書込完了を待たずに、次の書込コマンドによりホストからデータを先取データとして受信して前記データバッファに格納する先取処理部と、
を備え、
前記データバッファを所定サイズの複数の領域に分割すると共に、ホストから連続して発行された複数の書込コマンドを前記コマンドキューに格納した際には、媒体書込中のコマンドと先取コマンドの各々に対応するデータのデータサイズに応じて特定のデータバッファ領域をサブ領域に分割して使用することを特徴とする情報記憶装置。 - 請求項1記載の情報記憶装置に於いて、更に、前記コマンドキューに対し、次に受信するコマンド格納位置を示す次コマンド受信ポインタP1、ホストからのデータ受信開始または受信中のコマンドを示すデータ受信ポインタP2、前記データバッファから媒体へのデータ書込開始または書込中のコマンドを示す媒体書込ポインタP3、及び次にステータスを報告するコマンドを示すステータス報告ポインタP4を設け、
前記コマンド受信部によるコマンド受信完了で前記コマンド受信ポインタP1を歩進し、前記データ受信部によるデータ受信完了で前記データ受信ポインタP2を歩進し、前記媒体書込部による媒体書込完了で前記媒体書込ポインタP3を歩進し、更に前記ステータス応答部によるステータス報告完了で前記ステータス報告ポンイタP4を歩進し、
前記コマンド受信ポインタP1、データ受信ポインタP2、媒体書込ポインタP3及びステータス報告ポンイタP4の順番に配置し、各ポインタが歩進する毎に、歩進したポインタの示す処理を実行することを特徴とする情報記憶装置。 - 請求項1記載の情報記憶装置に於いて、前記コマンドキューに複数の先取データ受信済みの先取書込コマンドがある場合、前記複数の先取書込コマンドに対応するデータを媒体に書込む実行順序をアクセス時間の短い順に並び替えて最適化する最適化部を設けたことを特徴とする情報記憶装置。
- 請求項3記載の情報記憶装置に於いて、前記最適化部は、前記先取書込コマンドのアクセス時間を、先行するコマンドに対応するデータの媒体書込完了から次のコマンドに対応するデータの媒体書込み開始までの時間として求め、アクセス時間の短い順に媒体に書込む実行順序を変えて最適化することを特徴とする情報記憶装置。
- 請求項1記載の情報記憶装置に於いて、前記データバッファを複数の領域に分割し、ホストから連続して発行された複数の書込コマンドを前記コマンドキューに格納した際には、媒体書込中のコマンドに対応するデータで使用するデータバッファ領域と、先取コマンドに対応するデータで使用するデータバッファ領域を同一としたことを特徴とする情報記憶装置。
- 請求項5記載の情報記憶装置に於いて、前記データバッファを所定サイズの複数の領域に分割すると共に、各領域を最初に格納した書込コマンドのデータで決まる所定サイズで細分化したサブ領域に分割し、ホストから連続して発行された複数の書込コマンドを前記コマンドキューに格納した際には、媒体書込中のコマンドと先取コマンドの各々に対応するデータで特定のデータバッファ領域のサブ領域を使用することを特徴とする情報記憶装置。
- ホストから発行された書込コマンドを、ホストからのデータ受信完了によって終了する情報記憶装置に於いて、
ホストから連続して発行された複数の書込コマンドを受信してコマンドキューに格納するコマンド受信部と、
前記コマンドキューの先頭位置からの書込コマンドによりホストからデータを受信してデータバッファに格納するデータ受信部と、
前記データ受信部によるデータ受信完了でステータスをホストに報告して実行中の書込コマンドを終了させるステータス報告部と、
前記データ受信部によるデータの受信完了で受信データの媒体書込みを開始する媒体書込部と、
前記コマンドキューに複数の先取データ受信済みの先取書込コマンドがある場合、前記複数の先取書込コマンドに対応するデータを媒体に書込む実行順序をアクセス時間の短い順に並び替えて最適化する最適化部とを設け、
前記データバッファを所定サイズの複数の領域に分割すると共に、ホストから連続して発行された複数の書込コマンドを前記コマンドキューに格納した際には、媒体書込中のコマンドと先取コマンドの各々に対応するデータのデータサイズに応じて特定のデータバッファ領域をサブ領域に分割して使用することを特徴とする情報記憶装置。 - 請求項7記載の情報記憶装置に於いて、前記最適化部は、前記先取書込コマンドのアクセス時間を、先行するコマンドに対応するデータの媒体書込完了から次のコマンドに対応するデータの媒体書込み開始までの時間として求め、アクセス時間の短い順に媒体に書込む実行順序を変えて最適化することを特徴とする情報記憶装置。
- 請求項7記載の情報記憶装置に於いて、前記データバッファを複数の領域に分割し、ホストから連続して発行された複数の書込コマンドを前記コマンドキューに格納した際には、媒体書込中のコマンドに対応するデータで使用するデータバッファ領域と、先取コマンドに対応するデータで使用するデータバッファ領域を同一としたことを特徴とする情報記憶装置。
- 請求項9記載の情報記憶装置に於いて、前記データバッファを所定サイズの複数の領域に分割すると共に、各領域を最初に格納した書込コマンドのデータに基づく所定サイズで細分化したサブ領域に分割し、ホストから連続して発行された複数の書込コマンドを前記コマンドキューに格納した際には、媒体書込中のコマンドと先取コマンドの各々に対応するデータで特定のデータバッファ領域のサブ領域を使用することを特徴とする情報記憶装置。
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP04961399A JP3745552B2 (ja) | 1999-02-26 | 1999-02-26 | 情報記憶装置 |
KR1019990033904A KR100327182B1 (ko) | 1999-02-26 | 1999-08-17 | 정보 기억 장치 |
US09/376,028 US6389508B1 (en) | 1999-02-26 | 1999-08-17 | Information storing apparatus having a data prewrite unit |
DE19945993A DE19945993B4 (de) | 1999-02-26 | 1999-09-24 | Plattenschreibvollendungssystem |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP04961399A JP3745552B2 (ja) | 1999-02-26 | 1999-02-26 | 情報記憶装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2000250715A JP2000250715A (ja) | 2000-09-14 |
JP3745552B2 true JP3745552B2 (ja) | 2006-02-15 |
Family
ID=12836097
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP04961399A Expired - Fee Related JP3745552B2 (ja) | 1999-02-26 | 1999-02-26 | 情報記憶装置 |
Country Status (4)
Country | Link |
---|---|
US (1) | US6389508B1 (ja) |
JP (1) | JP3745552B2 (ja) |
KR (1) | KR100327182B1 (ja) |
DE (1) | DE19945993B4 (ja) |
Families Citing this family (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6560657B1 (en) * | 1999-12-23 | 2003-05-06 | Intel Corporation | System and method for controlling peripheral devices |
US7406547B2 (en) * | 2000-08-09 | 2008-07-29 | Seagate Technology Llc | Sequential vectored buffer management |
US6807586B2 (en) * | 2002-01-09 | 2004-10-19 | International Business Machines Corporation | Increased computer peripheral throughput by using data available withholding |
US6925539B2 (en) | 2002-02-06 | 2005-08-02 | Seagate Technology Llc | Data transfer performance through resource allocation |
JP4170044B2 (ja) * | 2002-08-16 | 2008-10-22 | 富士通株式会社 | ディスク記憶装置 |
US7346714B2 (en) | 2002-09-05 | 2008-03-18 | Canon Kabushiki Kaisha | Notification of completion of communication with a plurality of data storage areas |
US6938184B2 (en) * | 2002-10-17 | 2005-08-30 | Spinnaker Networks, Inc. | Method and system for providing persistent storage of user data |
JP2005215729A (ja) * | 2004-01-27 | 2005-08-11 | Hitachi Global Storage Technologies Netherlands Bv | データ伝送制御方法及び記憶装置 |
KR100585132B1 (ko) * | 2004-02-21 | 2006-06-01 | 삼성전자주식회사 | 최적화된 기록 순서 재배열 방법 및 장치, 기록 방법, 기록 매체 |
US7009795B2 (en) * | 2004-02-26 | 2006-03-07 | Hitachi Global Storage Technologies Netherlands, B.V. | System and method for correcting for head tilt in HDD |
JP2006127401A (ja) * | 2004-11-01 | 2006-05-18 | Fujitsu Ltd | 媒体記憶装置、媒体記憶装置のキャッシュセグメント切り替え方法、及び媒体記憶システム |
US20060271718A1 (en) * | 2005-05-27 | 2006-11-30 | Diplacido Bruno Jr | Method of preventing error propagation in a PCI / PCI-X / PCI express link |
JP4740766B2 (ja) * | 2006-02-27 | 2011-08-03 | 富士通株式会社 | データ受信装置、データ送受信システム、データ送受信システムの制御方法及びデータ受信装置の制御プログラム |
US9329800B2 (en) | 2007-06-29 | 2016-05-03 | Seagate Technology Llc | Preferred zone scheduling |
US20110004718A1 (en) * | 2009-07-02 | 2011-01-06 | Ross John Stenfort | System, method, and computer program product for ordering a plurality of write commands associated with a storage device |
US11669272B2 (en) * | 2019-05-31 | 2023-06-06 | Micron Technology, Inc. | Predictive data transfer based on availability of media units in memory sub-systems |
KR20220104511A (ko) * | 2021-01-18 | 2022-07-26 | 에스케이하이닉스 주식회사 | 컨트롤러 및 이를 포함하는 메모리 시스템 |
JP2023136082A (ja) * | 2022-03-16 | 2023-09-29 | キオクシア株式会社 | メモリシステムおよび制御方法 |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5636355A (en) * | 1993-06-30 | 1997-06-03 | Digital Equipment Corporation | Disk cache management techniques using non-volatile storage |
JP2905373B2 (ja) * | 1993-10-01 | 1999-06-14 | 富士通株式会社 | ディスク制御装置及びその制御方法 |
US5841598A (en) * | 1994-10-28 | 1998-11-24 | Olympus Optical Co., Ltd. | Information recording/reproducing apparatus and data processing method |
JPH1021012A (ja) * | 1996-06-28 | 1998-01-23 | Toshiba Corp | 磁気ディスク装置及び同装置のコマンド処理方法 |
US6078998A (en) * | 1997-02-11 | 2000-06-20 | Matsushita Electric Industrial Co., Ltd. | Real time scheduling of prioritized disk requests |
US6092149A (en) * | 1997-05-28 | 2000-07-18 | Western Digital Corporation | Disk drive cache system using a dynamic priority sequential stream of data segments continuously adapted according to prefetched sequential random, and repeating types of accesses |
US6145052A (en) * | 1997-11-04 | 2000-11-07 | Western Digital Corporation | Disk drive with adaptive pooling for command reordering |
US6170042B1 (en) * | 1998-02-24 | 2001-01-02 | Seagate Technology Llc | Disc drive data storage system and method for dynamically scheduling queued commands |
JPH11273243A (ja) * | 1998-03-20 | 1999-10-08 | Toshiba Corp | ディスク装置及び同装置に適用されるライトバッファ制御方法 |
US6272565B1 (en) * | 1999-03-31 | 2001-08-07 | International Business Machines Corporation | Method, system, and program for reordering a queue of input/output (I/O) commands into buckets defining ranges of consecutive sector numbers in a storage medium and performing iterations of a selection routine to select and I/O command to execute |
-
1999
- 1999-02-26 JP JP04961399A patent/JP3745552B2/ja not_active Expired - Fee Related
- 1999-08-17 KR KR1019990033904A patent/KR100327182B1/ko not_active IP Right Cessation
- 1999-08-17 US US09/376,028 patent/US6389508B1/en not_active Expired - Lifetime
- 1999-09-24 DE DE19945993A patent/DE19945993B4/de not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
KR100327182B1 (ko) | 2002-03-13 |
KR20000056966A (ko) | 2000-09-15 |
US6389508B1 (en) | 2002-05-14 |
DE19945993B4 (de) | 2005-08-04 |
JP2000250715A (ja) | 2000-09-14 |
DE19945993A1 (de) | 2000-09-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3745552B2 (ja) | 情報記憶装置 | |
US6845405B1 (en) | Disk drive executing part of a linked disk command | |
US7814271B2 (en) | Disk controller configured to perform out of order execution of write operations | |
US6842801B2 (en) | System and method of implementing a buffer memory and hard disk drive write controller | |
US7480754B2 (en) | Assignment of queue execution modes using tag values | |
US9298393B2 (en) | Buffer management for increased write speed in large sector data storage device | |
US6789163B2 (en) | Optimizing data transfer performance through partial write command purging in a disc drive | |
US20060106980A1 (en) | Media drive and command execution method thereof | |
US20030149838A1 (en) | Data transfer performance through resource allocation | |
US6957311B2 (en) | Data storage apparatus, computer apparatus, data processing apparatus, and data processing method | |
US6795264B2 (en) | LBA tracking for system data management | |
JPH10149260A (ja) | ディスクドライブにおける読出キャッシュ方式 | |
JP5030387B2 (ja) | データ記憶装置 | |
US6957300B2 (en) | Reducing delay of command completion due to overlap condition | |
JP2000235456A (ja) | 磁気ディスク装置およびそのディスクアクセス方法 | |
JPH11110138A (ja) | 記憶制御装置 | |
JP2012038330A (ja) | ハードディスクドライブ | |
JPH07295916A (ja) | ディスク制御方式 | |
JP2005071399A (ja) | 情報記録再生装置におけるアクセス制御装置および方法 | |
JPH0417534B2 (ja) | ||
JPH09171487A (ja) | 磁気ディスク装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20040930 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20050510 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20050711 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20051004 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20051006 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20051025 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20051117 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20091202 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20091202 Year of fee payment: 4 |
|
S111 | Request for change of ownership or part of ownership |
Free format text: JAPANESE INTERMEDIATE CODE: R313111 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20091202 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20101202 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20101202 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20111202 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20121202 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20121202 Year of fee payment: 7 |
|
S531 | Written request for registration of change of domicile |
Free format text: JAPANESE INTERMEDIATE CODE: R313531 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20121202 Year of fee payment: 7 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
S111 | Request for change of ownership or part of ownership |
Free format text: JAPANESE INTERMEDIATE CODE: R313113 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20121202 Year of fee payment: 7 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20121202 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20131202 Year of fee payment: 8 |
|
LAPS | Cancellation because of no payment of annual fees |