JP2003518313A - ディスク駆動機構のバッファとの間のデータの転送を管理するバッファ管理システム - Google Patents

ディスク駆動機構のバッファとの間のデータの転送を管理するバッファ管理システム

Info

Publication number
JP2003518313A
JP2003518313A JP2001547242A JP2001547242A JP2003518313A JP 2003518313 A JP2003518313 A JP 2003518313A JP 2001547242 A JP2001547242 A JP 2001547242A JP 2001547242 A JP2001547242 A JP 2001547242A JP 2003518313 A JP2003518313 A JP 2003518313A
Authority
JP
Japan
Prior art keywords
buffer
sector
data
disk
segment
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Withdrawn
Application number
JP2001547242A
Other languages
English (en)
Inventor
ウィリアムズ、スティーブン、スコット
クック、ブレット、アラン
モーラー、グレゴリー、ポール
ヘインズ、ジョナサン、ウィリアムズ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Seagate Technology LLC
Original Assignee
Seagate Technology LLC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Seagate Technology LLC filed Critical Seagate Technology LLC
Publication of JP2003518313A publication Critical patent/JP2003518313A/ja
Withdrawn legal-status Critical Current

Links

Classifications

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

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 For Digital Recording And Reproducing (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

(57)【要約】 ディスク駆動機構においてバッファとの間のデータの転送を管理する方法及びシステムを開示する。ベクタードバッファ管理(VBM)システムの動作はソフトウェアベースの制御モジュールによって監督される。制御モジュールは、バッファテーブルをバッファセクタに分割することによってバッファテーブルを生成し維持する。バッファセクタは更に、バッファテーブルが分割されるバッファセグメントまたは円形状にリンクされたリストに配置される。制御モジュールは、アプリケーション・モジュールをバッファテーブル間に実施することによって転送を果たす。一旦アプリケーション・モジュールを制御モジュールによって索引セクタに任意に位置決めすると、アプリケーション・モジュールが索引セクタによって識別された特別のバッファセグメントをウォーク・スルーするときに、データ転送が達成される。バッファセグメント間のアプリケーション・モジュールの特定の制御は、ホスト及びディスク次ポインタにそれぞれ結合しているものであるが、ホスト及びディスクアドレス・ポインタを介して監督される。

Description

【発明の詳細な説明】
【0001】 (発明の分野) 本出願は、一般に、ディスク駆動機構キャッシュング技術に関し、特に、ホス
トコンピュータとディスク駆動機構のディスクとの間のデータの転送を制御する
バッファ管理システムに関する。
【0002】 (発明の背景) ディスク駆動機構において、データは、磁化可能媒体でコートされた1つ以上
のディスクに記憶される。データは、ディスクに対するヘッドの移動のための半
径方向アクチュエータに取り付けられた(代表的には読出し/書込みヘッドと称
される)変換器のアレイによって、ディスクに書き込まれる。データが読出し/
書込みヘッドによってディスクから読み出される時間までに、情報はディスク上
の複数の同心円状のトラックに記憶される。同心円状のトラックの各々は、一般
に、複数の個別のアドレス指定可能なデータセクタに分割される。ヘッドは、所
望のトラックと(多くの構成要素の中でもとりわけホストコンピュータを含んで
いる)外部環境との間でデータを転送するのに使用される。読出し動作の間、ヘ
ッドは、ディスクトラックに予め書き込まれたデータを検出するとともに、情報
を外部環境に転送する。書込み動作の間、データはディスクトラックに書き込ま
れる。一旦データがディスクに書き込まれると、各セクタは、単一の書込み動作
の間にディスクに書き込むことができる絶対的最小量であるデータのブロックを
保持する。一般にチャンク(chunk)と称される隣接ブロックまたはクラス
タは、一般に、コマンドと称される単一の書込み動作の間にディスクに書き込ま
れる。これらの動作(読出し及び書込み)の双方に重大なことは、所望のトラッ
クの中心の上方のヘッドに関する正確な位置決めである。
【0003】 一般に、ヘッドはアクチュエータ音声コイルモータによってディスク面に対し
て位置決めされる。音声コイルモータは、ピボット・シャフト回りにアクチュエ
ータ本体を回動させるものであり、こうしてディスク面を横切ってヘッドを移動
させる。こうして、アクチュエータは、ディスクの内径及び外径の間で正確に前
後してヘッドを移動させることができるようになっている。アクチュエータ・ア
ームは、このアクチュエータ・アームの後端の音声コイルモータに送られる制御
信号によって駆動される。サーボ制御システムは、ディスク駆動機構のディスク
面から読み出されたサーボ信号を用いてアクチュエータの位置を検出するととも
にディスク上方のヘッドの移動を制御するのに使用される。サーボ制御システム
は、ディスクに記憶されたサーボ情報に依存している。この情報からの各信号は
、一般に、ディスクに対するヘッドの現在位置(即ち、現在のトラック位置)を
示している。サーボ制御システムは、検出された情報を用いて、ヘッド位置を維
持するか、所望のトラック上方に中心を置く新しい位置にヘッドを最適に移動さ
せる方法を決定する。次いで、サーボ制御システムは、制御信号を音声制御モー
タに引き渡して、所望の新しいトラック上方にヘッドを位置決めするか、所望の
現在のトラックの上方の位置を維持する。
【0004】 ホストコンピュータとディスクとの間のファイルの転送は、2レベル転送方式
によって特徴付けられる多レベル設定において制御される。肉眼レベルでは、ト
ラックセクタは、ファイルが分割されたデータセクタを含むように選択される。
詳述すると、顕微鏡感覚では、トラックに沿った各セルが磁化されて、引き続く
読出しのためにファイルのビット構造に対応するようになっている。ディスク駆
動機構は、一般に、この2レベル転送方式を実施するためにバッファを含んでい
る。バッファを設ける目的は、ホストコンピュータとディスクとの間のデータの
転送の間にデータのセクタを受け付けることと、次いで、データを適正な構成要
素(即ち、ホストコンピュータまたはディスク)に転送することである。
【0005】 一般に、システム・マイクロプロセッサは、データが読み出されたり書き込ま
れたりされるべきトラック上にセクタを位置決めするように設計されたプログラ
ミングを含んでいる。マイクロプロセッサはまた、セクタでの(即ち、肉眼レベ
ル(マクロレベル))でのファイルの転送を制御するようにプログラムされてい
る。バッファとの間のデータの転送は1文字1文字式に達成される。1文字づつ
の環境において転送を達成する従来の方法は、バッファ制御装置、ホストインタ
ーフェース制御装置及びディスクインターフェース制御装置のような状態マシー
ンの使用を介してのものである。
【0006】 米国特許第5,276,662号に述べられているように、ホストとディスク
との間のファイルの転送は、システム・マイクロプロセッサの全体制御及び状態
マシーン制御装置のより正確な制御の下に実行される。例えば、ファイルをディ
スクに書き込むべき場合には、ホストコンピュータは、ファイルが書き込まれる
べきトラック上の各セクタをマイクロプロセッサが定義できるようにする一般化
された情報でシステム・プロセッサを促す。次いで、マイクロプロセッサは、セ
クタレベルでの転送に帰着する各動作を実施することによって、転送を開始する
。この種の動作は、ファイルを受信すべき選択されたトラックの上方にヘッドを
位置決めするようにサーボ制御システムに指示することと、転送で使用されるべ
きバッファのセグメントを識別することとを含んでいる。マイクロプロセッサは
、ホストインターフェース制御装置に指令して、バッファセグメントへのデータ
の転送を開始させる。従来、バッファ制御装置及びホストコンピュータと連動し
て作動するホストインターフェース制御装置は、バッファセグメントのセクタブ
ロックへのファイルの文字の転送においてバッファに対する正確な制御をもたら
す。ディスクインターフェース制御装置は、ファイルを受信すべきトラックの上
方に一旦読出し/書込みヘッドを位置決めすると、システム・マイクロプロセッ
サによって出された各指令に従ってバッファセグメントからディスク上の適切な
セクタへのデータのブロックの転送を制御する。次いで、読出し/書込みヘッド
に接続された読出し/書込み回路がデータトラックに沿ったセルを磁化する。
【0007】 従来、カウンタ及び割込みは、バッファと連動して、バッファへのデータの転
送を「監視する」のに使用されている。ホスト及びディスクインターフェース制
御装置内に一般に位置しているカウンタは、ホストとバッファとの間及びディス
クとバッファとの間の双方に生じる転送の数をカウントする。この計算に基づい
て、割込み発生器は、バッファへの選択された数の転送が生じた直後にマイクロ
プロセッサに割込みを供給する。カウンタ及び割込みの使用は、転送が生じるべ
き場合にバッファがいっぱいであるか否かについて調べることである。
【0008】 ディスク駆動機構の最も重要な欠点は、読出しまたは書込み動作が開始される
時間とそれが機械的に完了すべき時間との間の比較的長い遅延である。この遅延
は、シーク・レイテンシーと、読出し/書込みヘッドが所望のトラックに移動す
る時間と、回転レイテンシーと、所望のトラックセクタが読出し/書込みヘッド
の下方になるまでにディスクが回転する時間と、データブロックがディスク面に
対して読み出されたり書き込まれたりする時間に対応する付加的遅延とを含んで
いる。上述の遅延に起因して、ディスク駆動機構が動作する速度は、一般に、コ
ンピュータシステムの他の構成要素の動作速度よりも遅い。事実はそうであるの
で、バッファに書き込みたいと思っているデータを転送し、次いで駆動機構がデ
ータを媒体に記憶させる(機械的)タスクを実行するのに最適な後の時間に駆動
機構がそのデータをディスクに引き渡すことができるようにすることは、全シス
テム性能にとってまたホストシステムにとって有益である。通常、書込みキャッ
シュングと呼ばれるこの概念はデータ記憶装置に共通している。
【0009】 殆どの任意のソフトウェア・アプリケーションと関連するディスクアクセスの
数を低減する周知の装置は、単一の共通キャッシュメモリの使用を含んでいる。
一般には揮発性ランダム・アクセス・メモリ(VRAM)装置であるキャッシュ
メモリは、ディスクから読み出されるデータのブロックを記憶するか、ディスク
に書き込まれるべきブロックを記憶する。一旦システムがディスク読出し動作を
発すると、キャッシュは先ず、要求されたデータブロックが既に有効であるか否
かをチェックし、それにより代表的な物理的ディスク読出しを回避する。データ
ブロックが有効でなければ、システムは、読出し/書込みヘッドに指令して、デ
ータがキャッシュに転送されるディスク読出しを実行する。
【0010】 米国特許第5,765,193号に述べられているように、例えば、ディスク
からのデータの要求がデータファイルのような関連データについて特有のもので
あることは普通である。データファイルは、トラックの隣接セクタでディスク上
に書き込まれたり記憶されたりすることとなる。したがって、参照の原理は、「
データが1つの場所に記憶されるか記憶されるべき場合には、物理的に隣接する
場所に記憶されるか記憶されるべきデータは同時にまたはしばらく経ってから互
いにアクセスされることとなることは極めてもっともらしい」と例示するコンピ
ュータ・プログラマの間では一般に知られている。この原理を実現するために、
ディスクに書き込まれるべきデータは、一般に、ディスクへの記録に先立って書
込みキャッシュに転送される。この手順は2つの点で有益である。先ず、この手
順は、ホストに対して、ディスク上の実際の読出し動作を実行する必要なく迅速
にデータをアクセスできるようにする。書込みキャッシュから直接に読み出すた
めに、システムは、データブロックがディスクの代わりにキャッシュに保持され
ているトラックを維持しなければならない。第2に、この手順は、コンピュータ
の他の構成要素に追いつく時間を読出し/書込みヘッドに与える。
【0011】 一旦キャッシュがいっぱいになると、システム・マイクロプロセッサは、書込
み動作を開始して、キャッシュ中のデータブロックをディスク駆動機構に転送す
る。米国特許第5,765,193号に更に述べられているように、書込みキャ
ッシュからディスクへのデータの「規則的な」転送を管理する幾つかの方法があ
る。書込みキャッシュを管理する1つの公知の技術は、隣接データブロックに対
する書込みキャッシュをサーチする命令でディスク書込み動作を補うことである
。少なくとも2つの隣接データブロックの存在によって、システムがディスク書
込み動作に従ってすっかり転送するクラスタが定義される。ディスクアクセスの
数を減少することによって、この技術は時間のかかるシーク動作の全体数を減少
する。第2の既知の技術は、その使用順序でデータブロックのリストを備えた「
LRU(least recently used)」キューを維持することを
含んでいる。この技術は、仮想ブロック番号(即ち、ディスク上の意図された記
憶場所に関してデータブロックに割り当てられた番号)を使用して、システムに
よる最近の使用の順序に関してデータブロックをランク付けする。最近使用され
たデータブロックはその前に使用されたデータブロックに先立って再度使用され
ることがよりもっともらしいという理論に基づいて、システムは、中央処理装置
による迅速なアクセスに対して書込みキャッシュに前者を保持しながら、後者を
ディスクに転送する。第3の(即ち、より旧式の)技術は、先入れ先出しベース
でキャッシュからブロックを単に除去することである。
【0012】 バッファからディスクへのデータの転送に関する3つの技術はすべて、データ
ファイルの記憶及び検索を実施する効果的な手段を提供するが、限定されたデー
タ空間のバッファからディスクへのデータ転送と関連して問題が生じてきた。特
に、バッファからのデータが先入れ先出し式にディスクに転送されなければ、デ
ータが転送されたバッファセクタは、空にされたセクタから順番がより低いバッ
ファセクタが実際に空にされるまで、再使用されえない。例えば、100−セク
タバッファでは、45〜50のセクタがディスクに書き込まれれば、その特別の
バッファ空間は、バッファセクタ1〜44が空にされるまでホストによって再使
用されえない。制限された量のバッファデータ空間のディスク駆動機構を取り扱
う場合、この「シーケンシャル」バッファアクセス方法は、書込みキャッシュン
グに関してホストコンピュータに対して重要な不利益である。
【0013】 (発明の概要) この欠点に対して、本発明が開発された。本発明は、バッファデータ空間をよ
り効果的に使用できるようにバッファセクタを再構成する手段である。特に、以
後「VBM」と呼ばれる本発明によるベクトル化バッファ管理システムは、バッ
ファとの間のデータの転送を任意にまたはランダムに行うことができるようにバ
ッファ空間を再構成する手段を提供する。本質的に、VBMによって、データを
バッファセクタに対して非逐次的に(非シーケンシャルに)書き込むことができ
るようになる。VBMは、3つの構成要素(即ち、アルゴリズム的構成要素とハ
ードウェア構成要素とソフトウェア構成要素)を含んでいる。
【0014】 アルゴリズム的構成要素は、セクタの論理的に編成され単にリンクされたリス
トとしてデータバッファの(VBMテーブルと称される)モデルを定義する。V
BMテーブルにおける各エントリはバッファの単一のセクタを表わす。バッファ
の各セクタは、セクタを表す論理ブロックアドレス(LBA)を有するデータブ
ロックをディスク駆動機構のディスク上に記憶する。ハードウェア構成要素が現
在位置決めされているバッファセクタは、索引セクタと称される。各索引セクタ
の値は「次」セクタである。物理的バッファセクタ番号は、現在の索引セクタと
の間のデータの転送の終結後直ちに参照することによってハードウェア構成要素
の「次」セクタを示している。
【0015】 ハードウェア構成要素は、バッファとの間のデータの物理的転送に責任がある
。ディスク書込み動作の間、ハードウェア構成要素は、データ転送の管理に対す
るベースとして「VBM」テーブルを使用する。このことは、データをバッファ
に引き渡すことに責任があるホスト・アドレスポインタ(HAP)と、バッファ
からディスクにデータを転送することに責任があるディスク・アドレスポインタ
(DAP)とを設定することによって、達成される。これらのポインタの初期値
はソフトウェア構成要素によって任意に選択される。HAP及びDAPの双方は
ホスト次ポインタ(HNP)及びディスク次ポインタ(DNP)にそれぞれ結合
している。次ポインタの機能は、アドレスポインタを次セクタに向けるために索
引セクタから次セクタ値を読み出すことである。ハードウェアはまた、CPUが
別のタスクを実行中である場合にも、機能が依然として多数のテーブルエントリ
をトラバースできるように、バッファ割当てを管理しているタスクとは独立して
自動化トラバース機能を提供する。
【0016】 ソフトウェア構成要素は、バッファセクタの最大可能数が任意の所定の時間に
新しいホスト書込み指令に対して有効であることを保証することによって、また
、ホストからの要求を終了するのに必要なディスク動作の数を最小化することに
よって、書込みキャッシュングの利点を最大化する。詳述すると、ソフトウェア
は、ハードウェアによって使用されてデータバッファとの間のデータ転送を指示
するVBMテーブルを生成し維持する機構を提供する。ソフトウェア構成要素は
ハードウェア構成要素の制御を監督する責任が更にある。フリーバッファ・セク
タのリストを生成することによって、ソフトウェア構成要素はまた、フリー空間
からのキャッシュされたデータを分離し、有益なときにバッファテーブルのバッ
ファセグメントを単一のディスク動作に併合し、冗長性データを保持する任意の
バッファセクタを再使用し、かつ、任意の順序でバッファセクタをフリーリスト
に戻すVBMの能力を準備する。
【0017】 これら及び種々の他の特徴と同様に本発明を特徴付ける諸利益は、以下の詳細
な説明を読み関連する図面を吟味することから明瞭となろう。
【0018】 (詳細な説明) 本発明の好ましい実施例に従って構成されたディスク駆動機構100を図1に
示してある。ディスク駆動機構100は、ディスク駆動機構100の種々の構成
要素が取り付けられているベース102を含んでいる。部分的に切り欠けて示す
上面カバー104は、ベース102と協動して、従来の方法でディスク駆動機構
100に対する内部の封止された環境を形成する。これらの構成要素は、一定の
高速度で1つ以上のディスク108を回転させるスピンドルモータ106を含ん
でいる。情報は、ディスク108に隣接して位置決めされた軸受シャフトアセン
ブリ112の回りに回転するアクチュエータ・アセンブリ110の使用を介して
ディスク108上のトラック160(図3)に読み書きされる。アクチュエータ
・アセンブリ110は、アクチュエータ・アーム114の各々から伸張する1つ
以上のフレキシャー116付きの、ディスク108に向かって伸びている複数の
アクチュエータ・アーム114を含んでいる。ヘッドが関連ディスク108の対
応する面の上方を極めて近接してフライできるようにする空気軸受スライダを含
むヘッド118が、フレキシャー116の各々の末端部に取り付けられている。
【0019】 スピンドルモータ106は、一般に、ディスク駆動機構100が拡張された期
間使用されないときに、消勢される。ヘッド118は、駆動モータが消勢される
と、ディスク108の内径に近い停止ゾーンの上方に移動する。ヘッド118は
、これらのヘッド118が停止すると、アクチュエータ・アセンブリ110の意
図しない回転を防ぐアクチュエータ・ラッチ構成の使用を介して停止ゾーン12
0の上方に確保される。
【0020】 ヘッド118の半径方向の位置は、アクチュエータ・アセンブリ110に取り
付けたコイル126とこのコイル126が晒される磁界を確立する1つ以上の永
久磁石128とを一般に備える音声コイルモータ(VCM)124の使用を介し
て制御される。コイル126への電流の制御された供給は永久磁石128とコイ
ル126との間の磁気的相互作用を引き起し、その結果、コイル126は周知の
ローレンツ関係に従って移動する。コイル126が移動すると、アクチュエータ
・アセンブリ110は軸受シャフト・アセンブリ112の回りを回動し、ヘッド
118はディスク108の面を横切って移動させられる。
【0021】 動作の間にアクチュエータ・アセンブリ110の回動移動を可能にさせながら
、フレックス・アセンブリ130はアクチュエータ・アセンブリ110に対して
必須の電気的接続経路を提供する。フレックス・アセンブリは、ヘッドワイヤ(
不図示)が接続されたプリント回路基板132を含み、ヘッドワイヤはアクチュ
エータ・アーム114及びフレキシャー116に沿ってヘッド118に経路指定
されている。プリント回路基板132は、一般に、書込み動作の間にヘッド11
8に印加される書込み電流を制御するとともに読出し動作の間にヘッド118に
よって発生される読出し信号を増幅する回路群を含んでいる。フレックス・アセ
ンブリは、ベース・デッキ102を介したディスク駆動機構100の底部側に取
り付けられたディスク駆動機構プリント回路基板(不図示)への通信のためのフ
レックス・ブラケット134で終端している。
【0022】 ここで図2を参照すると、ディスク駆動機構プリント回路基板上にあるととも
にディスク駆動機構100の動作を制御するのに使用される主要な機能回路を一
般的に示している図1のディスク駆動機構100の機能ブロック図を示してある
。ディスク駆動機構100は、ディスク駆動機構100が従来通りに取り付けら
れたホストコンピュータ140に機能的に接続されるように図2では示されてい
る。制御通信経路は、ホストコンピュータ140とディスク駆動機構マイクロプ
ロセッサ142との間に設けられており、マイクロプロセッサ142は、一般に
、マイクロプロセッサ・メモリ(MEM)に記憶されたマイクロプロセッサ14
2用のプログラミングと連動して、トップレベル通信及びディスク駆動機構10
0の制御を提供する。MEM143は、ランダム・アクセス・メモリ(RAM)
と、リード・オンリー・メモリ(ROM)と、マイクロプロセッサ142用の常
駐メモリの他のソースとを含むことができる。ディスク108はスピンドル制御
回路148によって一定の高速度で回転させられる。ヘッド118の半径方向の
位置は、アクチュエータ・アセンブリ110のコイルに電流を流すことによって
制御される。サーボ制御回路150はこの種の制御を提供する。
【0023】 データは、ホストコンピュータ140とディスク駆動機構100との間の高速
データ転送を容易にするためにバッファ145を含むディスク駆動機構インター
フェース144によって、ホストコンピュータ140とディスク駆動機構100
との間で転送される。こうして、ディスク駆動機構100に書き込まれるべきデ
ータは、ホストコンピュータ140からバッファ145にパスされ、次いで、デ
ータを符号化してシリアル化するとともにヘッド118に対して必須の書込み電
流を提供する読出し/書込みチャネル146にパスされる。ディスク駆動機構1
00によって予め記憶されたデータを検索するために、読出し信号が、ヘッド1
18によって発生されるとともに、読出し/書込みチャネル146に与えられる
。インターフェース144は、読出し信号復号化動作とエラー検出動作とエラー
訂正動作とを実行する。次いで、インターフェース144は、検索されたデータ
をバッファ145に出力して、ホストコンピュータ140に後続の転送を行うよ
うにする。ディスク駆動機構100のこの種の動作は、この分野では周知であり
、例えば、シェーバーらに1994年1月4日付で発行された米国特許第5,2
76,662号に説明されている。
【0024】 ここで図3を参照すると、ディスク108の面上の主要構成要素を一般的に示
すディスク108の平面図を示している。ディスク108は円周方向には複数の
同心円状トラック160に分割されている。ディスク108当りのトラック16
0の数は、各特別に製造されたディスク108により異なる。各トラック160
の回りの1回の回転(INDEX)162は、一般に、ディスク108の半径を
拡げるマークによって示される
【0025】 ディスク108は半径方向には複数のサーボセグメント164に分割されてい
る。サーボセグメント164は、ディスク108の中心166で始まり、ディス
ク108の外縁168で終端する。ディスク108当りのトラック160の数と
同様に、ディスク108当りのサーボセグメントの数は各特別に製造されたディ
スク108により異なる。各トラック160は、サーボセグメント164間にデ
ータセクタを有する離隔されたサーボセグメント164から構成される。
【0026】 一般的意味合いで、図12は、動作399から動作417において、本発明に
よるバッファ145用のバッファ管理システムの全体動作400の好ましい実施
例を図示している。動作402では、バッファテーブル206(図4)は、複数
の等しい大きさのバッファセクタ208(図4)に分割されたバッファ145を
表すことによって維持される。動作404では、バッファセクタ206は、バッ
ファセグメント210(図4)と称される円形状にリンクされたリストに配置さ
れる。動作406では、特別のバッファセグメント210は、データファイルを
記憶するために制御モジュール202によって任意に選択される。動作408で
は、ファイルとしてホスト140(図4)からバッファ145に実際に転送され
るデータが、バッファセグメント210に転送されるものとして表される。動作
410では、データファイルは、不確定の期間バッファ145に記憶される。デ
ータファイルは、動作412でデータがバッファ145から除去されディスク1
08に再配置されてホスト140からディスク108への転送を果たすまで、バ
ッファセグメントに記憶されるものとして表される。動作414では、「ルック
−アップ」(即ち、転送または除去)が早まって監督されたか否かについて決定
を行う。そうでなければ、プロセスは終了する。しかしながら、ルック−アップ
が早まっていた場合には、ルック−アップが転送であったならば、動作416は
動作408で転送を再び開始する。ルック−アップが除去または置換であったな
らば、動作416は動作412で除去を再始動する。
【0027】 ここで図4を参照すると、バッファ145との間のデータの転送を管理するバ
ッファ管理システム200の機能的ブロック図を示してある。バッファ管理シス
テム200は、3つの主要な構成要素(即ち、制御モジュール202とアプリケ
ーション・モジュール204とバッファテーブル206)の実施を介してホスト
コンピュータ140とディスク108との間のデータの転送を管理する。バッフ
ァテーブル206は、各々が512バイトを記憶する容量を有するn個の等しい
バッファセクタ208に分割される。各バッファセクタ208は更に、円形状に
リンクされたリスト(即ち、バッファセグメント210)に組み込まれる。バッ
ファテーブル206は、n個のバッファセグメント210に分割することができ
るか、n個のバッファセクタ208を有する唯一のバッファセグメント210か
らなることができる。以下の表1は、n=9のバッファセクタ208と2つの円
形状にリンクされたバッファセグメント210とを含むバッファテーブル206
を示している。
【表1】
【0028】 簡略化のために、表1は、表2及び表3に示すように、2つの独立したバッフ
ァセグメント210に分類することができる。
【表2】
【表3】
【0029】 バッファテーブル206に関して、各バッファセクタ208は、バッファ管理
システム200の動作に重要な2つの命令(即ち、オフセット値214(「オフ
セット」)と次セクタ命令値212(「次セクタ命令」))を含んでいる。双方
の命令は、全体として、オフセット214及び次セクタ命令212がバッファセ
グメント210の円形状の外観を定義するという点で、バッファ管理システム2
00の動作に対して決定的である。例えば、表3に戻って説明すると、左側の列
の各値はオフセット値214と称され、右側の列の各値は次セクタ命令値212
と称される。アプリケーション・モジュール204が現在のバッファセクタ20
8である「4」に位置決めされているとき、アプリケーション・モジュール20
4は、次セクタ命令212を読み出して次バッファセクタ208である「7」に
移動する。一旦現バッファセクタ208である「7」に位置決めされると、アプ
リケーション・モジュール204は、次セクタ命令212を読み出し次バッファ
セクタ208である「5」に移動する。この手順は、アプリケーション・モジュ
ール204がオフセット214値である「4」を有するバッファセクタ208に
戻って位置決めされて円形状にリンクされたセグメント210を囲むまで、繰り
返される。好ましい実施例によれば、バッファテーブル206の維持とバッファ
テーブル206上のアプリケーション・モジュール204の動作とはともに制御
モジュール202によって監督される。アプリケーション・モジュール204及
び制御モジュール202のより詳細は以下において説明する。
【0030】 ここで図5を参照すると、図4のシステム200のより特定の機能ブロック図
を示してある。特に、アプリケーション・モジュール204の構成要素の機能ブ
ロックを図示してある。アプリケーション・モジュール204はバッファ管理シ
ステム200のハードウェア構成要素である。アプリケーション・モジュール2
04は、2つの主要なサブモジュール(即ち、ホスト次ポインタ(HNP)22
2に結合されたホスト・アドレスポインタ(HAP)220と、ディスク次ポイ
ンタ(DNP)226に結合されたディスク・アドレスポインタ(DAP)22
4)に分割される。アプリケーション・モジュール204は、1セグメント1セ
グメント式にバッファテーブル206をウォーク・スルーする。ホスト次ポイン
タ222及びディスク次ポインタ226は、ホスト・アドレスポインタ220及
びディスク・アドレスポインタ224の次バッファセクタ208位置に関する位
置決めをそれぞれ効果的に制御する。上述したように、アプリケーション・モジ
ュール204の動作は制御モジュール202を介して制御される。
【0031】 ホスト・アドレスポインタ220はデータブロックをバッファ145に引き渡
すのに責任がある。好ましい実施例では、バッファ145へのデータの引渡しは
バッファテーブル206を参照することによって達成される。その動作では、ホ
スト次ポインタ222は、ホスト・アドレスポインタ220が動作中である特別
のバッファセグメント210の「次」セクタ208の値をホスト・アドレスポイ
ンタ220に通信する。ホスト次ポインタ222は、次セクタ命令212からバ
ッファセグメント中の「次」セクタ208のオフセット値214を受信する。ホ
スト・アドレスポインタ220は、ホスト次ポインタ222によって読み出され
た次セクタ命令212に応答して特別のバッファセグメント210をウォーク・
スルーする。ホスト・アドレスポインタ220がデータを現バッファセクタ20
8に引き渡した後、ホスト・アドレスポインタ220は、ホスト次ポインタ22
2によって伝達されるように次バッファセクタ208に直ちにジャンプする。結
局、最後のバッファセクタ208の次セクタ命令値212は、バッファセグメン
ト210のホスト・アドレスポインタ220によって参照される初期のバッファ
セクタ208のオフセット値214と等しくなるであろう。このことは、円形セ
グメントがラップする点である。ホスト・アドレスポインタ220は、現在の指
令に対する全てのデータが転送されるまで、必要に応じてラップするセグメント
210をウォーク・スルーし続ける。
【0032】 データがデータバッファ145からディスク108に転送されるべきときには
、アプリケーション・モジュール204は、一般に、データがディスク108か
らバッファ145に転送されるときと同様の方法で動作する。ディスク・アドレ
スポインタ224はバッファ145からディスク108にデータを引き渡すのに
責任がある。好ましい実施例では、ディスク108へのデータの引渡しはバッフ
ァテーブル206を参照することによって達成される。その動作では、ディスク
次ポインタ226は、ディスク・アドレスポインタ224が動作中の特別のバッ
ファセグメント210の「次」バッファセクタ208の位置をディスク・アドレ
スポインタ224に通信する。ディスク次ポインタ226は、次セクタ命令21
2からバッファセグメント中の「次」バッファセクタ208のオフセット値21
4を受信する。ディスク・アドレスポインタ224は、ディスク次ポインタ22
6によって読み出された次セクタ命令212に応答して特別のバッファセグメン
ト210をウォーク・スルーする。ディスク・アドレスポインタ224がバッフ
ァセクタ208からディスク108にデータを引き渡した後、ディスク・アドレ
スポインタ224は、ディスク次ポインタ226によって指令される通りに次バ
ッファセクタ208に直ちにジャンプする。結局、最後のバッファセクタ208
の次セクタ命令値212は、バッファセグメント210のディスク・アドレスポ
インタ224によって参照される初期のバッファセクタ208のオフセット値2
14と等しくなるであろう。このことは、円形セグメントがラップする点である
。ディスク・アドレスポインタ224は、現在の指令に対する全てのデータが転
送されるまで、必要に応じてラップするセグメント210をウォーク・スルーし
続ける。
【0033】 ディスク・アドレスポインタ224の動作に関して、データは1セクタ1セク
タ式にバッファ145から転送される。一旦データが特別のバッファセクタ20
8から抽出されると、このデータは、ファイルが位置されるべき特別のサーボセ
グメント164及びトラック160に従ってディスク108に転送される。
【0034】 ここで図6を参照すると、バッファ145上で動作するアプリケーション・モ
ジュール204の概略表現を示してある。ディスク現アドレスカウンタ244及
びディスク現ページレジスタ246はディスク・アドレスポインタ224を形成
する。同様に、ホスト現アドレスカウンタ252及びホスト現ページレジスタ2
50はホスト・アドレスポインタ220を形成する。ディスク次ページレジスタ
240及びホスト次ページレジスタ242はディスク次ポインタ226及びホス
ト次ポインタ222としてそれぞれ機能する。リマップベース・アドレスレジス
タ248はバッファ145のVBMテーブル206のベースでディスクリマップ
アドレス247及びホストリマップアドレス249を設定する。したがって、好
ましい実施例では、リマップベース・アドレスレジスタ248の出力は、肯定応
答制御線(241または243)がイネーブルされていることに応じて、バッフ
ァ145をアドレス指定するためにディスクリマップアドレス247またはホス
トリマップアドレス249を使用する。ディスクインターフェース制御装置がデ
ータをバッファ145から読み出すことを要求すれば、ディスクリマップ肯定応
答線241はイネーブルされ、また、ディスクリマップアドレス247はバッフ
ァ145をアクセスするのに使用される。ホストインターフェース制御装置がデ
ータをバッファ145に書き込むことを要求すれば、ホストリマップ肯定応答線
243はイネーブルされ、また、ホストリマップアドレス249はバッファ14
5をアドレス指定するのに使用される。
【0035】 ディスク次ページレジスタ240は、バッファテーブル145から読み出され
るべき次セクタ208の次セクタ命令値212でディスク現ページレジスタ24
6をロードする。ディスク現アドレスカウンタ244の出力から始まるディスク
データアドレス線245がイネーブルされている限りは、データは現セクタ20
8から読み出される。ディスク現アドレスカウンタ244の出力はセクタ比較器
256と結合される。ディスク現アドレスカウンタ244の値はセクタ比較器2
56への入力Bである。比較器256の入力Aは、代表的には512バイトであ
るバッファセクタ208サイズの一定値である。ディスク現アドレスカウンタ2
44の値が入力Aと等しいとき、信号は、比較器256の出力から、ディスク次
ページレジスタ240によってディスク現ページレジスタ246にロードされた
値を有する次バッファセクタ208へのスイッチを要求するディスク現ページレ
ジスタ246に送信される。次バッファセクタ208値は、バッファ145から
ディスク次ページレジスタ240にロードされた次セクタ命令値212によって
定義される。
【0036】 ホスト次ページレジスタ242は、バッファ145に書き込まれるべき次セク
タ208の次セクタ命令値212でホスト現ページレジスタ250をロードする
。ホスト現アドレスカウンタ252の出力から始まるホストデータアドレス線2
51がイネーブルされている限りは、データは現セクタ208から読み出される
。ホスト現アドレスカウンタ252の出力はセクタ比較器258と結合されてい
る。ホスト現アドレスカウンタ252の値はセクタ比較器258への入力Aであ
る。比較器258の入力Bは、一般に512バイトであるバッファセクタ208
サイズの一定値である。ホスト現アドレスカウンタ252の値が入力Bと等しい
とき、信号は、比較器258の出力から、ホスト次ページレジスタ242によっ
てホスト現ページレジスタ250にロードされた値を有する次バッファセクタ2
08へのスイッチを要求するホスト現ページレジスタ250に送信される。次バ
ッファセクタ値は、バッファ145からホスト次ページレジスタ242にロード
された次セクタ命令値212である。
【0037】 ここで図13を参照すると、アプリケーション・モジュール204のトラバー
サル構成要素の概略表現を図示している。トラバーサル構成要素260は、トラ
バーサル状態マシーン262とトラバース・ダウンカウンタ264と次トラバー
ス・アドレスレジスタ266とを含んでいる。トラバーサル状態マシーン262
はオフセットベースアドレスの値214でロードされる。オフセット値214は
、トラバーサル構成要素260用の次セクタ208位置として次トラバース・ア
ドレスレジスタ266にラッチされる。トラバーサル構成要素260は、一旦ト
ラバーサル状態マシーン262がトラバース・ダウンカウンタ264を初期化す
ると、バッファセグメント210上のアプリケーション・モジュール204をト
ラバースする。トラバーサル構成要素260は、次トラバース・アドレスレジス
タ266からトラバースアドレスを受信するとともに、トラバース・ダウンカウ
ンタ264が計数を完了するまでアプリケーション・モジュール204のトラバ
ーサルを継続して実行する。トラバース・ダウンカウンタ264用のカウンタが
マイクロプロセッサ142によってロードされ、それにより、アプリケーション
・モジュール204が所定回数だけ特別のバッファセグメント210を反復的に
ホップできるようにする。次セクタ命令値212は、次セクタ208に指令して
トラバースさせるとともに、次トラバース・アドレスレジスタ266を介してト
ラバーサル構成要素260に伝達される。オフセットベースアドレスの値214
が最初にトラバーサル状態マシーン262に送信された後は、次セクタ命令値2
12は、トラバーサル構成要素260が初期化されてオフセットベースアドレス
の次の値を待つ時点であるトラバース・ダウンカウンタ264が計数を完了する
まで、トラバーサルの後続のセクタ208を制御する唯一の制御パラメータであ
る。
【0038】 上述したように、バッファテーブル206の維持及びアプリケーション・モジ
ュール204の動作はともに制御モジュール202によって監督される。制御モ
ジュール202はバッファ管理システム200のソフトウェア構成要素である。
制御モジュール202は、バッファ145のセクタ208の最大可能数が任意の
所定の時点で書込み指令用のホスト140に対して利用可能であることを保証す
ることによって、書込みキャッシュングの方法を最大化する。要約すると、制御
モジュール202は、ホスト220及びディスク226アドレスポインタを介し
てバッファ145との間のデータ転送を指示するためアプリケーション・モジュ
ール204によって使用されるバッファテーブル206を維持するための機構を
提供する。
【0039】 図7を参照すると、一般に動作299から動作317で説明するフロー図が、
ホスト140からバッファ145へデータを転送するのに用いられるときの制御
モジュール202の動作を例示している。動作300では、制御モジュール20
2は、任意の所定の時点で書込み指令用のホスト140に利用可能であるセクタ
208の可能数を最大化するために、free listにバッファ145のセ
クタ208を編成する。free listは初期化されて、書込みバッファ1
45の全てのフリーセクタ208の円形状にリンクされたセグメント164とな
る。表4は、初期化されたfree listの例示である。
【表4】
【0040】 一旦制御モジュール202がfree listへのセクタ208の編成を完
了すると、ホスト140からバッファ145へのデータの物理的変換が開始され
る。制御モジュール202がバッファテーブル206を1つ以上のバッファセグ
メント210に分割することはこのプロセス中に行われる。動作308では、制
御モジュール202は、制御モジュール202がバッファ145へのデータ転送
に対する開始セクタ208として選択するバッファセクタ208である「fre
space start」としてfree listにおける(好ましい実
施例では最初の索引セクタ208と称される)バッファセクタ208を任意に選
択する。制御モジュール202は、ホスト・アドレスポインタ220がfree space startとラベルされた最初の索引セクタ208に位置決めさ
れるように、アプリケーション・モジュール204を制御する。動作302では
、制御モジュール202はキャッシュされるべき入力データを受信する。動作3
10では、制御モジュール202は、ホスト・アドレスポインタ220に指示し
て、ファイルの最初のブロックをfree space startとして識別
されたセクタに転送させる。動作312では、制御モジュール202は、ファイ
ルの転送が完了したか否かを決定する。全てのデータブロックが転送された場合
には、制御モジュールは動作316にジャンプする。しかしながら、転送が完了
していなければ、動作314で、制御モジュール202は、前の索引セクタ20
8の次セクタ命令212に従って(ホスト・アドレスポインタ220の各現在位
置は、好ましくは、「索引」セクタと称される。)次「索引」セクタ208にホ
スト・アドレスポインタを位置決めする。ホスト・アドレスポインタ220は、
ホスト次ポインタ222が次索引セクタ208を参照するときにデータブロック
を転送する。動作316では、一旦制御モジュール202がファイルの転送が完
了したことを決定すると、制御モジュール202は、現バッファセグメント21
0の最後のバッファセクタ208の後に直接現れるfree list中のセク
タ208にラベル「free space start」を割り当てる。バッフ
ァセグメント210のサイズの決定とバッファテーブル206でfree li
stのバッファセグメント210への分割が生じる場合の決定とは、図8及び表
5によってより詳細に説明される。
【0041】 図8を参照すると、動作329から動作339で一般に説明されたフロー図は
、free listのセクタ108を1つ以上のセグメント210に配置する
ことを図示している。制御モジュール202は、一旦長さ「L」のバッファセク
タ108のコマンドがホスト140によってバッファ管理システム200に送信
されると、free listを1つ以上の円形状にリンクされたリストセグメ
ント210に効果的に配置する。図7の動作310と同様である動作330では
、制御モジュール202は、ホスト・アドレスポインタ220に指示して、好ま
しい実施例では「free space start」とラベルされた最初の索
引セクタ208にファイルの最初のブロックを転送させる。動作332は、fr
ee space startで開始するとともに「L−1」セクタをバッファ
テーブル206に記憶する単独にリンクされたfree listをトラバーサ
ル構成要素260でトラバースすることによって、この特別な指令に対するデー
タの最後のバッファセクタ208(即ち、この特別なバッファセグメント210
の最後のセクタ208)を位置決めする。動作334は、「free spac
start」としてテーブルに記憶された「L−1」個のステップに対応す
るバッファセクタ208の次セクタ命令212の値を指定する。バッファセクタ
208はここで次セクタ命令212「free space start」を組
み込むので、円形状にリンクされたリストは、特別のバッファセグメント210
がfree listからの独立リストであることを例示するために囲まれてい
る。
【0042】 動作336は、残存する円形状にリンクされたリストを例示するために、fr
ee list中の残存するバッファセクタ208をトラバースする。動作33
8では、「free space start」としてfree list中の
最後のセクタ208の次セクタ命令212を指定することによって、独立の円形
状にリンクされたリストのバッファテーブル206の残存するセクタ208を囲
む。こうして、終了結果は、一旦ホスト140がデータをバッファ145に転送
すると、どのようにしてfree listが1つ以上のバッファセグメント2
10に分割されるかに関する例示である。表5は、L=3の命令を表4の初期化
されたfree listに適用することによって、バッファセグメント210
へのバッファセクタ208の配置のより良好な例示を図示している。
【表5】
【0043】 セクタ0からセクタ2は、制御モジュール202がホスト・アドレスポインタ
220に現在命令してデータを充填させるバッファセグメントを表すのに対して
、セクタ3からセクタ「n−1」は、free list中の残存するバッファ
セクタ208を表している。この例では、セクタ「3」は、ホスト140がデー
タの転送を実施する次回にホスト・アドレスポインタ220に制御モジュール2
02が指示する次「free space start」位置である。したがっ
て、バッファテーブル206のfree listは、この例では、一方の長さ
が3で他方の長さが「n−3」である2つの別個のバッファセグメント210に
分割される。種々のバッファセグメント210を更に副分割するためにまたはセ
グメント210を単一ループに併合するために、同様の処理を行うことができる
【0044】 ここで図9を参照すると、書込み命令が出される任意の時点に始動される制御
モジュール202でプログラムされた改めプロセスを図示するフロー図を示して
ある。図9の改めプロセスは実際には図8に規定されたものというよりもむしろ
分離プロセスであるが、この2つのプロセスは相互に同時発生的であり、また、
改めプロセスは結局は動作300で終える。ホスト140が制御モジュール20
2によって受信される新しい書込み指令を送信するとき、動作320では、改め
プロセスが起動される。動作322では、一旦新しい書込み指令が制御モジュー
ル202によって受信されると、制御モジュール202は先ずその新しい指令か
らのデータの論理的ブロックアドレス(LBA)のうちの任意のものが前の指令
からバッファセクタ208にキャッシュされたデ−タのLBAのうちの任意のも
のとオーバーラップするか否かを決定するために、チェックする。オーバーラッ
プが見い出されなければ、動作300が起動されるとともに、データが図8のフ
ロー図に従ってバッファ145に転送される。
【0045】 LBAのオーバーラップが見い出せるならば、制御モジュールは、動作324
で、古い書込み指令に対応するバッファセクタ208を選び、これらをfree listの最後に加える。このことは、free listの終りに配置され
たバッファセクタ208の次セクタ命令値212を古い書込みセクタ208と置
換することによって達成される。これらのバッファセクタ208からのデータは
「冗長性」データと考えられ、こうして、バッファセクタ208はfree
istに改められる。一旦2つのバッファセクタ208が改められると、動作3
24で、動作300が起動されるとともに、データが図8のフロー図に従ってバ
ッファ145に転送される。表6は、図8に図示された改めプロセスを経るとき
のバッファテーブル206の例示である。
【表6】
【0046】 この例では、L=3のリストがL=4のリストに改められて、L=7の新しい
リストを生む。バッファセクタ208 0,1及び3に含まれるデータブロック
のLBAと新しい書込み指令に関するデータブロックのLBAとに関して、オー
バーラップが見い出された。したがって、改めプロセスは、セクタ3の次セクタ
命令212をセクタ0のオフセット値214と置換することによって、「冗長性
」バッファセグメント210の最初の索引セクタ208(セクタ0)を元のfr
ee list(セクタ3,4,5,6)の終りに加えた。“3”は単独でリン
クされたリストの1つの完全円が終端するバッファセクタ208であるので、セ
クタ3はfree listの終りを示している。次いで、制御モジュール20
2は、特別のバッファセグメント210の最初の索引セクタ208であるセクタ
0にホスト・アドレスポインタ222を位置決めすることによって書込み指令を
監督する。
【0047】 図10を参照すると、動作349から動作359に一般的に説明されたフロー
図が、バッファ145からディスク108にデータを転送するのに用いられると
きの制御モジュール202の動作を図示している。動作350では、転送される
べきファイルの最初のデータブロックを記憶するバッファセクタ208が「索引
」セクタ108を指示される。動作325では、索引セクタ208はfree listの終りに加えられる。動作354では、制御モジュール202は、ディ
スク・アドレスポインタ224に指示して、索引セクタ208のデータブロック
をディスク108に転送させる。こうして、バッファセクタ208からのデータ
がディスク108に引き渡されると同時に、その特別なバッファセクタ208が
次ホスト140書込み指令によって使用のために直ちに解放される。
【0048】 動作356では、制御モジュール202は、転送されるべきファイル内の全て
のデータブロックがディスクに引き渡されたか否かを決定する。そうでなければ
、動作358で、制御モジュール202は、前の索引セクタ208の次セクタ命
令212によって命令された通りに、ディスク・アドレスポインタ224を次「
索引」セクタ208上に位置決めする。ディスク・アドレスポインタ224を次
索引セクタ上に位置決めした後、制御モジュール202は、動作352にジャン
プして、そこからの手順を繰り返す。動作356で決定された通りに、一旦ディ
スク・アドレスポインタ224がファイルを記憶している特別のバッファセグメ
ント210を完全に転送したら、タスクは終了し、制御モジュール202はディ
スク・アドレスポインタ210を初期化して後続の転送のための各命令を待つ。
【0049】 ディスク108に書き込まれるべきバッファセクタ208をfree lis
tの終りに加えるプロセスは、新しい書込み指令がLBA空間においてシーケン
シャルである制御モジュール202に来てディスク108上で直ちに追従してバ
ッファセクタ208がディスク108に引き渡されたならば、大いに有益である
。この利点は、制御モジュール202が古いデータをディスク108に引き渡す
のと同じ動作中に新しいデータをディスク108に書き込むので、バッファテー
ブル206の何らの処理も新しい書込み命令に対して必要ではないという点で、
実現される。表7は、このプロセスの例示に対する最良の分析を提供する。
【表7】
【0050】 この例では、新しい書込み指令に関するデータは「3」の最初の索引セクタ1
08を有することとなろう。何故ならば、セクタ3はfree space
tartに対応するからである。新しい書込み指令が、この場合にはセクタ3,
4,5,6であるセグメント210よりも大きい(より多くのセクタ)ならば、
制御モジュール202は円形ループとしてfree listを使用する。ディ
スク108に引き渡されているデータを記憶したバッファセクタ208は既にf
ree listの終りに加わえられているので、そのようなセクタ208は円
形のfree listの一部分となる。制御モジュール202は、ディスク・
アドレスポインタ224に指示して、バッファセクタ208からのデータがディ
スク108に引き渡されるときにディスク・アドレスポインタ224に順次追従
する(最初の索引セクタ208で始動される)ホスト・アドレスポインタ220
に追従させる。したがって、制御モジュール202はディスク224及びホスト
アドレス220ポインタを用いて実時間円形ループを実施する。
【0051】 バッファ管理システム200の1つ以上の利点は、2つ以上のキャッシュされ
た指令を1つのバッファセグメント210に併合する制御モジュール202の能
力である。1つのバッファセグメント210を別のものに併合することは有益で
ある。何故ならば、そのようなプロセスは1つの動作でバッファ145からディ
スク108にデータを書き込ませるからである。2つ以上のバッファセグメント
210がディスク108上の隣接サーボセグメント164に書き込まれるべきデ
ータファイルを含んでいれば、制御モジュール202は、バッファテーブル20
6のそのようなバッファセグメント210を1つのバッファセグメント210に
「併合」するであろう。
【0052】 図11を参照すると、動作379から動作385で一般的に説明されたフロー
図が制御モジュール202の併合プロセスを図示している。動作380では、バ
ッファセグメント210に含まれたキャッシュされた書込みが比較されて、デー
タファイルが隣接(即ち、引き続く)サーボセグメント164に引き渡されるべ
きか否かを決定する。動作382では、そのようなデータが隣接サーボセグメン
ト164に引き渡されるべきでないならば、動作381は、テーブル206の全
てのバッファセグメント210が互いに比較されたか否かを調べるためにチェッ
クする。もしそうでなければ、動作380の比較ルーチンが繰り返される。全て
のバッファセグメント210が比較されたならば、どのバッファセグメント21
0も併合することなくプロセスは終了している。
【0053】 バッファセグメント210からのデータがディスク108上のシーケンシャル
位置で引き渡されるべきならば、実際の併合プロセスは動作384で始まるであ
ろう。動作384では、バッファセグメント210のうちの何れかの最後のバッ
ファセクタ208の次セクタ命令値212が、他のバッファセグメント210の
最初の索引セクタ208のオフセット値214と置換される。したがって、2つ
のセグメント210は1つの円形状にリンクされたリストに併合される。一旦併
合が完了すると、プロセスは、動作381によって決定された通りに全てのバッ
ファセグメント210が互いに比較されるまで、動作380で再度始動される。
本質的には、このことは、バッファ145へのキャッシュされた書込みの頻度に
起因する進行中のプロセスである。表8及び表9は併合プロセス動作384の更
なる例示を提供する。
【表8】
【表9】
【0054】 この例では、表8は、併合に先立つバッファテーブル206を例示している。
表8は、3つの個別のバッファセグメント210(即ち、セグメント0:1,セ
グメント4:5及びセグメント2:3:6)を含んでいる。この例示では、セグ
メント0:1に含まれたデータブロックはディスク108上の隣接サーボセグメ
ント210に置かれるべきである。したがって、セグメント0:1及びセグメン
ト4:5はディスク108上でシーケンシャルであるので、制御モジュール20
2は、2つのバッファセグメント210を併合することとなり、その結果を表9
に示してある。示されているように、表9は、2つのバッファセグメント210
(即ち、セグメント0:1:4:5及びセグメント2:3:6)を含むに過ぎな
い。
【0055】 要約すると、本発明は、(140のような)ホストコンピュータから(100
のような)ディスク駆動機構の(108のような)記録可能なディスクへのデー
タの転送を管理する(200のような)バッファ管理システムとして見ることが
できる。(100のような)ディスク駆動機構は(140のような)ホストコン
ピュータ上で動作する。(108のような)記録可能なディスクは、(164の
ような)1つ以上の等しいサーボセグメントに半径方向に分割されるとともに、
(160のような)1つ以上の回転トラックに円周方向に分割される。こうして
、(160のような)トラックは(164のような)サーボセグメントによって
分割される。
【0056】 (100のような)ディスク駆動機構は、(140のような)ホストコンピュ
ータと(108のような)ディスクとの間のデータ転送が(140のような)ホ
ストコンピュータまたは(108のような)ディスクからファイルの一時的記憶
用の(145のような)バッファへのファイルを構成する選択された数のデータ
ブロックを転送することによって果たされるという型式のものである。一時的記
憶の後、ファイルは(140のような)ホストコンピュータまたは(108のよ
うな)ディスクに転送される。本発明によれば、バッファの管理は、(206の
ような)バッファテーブルと(204のような)アプリケーション・モジュール
と(202のような)制御モジュールとを含む(200のような)バッファ管理
システムによって達成される。
【0057】 (200のような)バッファ管理システムは、(208のような)1つ以上の
等しく大きさを決められたバッファセクタに分割されている(206のような)
バッファテーブルを含んでいる。(208のような)バッファセクタの各々は、
(210のような)バッファセグメントにおけるセクタである。(210のよう
な)バッファセグメントは、(206のような)バッファテーブル内の円形状に
リンクされたリストとして定義される。(200のような)バッファ管理システ
ムはまた、(210のような)各特別のバッファセグメントをウォーク・スルー
するため(204のような)アプリケーション・モジュールを含んでいる。(2
06のような)バッファテーブルは、(210のような)少なくとも1つのバッ
ファセグメントに分割される。しかしながら、(206のような)バッファテー
ブルは、(206のような)バッファテーブルが(208のような)バッファセ
クタを有するのと同じ数の(210のような)バッファセグメントに分割されさ
えすればよい。
【0058】 (200のような)バッファ管理システムは、(206のような)バッファテ
ーブルを生成し維持する(202のような)制御モジュールを更に含んでいる。
(202のような)制御モジュールは、(204のような)アプリケーション・
モジュールによって(206のような)バッファテーブルのウォーク・スルーを
監督するために、(204のような)アプリケーション・モジュールと結合され
ている。(204のような)アプリケーション・モジュールは、(204のよう
な)アプリケーション・モジュールが現在位置決めされている(208のような
)索引セクタにおける(212のような)次セクタ命令に応答して、(206の
ような)バッファテーブルをウォーク・スルーする。データが(108のような
)ディスクまたは(145のような)バッファに早まって引き渡された場合には
、(202のような)制御モジュールは、(204のような)アプリケーション
・モジュールを再起動してデータの後続のルック−アップを実行する(動作41
4におけるような)ルック−アップ・ルーチンを含んでいる。
【0059】 (204のような)アプリケーション・モジュールは、好ましくは、(145
のような)バッファにデータを引き渡す(220のような)ホスト・アドレスポ
インタを含む。(220のような)ホスト・アドレスポインタは、好ましくは、
(208のような)索引セクタの(212のような)次セクタ命令を(220の
ような)ホスト・アドレスポインタに伝達する(222のような)ホスト次ポイ
ンタに結合されている。したがって、(212のような)次セクタ命令は、(2
10のような)特別のバッファセグメント内の(220のような)ホスト・アド
レスポインタの位置決めを制御する。
【0060】 (204のような)アプリケーション・モジュールはまた、好ましくは、(1
45のような)バッファからのデータを(208のような)ディスクに引き渡す
(224のような)ディスク・アドレスポインタを含む。(224のような)デ
ィスク・アドレスポインタは、(208のような)索引セクタの(212のよう
な)次セクタ命令を(224のような)ディスク・アドレスポインタに伝達する
(226のような)ディスク次ポインタに結合される。したがって、(212の
ような)次セクタ命令が、(210のような)特別のバッファセグメント内の(
224のような)ディスク・アドレスポインタの位置決めを制御する。
【0061】 好ましい実施例では、(206のような)バッファテーブルは、一時的記憶の
ために(200のような)システムに容易に利用可能であるセクタのフリーリス
トを含んでいる。既存のデータブロックが(208のような)索引セクタから(
108のような)ディスクに書き込まれるべき場合には、(202のような)制
御モジュールは(208のような)索引セクタをセクタのフリーリストに改め、
その結果、(208のような)索引セクタは、(108のような)ディスクに引
き渡されるときに、(200のような)システムに利用可能となる。(202の
ような)制御モジュールは、書込み命令が(140のような)ホストから出され
たとき、フリーリストから(210のような)特別のバッファセグメントを任意
に選択するとともに、(210のような)特別のバッファセグメントの(208
のような)最初の索引セクタの上方に(220のような)ホスト・アドレスポイ
ンタを任意に位置決めする。フリーリストは、好ましくは、ディスク108に書
き込まれたデータか冗長性であると考えられたデータを含んでいた(210のよ
うな)任意のバッファセグメントを含む。
【0062】 (202のような)制御モジュールはまた、(動作380から動作384にお
けるような)併合ルーチンを含んでいる。(動作380から動作384における
ような)併合ルーチンは、(164のような)隣接サーボセグメントに書き込ま
れるべき(210のような)1つ以上のバッファセグメントを組み合わせる。(
動作380から動作384におけるような)併合ルーチンは、(210のような
)複数のバッファセグメントを、1つの書込みプロセスで(108のような)デ
ィスクに引き渡され得る(210のような)1つの集合体バッファセグメントに
変換する。
【0063】 本発明は、(140のような)ホストコンピュータから(100のような)デ
ィスク駆動機構の(108のような)記録可能なディスクへのデータの転送を管
理する(動作400におけるような)方法として見ることもできる。(動作40
0におけるような)方法は、(208のような)1つ以上の等しく大きさを決め
られたバッファセクタに分割される(206のような)バッファテーブルを(動
作402におけるように)維持することと、(208のような)バッファセクタ
の各々を(210のような)少なくとも1つのバッファセグメントに(動作40
4におけるように)配置することとを含んでいる。単独にリンクされたリストで
ある(206のような)バッファテーブルは、円形状にリンクされたリストであ
る(210のような)1つ以上のバッファセグメントに分割される。(動作40
0におけるような)方法は、(210のような)特別のバッファセグメントを(
動作406におけるように)選択して(140のような)ホストコンピュータか
ら(145のような)バッファに転送されるべきファイルを一時的に記憶するこ
とと、(208のような)索引セクタに含まれた(212のような)次セクタ命
令に応答して(210のような)特別のバッファセグメントをウォーク・スルー
することによって(140のような)ホストコンピュータから(145のような
)バッファにファイルを(動作408におけるように)転送することとを更に含
んでいる。索引セクタは、そこからデータが転送されている(208のような)
バッファセクタである。
【0064】 (動作400におけるような)方法は、一時的な期間(210のような)特別
のバッファセグメントにファイルを(動作410におけるように)記憶すること
と、(145のような)バッファからファイルを(動作412におけるように)
除去することと、(208のような)索引セクタに含まれた(212のような)
次セクタ命令に応答して(210のような)特別のバッファセグメントをウォー
ク・スルーすることによって、(108のような)記録可能なディスクにファイ
ルを再配置することとを更に含んでいる。
【0065】 好ましい実施例では、(動作402におけるような)バッファテーブルを維持
する際の(動作400におけるような)方法は、新しいデータブロックを受け取
るのに容易に利用可能であるセクタのフリーリストを(動作300におけるよう
に)生成する段階を含んでいる。(動作400におけるような)方法は、好まし
くは、一旦(145のような)バッファへファイルを書き込む指令が(140の
ような)ホストコンピュータによって送信されると、(動作410におけるよう
な)データを記憶する際に使用されるであろう(210のような)特別のバッフ
ァセグメントに対する開始としての(208のような)最初の索引セクタを任意
に選択することを含む。(動作404のような)配置段階での(動作400にお
けるような)方法は、好ましくは、(208のような)任意に選択された最初の
索引セクタで開始することによってセクタのフリーリストから(210のような
)バッファセグメントを発生することと、ファイルのデータブロックの選択され
た数よりも少ない1つのバッファセクタをトラバースすることとを含む。結局、
好ましい実施例では、(動作400におけるような)方法は、キャッシュされる
べき入力データファイルを(動作302におけるように)受け取るとともに、入
力データファイルを(208のような)索引セクタの(210のような)バッフ
ァセグメントに入れる。
【0066】 前述したように、(動作400におけるような)方法は、(208ような)セ
クタを(210のような)1つ以上のバッファセグメントに編成することによっ
て(206のような)バッファテーブルを(動作404におけるように)配置す
ることができる。しかしながら、(206のような)バッファテーブルは、(2
06のような)バッファテーブルの(208のような)セクタの数に等しい最大
数の(210のような)バッファセグメントに単に分割することができる。(動
作400におけるような)方法は、(208のような)各セクタが(108のよ
うな)ディスクに引き渡されるときシステムに利用可能となるように、(108
のような)ディスクに引き渡されるべき(208のような)各セクタをセクタの
フリーリストに(動作354から動作358におけるような)改める。
【0067】 好ましい実施例では、(動作400におけるような)方法は、(145のよう
な)バッファに記憶されるべきデータブロックを(210のような)全てのバッ
ファセグメントの各既存のデータブロックと(動作322におけるように)比較
する。(動作322におけるような)比較が既存のデータブロックと(145の
ような)バッファに記憶されるべきデータブロックとの間の冗長性を示すならば
、既存のデータブロックを記憶する(210のような)バッファセグメントは、
フリーリストに(動作354から動作358におけるように)改められる。(動
作354から動作358におけるような)方法は、(208のような)隣接サー
ボセグメントに書き込まれるべきデータファイルを含む(210のような)1つ
以上のバッファセグメントを共に併合し、それにより、書込み動作をそれらのセ
グメント164に対して1回実行できるようにするだけである。
【0068】 好ましい実施例では、(動作400におけるような)方法は、(222のよう
な)ホスト次ポインタに結合された(220のような)ホスト・アドレスポイン
タで(210のような)特別のバッファセグメントをウォーク・スルーすること
によって、データを(145のような)バッファに(動作408におけるように
)転送することを含む。(222のような)ホスト次ポインタは、(212のよ
うな)次セクタ命令を(220のような)ホスト・アドレスポインタに伝達する
。本質的には、(212のような)次セクタ命令は、(210のような)特別の
バッファセグメント内の(220のような)ホスト・アドレスポインタの位置決
めを制御する。更に、(動作400におけるような)方法は、好ましくは、(2
26のような)ディスク次ポインタに結合された(224のような)ディスク・
アドレスポインタで(210のような)特別のバッファセグメントをウォーク・
スルーすることによって、バッファからデータを(動作412におけるように)
除去し再配置することを含む。(226のような)ディスク次ポインタは、(2
12のような)次セクタ命令を(224のような)ディスク・アドレスポインタ
に伝達する。本質的には、(212のような)次セクタ命令は、(210のよう
な)特別のバッファセグメント内の(224のような)ディスク・アドレスポイ
ンタの位置決めを制御する。データが(動作408におけるように)転送された
か早まって(動作412におけるように)置換された場合には、何れかの動作が
(動作400におけるような)方法に従って(動作412及び動作416におけ
るように)再起動される。
【0069】 本発明は前述した諸目的及び利点と同様に本願に固有の諸目的及び利点を達成
するのに十分適合することは明瞭であろう。目下の好ましい実施例はこの開示の
目的で説明したが、十分この発明の範囲内にある種々の変更及び修正を行うこと
ができる。例えば、VBMは、バッファを用いてデータ転送を実施する、テープ
駆動機構、光学的駆動機構及びネットワークのような他の型式のデータ記憶装置
に有用であり得る。同様に、制御モジュールは、ソフトウェアに対抗するものと
してまたはソフトウェアとの組合わせで集積回路または論理回路を用いて設計す
ることができる。更に、アプリケーション・モジュールは、アドレスポインタ及
び次ポインタを1個の単一の構成要素に組み合わせることができる。また、バッ
ファテーブルの維持は、本発明から逸脱しない種々の他の方法で解釈することが
できる。例えば、VBMの技術はファイル割当てテーブルに用いることができる
。また、VBMテーブル自身は(次ポインタ及び前ポインタの双方を有する)二
重リンクリストとして構築することができ、また、ハードウェアはこの種のテー
ブルの維持におけるソフトウェアを助長するように構成することができるであろ
う。全体のシステムは、標準の512バイトよりも大きいか小さいデータの収集
について作動するようにセットアップすることもできる。当業者に容易に示唆す
るとともに、特許請求の範囲に開示し限定したような本発明の精神に包含される
多数の他の変更を行うことができる。
【図面の簡単な説明】
【図1】 主要な内部構成要素を示す本発明の好ましい実施例を組み込むディスク駆動機
構の平面図である。
【図2】 図1のディスク駆動機構を制御するのに使用される主要な機能構成要素を一般
的に示す機能ブロック図である。
【図3】 ディスク面上の主要構成要素を一般的にに示すディスクの平面図である。
【図4】 本発明の好ましい実施例によるバッファ管理システムの機能ブロック図である
【図5】 図4のアプリケーション・モジュール及び制御モジュールに特に焦点を置いた
バッファ管理システムの機能ブロック図である。
【図6】 図4のアプリケーション・モジュールの構成要素の概略的表現である。
【図7】 ホストコンピュータによる書込み命令に応じた制御モジュールの動作を図示す
るフロー図である。
【図8】 1つ以上のセグメントへのfree listのセクタの配置を図示するフロ
ー図である。
【図9】 改めプロセスを図示するフロー図である。
【図10】 バッファからディスクへデータを引き渡す命令を与えた場合の制御モジュール
の動作を図示するフロー図である。
【図11】 併合プロセスを図示するフロー図である。
【図12】 本発明の動作を一般的に図示するフロー図である。
【図13】 図4のアプリケーション・モジュールのトラバーサ構成要素の概略的表現であ
る。
【手続補正書】特許協力条約第19条補正の翻訳文提出書
【提出日】平成13年5月24日(2001.5.24)
【手続補正1】
【補正対象書類名】明細書
【補正対象項目名】特許請求の範囲
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項10】 前記維持する段階(a)は、新しいデータブロックを受け
取るのに容易に利用可能であるセクタのフリーリストを生成する段階を備え、 前記選択する段階(c)は、前記記憶する段階(e)で使用されるであろう前
記特別のバッファセグメントに対する開始として最初の索引セクタを任意に選択
する段階を備え、 前記配置する段階(b)は、前記任意に選択された最初の索引セクタで開始す
ることによって前記セクタのフリーリストからバッファセグメントを発生すると
ともに、前記ファイル中の前記データブロックの選択された数よりも少ない1つ
のバッファセクタをトラバースする段階を備え、 前記転送する段階(d)は、 (i)キャッシュされるべき入力データファイルを受け取る段階と、 (ii)前記入力データファイルを前記索引セクタの前記バッファセグメントに
入れる段階とを更に備える、 請求項9記載の方法。
【手続補正書】特許協力条約第34条補正の翻訳文提出書
【提出日】平成13年10月26日(2001.10.26)
【手続補正1】
【補正対象書類名】明細書
【補正対象項目名】特許請求の範囲
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【手続補正2】
【補正対象書類名】明細書
【補正対象項目名】0041
【補正方法】変更
【補正の内容】
【0041】 図8を参照すると、free listのセクタ208を1つ以上のセグメン
ト210に配置することを図示するフロー図を示している。制御モジュール20
2は、一旦長さ「L」のバッファセクタ108のコマンドがホスト140によっ
てバッファ管理システム200に送信されると、free listを1つ以上
の円形状にリンクされたリストセグメント210に効果的に配置する。図7の動
作310と同様である動作330では、制御モジュール202は、ホスト・アド
レスポインタ220に指示して、好ましい実施例では「free space start」とラベルされた最初の索引セクタ208にファイルの最初のブロッ
クを転送させる。動作332は、free space startで開始する
とともに「L−1」セクタをバッファテーブル206に記憶する単独にリンクさ
れたfree listをトラバーサル構成要素260でトラバースすることに
よって、この特別な指令に対するデータの最後のバッファセクタ208(即ち、
この特別なバッファセグメント210の最後のセクタ208)を位置決めする。
動作334は、「free space start」としてテーブルに記憶さ
れた「L−1」個のステップに対応するバッファセクタ208の次セクタ命令2
12の値を指定する。バッファセクタ208はここで次セクタ命令212「fr
ee space start」を組み込むので、円形状にリンクされたリスト
は、特別のバッファセグメント210がfree listからの独立リストで
あることを例示するために囲まれている。
【手続補正3】
【補正対象書類名】明細書
【補正対象項目名】0047
【補正方法】変更
【補正の内容】
【0047】 図10を参照すると、バッファ145からディスク108にデータを転送する
のに用いられるときの制御モジュール202の動作を図示するフロー図を示して
いる。動作350では、転送されるべきファイルの最初のデータブロックを記憶
するバッファセクタ208が「索引」セクタ108を指示される。動作325で
は、索引セクタ208はfree listの終りに加えられる。動作354で
は、制御モジュール202は、ディスク・アドレスポインタ224に指示して、
索引セクタ208のデータブロックをディスク108に転送させる。こうして、
バッファセクタ208からのデータがディスク108に引き渡されると同時に、
その特別なバッファセクタ208が次ホスト140書込み指令によって使用のた
めに直ちに解放される。
【手続補正4】
【補正対象書類名】明細書
【補正対象項目名】0050
【補正方法】変更
【補正の内容】
【0050】 この例では、新しい書込み指令に関するデータは「3」の最初の索引セクタ 08 を有することとなろう。何故ならば、セクタ3はfree space
tartに対応するからである。新しい書込み指令が、この場合にはセクタ3,
4,5,6であるセグメント210よりも大きい(より多くのセクタ)ならば、
制御モジュール202は円形ループとしてfree listを使用する。ディ
スク108に引き渡されているデータを記憶したバッファセクタ208は既にf
ree listの終りに加わえられているので、そのようなセクタ208は円
形のfree listの一部分となる。制御モジュール202は、ディスク・
アドレスポインタ224に指示して、バッファセクタ208からのデータがディ
スク108に引き渡されるときにディスク・アドレスポインタ224に順次追従
する(最初の索引セクタ208で始動される)ホスト・アドレスポインタ220
に追従させる。したがって、制御モジュール202はディスク224及びホスト
アドレス220ポインタを用いて実時間円形ループを実施する。
【手続補正5】
【補正対象書類名】図面
【補正対象項目名】図13
【補正方法】変更
【補正の内容】
【図13】
───────────────────────────────────────────────────── フロントページの続き (72)発明者 モーラー、グレゴリー、ポール アメリカ合衆国 コロラド、ロングモン ト、サンドパイパー プレイス 2914 (72)発明者 ヘインズ、ジョナサン、ウィリアムズ アメリカ合衆国 コロラド、ラファイエッ ト、オータム リッジ ブールヴァード 2285 Fターム(参考) 5B065 BA01 CE12 5D044 BC01 CC05 HH07 HL01

Claims (20)

    【特許請求の範囲】
  1. 【請求項1】 ホストコンピュータからディスク駆動機構の記録可能なディ
    スクへのデータの転送を管理するバッファ管理システムであって、前記ディスク
    駆動機構は前記ホストコンピュータ上で動作し、前記記録可能なディスクは複数
    の等しいサーボセグメントに半径方向に分割されるとともに複数の回転トラック
    に円周方向に分割され、前記ディスク駆動機構は、選択された数のデータブロッ
    クとして定義されたファイルを一時的記憶用のバッファに転送することによって
    前記ホストコンピュータと前記ディスクとの間のデータ転送が果たされる型式の
    ものである、バッファ管理システムであって、 複数の等しいバッファセクタに分割されたバッファテーブルであって、前記複
    数のバッファセクタの各々が、前記バッファテーブルが分割されている複数の円
    形状にリンクされたリストのうちの1つとして定義されたバッファセグメントの
    セクタである、バッファテーブルと、 特別のバッファセグメントをウォーク・スルーするように動作可能なアプリケ
    ーション・モジュールであって、前記バッファセグメントがウォーク・スルーす
    るときにデータが転送される、アプリケーション・モジュールと、 前記バッファテーブルを生成し維持する制御モジュールであって、前記アプリ
    ケーション・モジュールが現在位置している索引セクタの次セクタ命令に応答し
    て前記アプリケーション・モジュールによって前記制御モジュールがウォーク・
    スルーを監督するように前記アプリケーション・モジュールと結合されている、
    制御モジュールと、 を具備する、バッファ管理システム。
  2. 【請求項2】 前記アプリケーション・モジュールが、 前記データを前記バッファに引き渡すホスト・アドレスポインタであって、次
    セクタ命令が前記特別のバッファセグメント内のホスト・アドレスポインタの位
    置決めを制御するように前記索引セクタの前記次セクタ命令を前記ホスト・アド
    レスポインタに伝達するホスト次ポインタを備えたホスト・アドレスポインタと
    、 前記バッファから前記ディスクに前記データを引き渡すディスク・アドレスポ
    インタであって、前記次セクタ命令が前記特別のバッファセグメント内の前記デ
    ィスク・アドレスポインタの位置決めを制御するように前記索引セクタの前記次
    セクタ命令を前記ディスク・アドレスポインタに伝達するディスク次ポインタを
    備えたディスク・アドレスポインタとを備えた 請求項1記載のシステム。
  3. 【請求項3】 前記バッファテーブルは、一時的記憶のために前記システム
    に対して容易に利用可能であるセクタのフリーリストを備え、 前記制御モジュールは、前記索引セクタが前記ディスクに対して引き渡される
    ときに前記索引セクタが前記システムに利用可能になるように、前記ディスクに
    書き込まれるべき前記索引セクタを前記フリーリストに改める、 請求項2記載のシステム。
  4. 【請求項4】 前記制御モジュールは、前記ホスト・アドレスポインタが前
    記特別のバッファセグメントの最初の索引セクタの上方に前記制御モジュールに
    よって任意に位置決めされるように、任意の方法で前記フリーリストから前記特
    別のバッファセグメントを選択する、請求項3記載のシステム。
  5. 【請求項5】 前記索引セクタの前記データブロックが新しい命令の前記デ
    ータブロックと比較されるときに冗長であるので、前記セクタが前記セクタのフ
    リーリストに改められる、請求項3記載のシステム。
  6. 【請求項6】 前記制御モジュールはルックアップ・ルーチンを備え、 該ルックアップ・ルーチンは、前記データが早まって引き渡された場合に前記
    アプリケーション・モジュールを再起動する、 請求項2記載のシステム。
  7. 【請求項7】 前記バッファテーブルは少なくとも1つのバッファセグメン
    トを備え、 前記バッファテーブルは、該バッファテーブルのバッファセクタの数と等しい
    最大数のバッファセグメントに分割される、 請求項1記載のシステム。
  8. 【請求項8】 前記制御モジュールは併合ルーチンを更に備え、 該併合ルーチンは、該併合ルーチンが1つの書込みプロセスで前記ディスクに
    引き渡され得る1つの集合体バッファセグメントに前記複数のバッファセグメン
    トを変換するように、複数の隣接サーボセグメントに書き込まれるべき前記バッ
    ファテーブルの複数のバッファセグメントを組み合わせる、 請求項1記載のシステム。
  9. 【請求項9】 ホストコンピュータからディスク駆動機構の記録可能なディ
    スクへのデータの転送を管理する方法であって、前記ディスク駆動機構は前記ホ
    ストコンピュータ上で動作し、前記記録可能なディスクは複数の等しいサーボセ
    グメントに半径方向に分割されるとともに複数の回転トラックに円周方向に分割
    され、前記ディスク駆動機構は、選択されたデータブロックとして定義されたフ
    ァイルを該ファイルの一時的記憶用のバッファに転送することによって前記ホス
    トコンピュータと前記ディスクとの間のデータ転送が果たされる型式のものであ
    る、方法であって、 (a)複数の等しい大きさのバッファセクタに分割されたバッファテーブルを維
    持する段階と、 (b)前記バッファテーブルが分割されている円形状にリンクされたリストとし
    て定義された少なくとも1つのバッファセグメントに前記複数のバッファセクタ
    の各々を配置する段階と、 (c)前記ホストコンピュータから前記バッファに転送されるベきファイルを一
    時的に記憶するために特別のバッファセグメントを選択する段階と、 (d)データが転送されている前記バッファセクタとして定義された索引セクタ
    に含まれた次セクタ命令に応答して前記特別のバッファセグメントをウォーク・
    スルーすることによって、前記ホストコンピュータから前記バッファに前記ファ
    イルを転送する段階と、 (e)一時的期間前記特別のバッファセグメントにファイルを記憶する段階と、 (f)前記バッファから前記ファイルを除去するとともに、前記索引セクタに含
    まれた前記次セクタ命令に応答して前記特別のバッファセグメントをウォーク・
    スルーすることによって、前記記録可能なディスクに前記ファイルを再配置する
    段階と、 を具備する、方法。
  10. 【請求項10】 前記維持する段階(a)は、新しいデータブロックを受け
    取るのに容易に利用可能であるセクタのフリーリストを生成する段階を備えてい
    る、請求項9記載の方法。
  11. 【請求項11】 前記選択する段階(c)は、前記記憶する段階(e)で使
    用される前記特別のバッファセグメントに対する開始として最初の索引セクタを
    任意に選択する段階を備えている、請求項10記載の方法。
  12. 【請求項12】 前記配置する段階(b)は、前記任意に選択された最初の
    索引セクタで開始するとともに前記ファイル中の前記データブロックの選択され
    た数よりも少ない1つのバッファセクタをトラバースすることによって、前記セ
    クタのフリーリストからバッファセグメントを発生する段階を備えている、請求
    項11記載の方法。
  13. 【請求項13】 前記転送する段階(d)は、 (i)キャッシュされるべき入力データファイルを受け取る段階と、 (ii)前記入力データファイルを前記索引セクタでの前記バッファセグメント
    に入れる段階とを更に備える、 請求項12記載の方法。
  14. 【請求項14】 前記配置する段階(b)は、前記バッファテーブル中のセ
    クタの数に等しい最大数のバッファセグメントまでの複数のバッファセグメント
    に前記セクタを編成する段階を備える、請求項9記載の方法。
  15. 【請求項15】 (g)前記ディスクに引き渡されるときに前記索引セクタ
    が前記システムに対して利用可能となるように、前記ディスクに書き込まれるべ
    き前記索引セクタを前記セクタのフリーリストに改める段階を更に具備する、請
    求項10記載の方法。
  16. 【請求項16】 (h)前記バッファに記憶されるべきデータブロックを前
    記バッファセグメントの各々の各既存のデータブロックと比較して、該比較する
    段階(h)が前記既存のデータブロックと前記バッファに記憶されるべき前記デ
    ータブロックとの間の冗長性を示すならば、前記既存のデータブロックを記憶し
    た前記バッファセグメントが前記フリーリストに改められるようにした段階を更
    に具備する、請求項15記載の方法。
  17. 【請求項17】 (g)複数の隣接サーボセグメントに書き込まれるべきデ
    ータファイルを含む特別の複数のバッファセグメントを一緒に併合して、前記特
    別の複数のバッファセグメントの書込み動作が1つの動作で実行され得るように
    した段階を更に具備する、請求項9記載の方法。
  18. 【請求項18】 前記転送する段階(d)は、次ポインタに結合されたアド
    レスポインタを用いて前記特別のバッファセグメントをウォーク・スルーする段
    階を備え、 前記次ポインタが前記次セクタ命令を前記アドレスポインタに伝達して、前記
    次セクタ命令が前記特別のバッファセグメント内の前記アドレスポインタの位置
    決めを制御するようにした、請求項9記載の方法。
  19. 【請求項19】 (g)前記段階のうちの1つが早まって実行された場合に
    前記転送する段階(d)及び前記除去及び置換する段階(f)を再起動する段階
    を更に具備する、請求項9記載の方法。
  20. 【請求項20】 データ記憶装置用のバッファ管理システムであって、 データ記憶装置との間でデータを転送するアプリケーション・モジュールと、 制御手段であって、前記アプリケーション・モジュールが該制御手段による監
    督下でバッファテーブルをウォーク・スルーするように、前記アプリケーション
    ・モジュールを動作させる、制御手段と、 を具備する、バッファ管理システム。
JP2001547242A 1999-12-22 2000-10-26 ディスク駆動機構のバッファとの間のデータの転送を管理するバッファ管理システム Withdrawn JP2003518313A (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US17177999P 1999-12-22 1999-12-22
US60/171,779 1999-12-22
PCT/US2000/029503 WO2001046792A1 (en) 1999-12-22 2000-10-26 Buffer management system for managing the transfer of data into and out of a buffer in a disc drive

Publications (1)

Publication Number Publication Date
JP2003518313A true JP2003518313A (ja) 2003-06-03

Family

ID=22625101

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2001547242A Withdrawn JP2003518313A (ja) 1999-12-22 2000-10-26 ディスク駆動機構のバッファとの間のデータの転送を管理するバッファ管理システム

Country Status (7)

Country Link
US (2) US6330640B1 (ja)
JP (1) JP2003518313A (ja)
KR (1) KR20020064357A (ja)
CN (1) CN1434936A (ja)
DE (1) DE10085321T1 (ja)
GB (1) GB2373612B (ja)
WO (1) WO2001046792A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100740080B1 (ko) 2005-03-03 2007-07-18 후지쯔 가부시끼가이샤 데이터 기억 시스템 및 데이터 기억 제어 장치

Families Citing this family (51)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6504846B1 (en) * 1999-05-21 2003-01-07 Advanced Micro Devices, Inc. Method and apparatus for reclaiming buffers using a single buffer bit
US6636941B1 (en) * 2000-01-18 2003-10-21 International Business Machines Corporation Enhanced stable disk storage
US6668304B1 (en) * 2000-01-18 2003-12-23 International Business Machines Corporation Transaction support on logical disks
US6941419B2 (en) * 2000-05-24 2005-09-06 Seagate Technology Llc Method and apparatus for disc drive buffer segment management
US6795894B1 (en) * 2000-08-08 2004-09-21 Hewlett-Packard Development Company, L.P. Fast disk cache writing system
TW487177U (en) * 2001-10-31 2002-05-11 Coretronic Corp Anti-dust lid of connecting slot
DE10162046A1 (de) * 2001-12-17 2003-06-26 Thomson Brandt Gmbh Wiedergabegerät mit einem Zwischenspeicher zum Verringern der mittleren Zugriffszeit auf einen Informationsträger
US6792504B2 (en) 2002-01-25 2004-09-14 Seagate Technology Llc Read on arrival scheme for a disc drive
US20040003172A1 (en) * 2002-07-01 2004-01-01 Hui Su Fast disc write mechanism in hard disc drives
US6961814B1 (en) * 2002-09-30 2005-11-01 Western Digital Technologies, Inc. Disk drive maintaining a cache link attribute for each of a plurality of allocation states
CN1316376C (zh) * 2002-12-12 2007-05-16 建兴电子科技股份有限公司 缓冲器的多区段管理结构及管理方法
US7159073B2 (en) * 2003-03-27 2007-01-02 Stmicroelectronics, Inc. Data storage and caching architecture
CN100478865C (zh) * 2003-08-14 2009-04-15 克姆佩棱特科技公司 虚拟磁盘驱动系统和方法
US7647358B2 (en) * 2004-03-22 2010-01-12 Microsoft Corporation Computing device with relatively limited storage space and operating/file system thereof
US8069192B2 (en) * 2004-03-22 2011-11-29 Microsoft Corporation Computing device with relatively limited storage space and operating / file system thereof
KR100652386B1 (ko) * 2004-11-16 2006-12-06 삼성전자주식회사 호스트와 하드디스크 드라이브 사이의 어플리케이션공유에 의한 작업 효율 증대방법 및 장치
JP2006227923A (ja) * 2005-02-17 2006-08-31 Fujitsu Ltd ディスク管理装置およびディスク管理プログラム
CN1312550C (zh) * 2005-03-28 2007-04-25 北京紫光华宇软件股份有限公司 一种将数据转储到移动存储介质以及从其上提取数据的方法
JP4312733B2 (ja) * 2005-04-04 2009-08-12 Necエレクトロニクス株式会社 データ記録再生装置及びデータ記録再生方法
TWI287790B (en) * 2005-06-23 2007-10-01 Sunplus Technology Co Ltd Buffer management device, record and reproduction device and management method for buffer memory
US7752059B2 (en) 2005-07-05 2010-07-06 Cardiac Pacemakers, Inc. Optimization of timing for data collection and analysis in advanced patient management system
US9456068B2 (en) 2005-09-01 2016-09-27 Xtone, Inc. System and method for connecting a user to business services
US8964960B2 (en) * 2005-09-01 2015-02-24 Xtone Networks, Inc. System and method for interacting with a user via a variable volume and variable tone audio prompt
US11153425B2 (en) * 2005-09-01 2021-10-19 Xtone, Inc. System and method for providing interactive services
US9313307B2 (en) * 2005-09-01 2016-04-12 Xtone Networks, Inc. System and method for verifying the identity of a user by voiceprint analysis
US9253301B2 (en) * 2005-09-01 2016-02-02 Xtone Networks, Inc. System and method for announcing and routing incoming telephone calls using a distributed voice application execution system architecture
US20100158217A1 (en) * 2005-09-01 2010-06-24 Vishal Dhawan System and method for placing telephone calls using a distributed voice application execution system architecture
US20100166161A1 (en) * 2005-09-01 2010-07-01 Vishal Dhawan System and methods for providing voice messaging services
US11102342B2 (en) 2005-09-01 2021-08-24 Xtone, Inc. System and method for displaying the history of a user's interaction with a voice application
EP1920588A4 (en) * 2005-09-01 2010-05-12 Vishal Dhawan PLATFORM OF NETWORKS OF VOICE APPLICATIONS
US9426269B2 (en) * 2005-09-01 2016-08-23 Xtone Networks, Inc. System and method for performing certain actions based upon a dialed telephone number
US9799039B2 (en) 2005-09-01 2017-10-24 Xtone, Inc. System and method for providing television programming recommendations and for automated tuning and recordation of television programs
JP4527640B2 (ja) * 2005-09-15 2010-08-18 株式会社ソニー・コンピュータエンタテインメント データ読出装置
JP3870215B1 (ja) * 2005-09-30 2007-01-17 インターナショナル・ビジネス・マシーンズ・コーポレーション テープ記録装置のデータ書込み読取り制御方法
JP4892225B2 (ja) * 2005-10-28 2012-03-07 株式会社日立ハイテクノロジーズ 真空処理方法、真空搬送装置および半導体処理装置
US8200869B2 (en) * 2006-02-07 2012-06-12 Seagate Technology Llc Storage system with alterable background behaviors
US7549021B2 (en) 2006-02-22 2009-06-16 Seagate Technology Llc Enhanced data integrity using parallel volatile and non-volatile transfer buffers
US8205059B2 (en) * 2007-02-16 2012-06-19 Mediatek Inc. Buffer management method and optical disc drive
CN101329661B (zh) * 2008-07-31 2010-04-21 北京飞天诚信科技有限公司 一种实现hid/scsi设备pc/sc接口的系统和方法
US8499120B2 (en) * 2008-10-17 2013-07-30 Seagate Technology Llc User selectable caching management
KR101023877B1 (ko) * 2009-04-17 2011-03-22 (주)인디링스 캐시 및 디스크 관리 방법 및 상기 방법을 이용한 컨트롤러
US9110594B2 (en) 2009-11-04 2015-08-18 Seagate Technology Llc File management system for devices containing solid-state media
US8725931B1 (en) 2010-03-26 2014-05-13 Western Digital Technologies, Inc. System and method for managing the execution of memory commands in a solid-state memory
US8782327B1 (en) 2010-05-11 2014-07-15 Western Digital Technologies, Inc. System and method for managing execution of internal commands and host commands in a solid-state memory
US9026716B2 (en) 2010-05-12 2015-05-05 Western Digital Technologies, Inc. System and method for managing garbage collection in solid-state memory
US9021192B1 (en) 2010-09-21 2015-04-28 Western Digital Technologies, Inc. System and method for enhancing processing of memory access requests
US9164886B1 (en) 2010-09-21 2015-10-20 Western Digital Technologies, Inc. System and method for multistage processing in a memory storage subsystem
US8780475B2 (en) 2012-08-30 2014-07-15 International Business Machines Corporation Tape drive buffer utilization
US9612956B2 (en) 2013-03-15 2017-04-04 Seagate Technology Llc Multi-tiered caching for data storage management in a device
US10564890B2 (en) 2017-07-07 2020-02-18 Seagate Technology Llc Runt handling data storage system
CN115269455B (zh) * 2022-09-30 2022-12-23 湖南兴天电子科技股份有限公司 基于fpga的磁盘数据读写控制方法、装置和存储终端

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4428064A (en) * 1981-03-06 1984-01-24 International Business Machines Corporation Controlling buffered peripheral subsystems
US4412285A (en) * 1981-04-01 1983-10-25 Teradata Corporation Multiprocessor intercommunication system and method
JPS621067A (ja) * 1985-02-25 1987-01-07 Hitachi Ltd ベクトル処理装置
US5034914A (en) * 1986-05-15 1991-07-23 Aquidneck Systems International, Inc. Optical disk data storage method and apparatus with buffered interface
USH513H (en) * 1986-06-30 1988-08-02 The United States Of America As Represented By The Secretary Of The Air Force ECM preprocessor or tracker using multi-processor modules
US5179530A (en) * 1989-11-03 1993-01-12 Zoran Corporation Architecture for integrated concurrent vector signal processor
US5155814A (en) * 1990-08-31 1992-10-13 International Business Machines Corporation Nonsynchronous channel/dasd communication system
DE69230204T2 (de) * 1991-08-16 2000-02-10 Fujitsu Ltd Pufferspeicher und Verwaltungsverfahren dafür
US5276662A (en) * 1992-10-01 1994-01-04 Seagate Technology, Inc. Disc drive with improved data transfer management apparatus
US5765193A (en) * 1993-07-01 1998-06-09 Digital Equipment Corporation System for controlling a write operation involving data held in a write cache
US5594926A (en) * 1993-07-19 1997-01-14 Efar Microsystems, Inc. Hard disk accelerating system for computer
US5481296A (en) * 1993-08-06 1996-01-02 International Business Machines Corporation Apparatus and method for selectively viewing video information
US5636188A (en) * 1993-11-19 1997-06-03 Sony Corporation Data transmission circuit for disk storage apparatus
US5689653A (en) * 1995-02-06 1997-11-18 Hewlett-Packard Company Vector memory operations
US5721543A (en) * 1995-06-30 1998-02-24 Iterated Systems, Inc. System and method for modeling discrete data sequences
US6378051B1 (en) 1999-06-14 2002-04-23 Maxtor Corporation Interrupt signal prioritized shared buffer memory access system and method

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100740080B1 (ko) 2005-03-03 2007-07-18 후지쯔 가부시끼가이샤 데이터 기억 시스템 및 데이터 기억 제어 장치

Also Published As

Publication number Publication date
US6330640B1 (en) 2001-12-11
WO2001046792A1 (en) 2001-06-28
US6757781B2 (en) 2004-06-29
KR20020064357A (ko) 2002-08-07
GB2373612A (en) 2002-09-25
CN1434936A (zh) 2003-08-06
DE10085321T1 (de) 2002-12-05
GB0214398D0 (en) 2002-07-31
GB2373612B (en) 2004-05-05
US20030149815A1 (en) 2003-08-07

Similar Documents

Publication Publication Date Title
JP2003518313A (ja) ディスク駆動機構のバッファとの間のデータの転送を管理するバッファ管理システム
US6735678B2 (en) Method and apparatus for disc drive defragmentation
US6978345B2 (en) Self-mirroring high performance disk drive
KR100697862B1 (ko) 기록작업의 순서를 벗어난 실행을 행하도록 구성된 디스크 제어기
CN1313933C (zh) 数据存储装置、其控制方法以及磁盘存储装置
JPH0664838B2 (ja) 光デイスクファイル装置
US10152236B2 (en) Hybrid data storage device with partitioned local memory
JPH07334426A (ja) 情報記録再生装置およびデータキャッシュ方法
JP3823040B2 (ja) データ記憶装置、データ処理装置、書き込み要求の実行順序を最適化する方法、データ処理方法およびハード・ディスク・ドライブ
WO2003025755A2 (en) sETHOD AND SYSTEM FOR CACHE MANAGEMENT ALGORITHM SELECTION
US6209058B1 (en) Cache management for data transfer control from target disk areas
KR19980029917A (ko) 자기 디스크 드라이브에서 읽기 캐쉬의 성능을 높이기 위한 방법
US6693754B2 (en) Method and apparatus for a disc drive adaptive file system
KR100368964B1 (ko) 데이터 기록 방법, 데이터 판독 방법, 디스크 드라이브장치 및 디스크 드라이브 장치의 컨트롤러
US7253981B2 (en) Disc drive with reduced write latency
JP2001014109A (ja) 記憶装置
KR20070060301A (ko) 불휘발성 메모리를 쓰기 캐시로 구비한 하드 디스크드라이버
JPH11161527A (ja) データ記憶システム
US6957300B2 (en) Reducing delay of command completion due to overlap condition
JPH1027069A (ja) 記憶装置
US6957302B2 (en) System and method for performing write operations in a disk drive using a write stack drive
WO1994022134A1 (en) Buffer control for data transfer within hard disk during idle periods
US20030200385A1 (en) Method and system for increasing disk drive performance
JP3089683B2 (ja) 情報処理装置
JP2003217237A (ja) 磁気ディスク装置

Legal Events

Date Code Title Description
A300 Application deemed to be withdrawn because no request for examination was validly filed

Free format text: JAPANESE INTERMEDIATE CODE: A300

Effective date: 20080108