JP4163461B2 - キャッシュ・バッファ制御方法及び制御装置 - Google Patents
キャッシュ・バッファ制御方法及び制御装置 Download PDFInfo
- Publication number
- JP4163461B2 JP4163461B2 JP2002219713A JP2002219713A JP4163461B2 JP 4163461 B2 JP4163461 B2 JP 4163461B2 JP 2002219713 A JP2002219713 A JP 2002219713A JP 2002219713 A JP2002219713 A JP 2002219713A JP 4163461 B2 JP4163461 B2 JP 4163461B2
- Authority
- JP
- Japan
- Prior art keywords
- page
- data
- write
- command
- read
- 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
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
- G06F12/0871—Allocation or management of cache space
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
- G06F3/0611—Improving I/O performance in relation to response time
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/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
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0804—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Signal Processing For Digital Recording And Reproducing (AREA)
Description
【発明の属する技術分野】
本発明は、ハードディスク・ドライブとテープ・ドライブのキャッシュ・バッファ制御方法とアルゴリズムに関し、より詳しくは、キャッシュ・バッファを管理すると共に、読み出し動作と書き込み動作のために使用可能な前記キャッシュ・バッファ内のメモリ・セルを識別するための方法とアルゴリズムに関する。
【0002】
【従来の技術】
一般的なコンピュータ・システムにおいては、データはホスト・ユニット内で処理され、後の検索と更なる処理のためにメモリ内に格納される。普通に使用されるメモリは、ホスト・ユニットからのコマンドによってデータの書き込みと読み出しが行われる不揮発性記憶媒体を有するハードディスク・ドライブまたはテープ・ドライブである。理解を容易にするために、本発明は、磁気ディスクを有するハードディスク・ドライブに関して述べられているが、前記記憶媒体が、磁気ディスク・ドライブ、光ディスク・ドライブ、テープ・ドライブ等であってもよい。
【0003】
書き込み処理と読み出し処理は、ディスク・ドライブ制御のために設けられた専用の中央処理装置(CPU)によってハードディスク・ドライブ内で内部的に制御される。とりわけ、このCPUは、ハードディスク・ドライブ内(またはホスト・ユニット内)のキャッシュ・バッファなどの揮発性メモリを用いて、書き込み動作と読み出し動作を促進し、ホスト・ユニットに効率よく貢献している。
【0004】
【発明が解決しようとする課題】
図24に、公知のキャッシュ・バッファの概略構造を示す。キャッシュ・バッファ内の各メモリ・セルはメモリ・アドレスを有している。CPUは、LBA(論理ブロック・アドレス)と呼ばれる、通常、ブロックに分けられているこれらのアドレスに従ってキャッシュ・バッファ内にデータを格納する。図24において、W1は最初の書き込みコマンドでディスクに書き込まれるデータを示しており、W2からW5は、その後に続く書き込みコマンドで書き込まれるデータを示している。R1、R2、およびR3は、連続する読み出しコマンドでディスクから読み出されるデータを示している。別々の論理キャッシュ・バッファと物理的キャッシュ・バッファまたはそのいずれかが、それぞれ読み出しと書き込みのために使用される。読み出しバッファと書き込みバッファはリング・バッファであるので、書き込みバッファが一杯になると、W5データは、キャッシュがディスクに書き込まれるまで保持されなければならないか、W1データを上書きするかのいずれかである。このことは読み出しバッファについても同様である。あるいは、CPUがデータを分解してキャッシュ・バッファのいくつかの領域の間に格納しなければならない。2バッファ形態のキャッシュ・バッファと、データを格納し上書きする方法とは、両方とも、効率が悪く、時間を無駄にし、ハードディスク・ドライブの応答時間を遅くする。そこで、本発明の目的は、ハードディスク・ドライブ等のための新規な改善されたキャッシュ・バッファ制御方法とアルゴリズムを提供することにある。
【0005】
本発明のもう一つの目的は、キャッシュ・バッファ内のメモリ・セルのための新規な改善された管理方式を提供することにある。
【0006】
本発明の更なる目的は、ハードディスク・ドライブ等からの読み出しとハードディスク・ドライブ等への書き込みのためのキャッシュ・バッファ内の有効メモリを識別するための新規な改善されたキャッシュ・バッファ制御方法と装置を提供することにある。
【0007】
【課題を解決するための手段】
本発明は、不揮発性メモリ媒体を有する記憶装置内にあって、一つの方法で不揮発性メモリへの書き込みと不揮発性メモリからの読み出しの両方を行うために用いることができる複数の揮発性メモリ・セルを有するキャッシュ・バッファの中にデータを格納するために用いるキャッシュ・バッファ制御方法を含んでいる。この方法は、メモリ・セルを複数のページに論理的に分割するステップと、その中の少なくともいくつかの(通常は全ての)メモリ・セルが新しいデータを格納することができる各ページのカウンタにオープン状態を登録するステップと、新しいデータを格納することができるメモリ・セルを持たない各ページのカウンタにフル状態を登録するステップと、オープン状態にあるページに新しいデータを格納するステップとを備えている。
【0008】
また、本発明は、キャッシュ・バッファ内の複数の連続したメモリ・セルで構成された個々のページ用に設けられたページ・カウンタの値をチェックすることによって空きスペースを探索するステップを備えた、キャッシュ・バッファ内空きスペース探索方法を含んでいる。本発明の方法によって、重み率が読み出しコマンド率から決定される。読み出しコマンド率は、読み出しコマンド数を読み出しコマンド数と書き込みコマンド数の合計で除したものであって、パーセントで表される。重み率は個々のページ用に設けられたシャドウ・カウンタに割り当てられる。重み率はコマンドに優先順位をつけるために用いられる。
【0009】
また、本発明は、キャッシュ・バッファ内の複数の連続したメモリ・セルで構成された個々のページ用に設けられたページ・カウンタの値に基いて、ページがオープン状態にあるか否かを判定するステップと、前記判定ステップにおいてオープン状態にあると判定されたページにデータを格納するステップとを備えた、キャッシュ・バッファ制御方法を含んでいる。本発明の方法によって、順次アクセス、すなわち、一つの書き込みコマンドのあとにもう一つの書き込みコマンドがくるか、一続きまたは一ブロックのデータのあとに、それに続く一つの関連するデータのブロックがくるか、またはその両方であるアクセスの書き込みコマンドの書き込みデータを格納する間に、キャッシュ・バッファがバッファ・フル状態となる場合に、順次アクセス書き込みコマンドの書き込みデータのデータ書き込み動作が優先される。
【0010】
また、本発明は、複数のページに論理的に分割されたメモリ・セルで構成されたキャッシュ・メモリを有するディスク・ドライブのための制御装置であって、個々のページ用に設けられたページ・カウンタと、ページの中に格納されたデータのデータ転送の完了によって前記ページ・カウンタの値を更新する制御器とを備えた制御装置を含んでいる。本発明の装置によって、計算された読み出しコマンド率に基いて重み率を決定する手段と、オープン状態にある前記キャッシュ・バッファのページにデータを格納する手段と、順次アクセスの書き込みコマンドの書き込みデータを格納する間、前記キャッシュ・バッファがバッファ・フル状態になった場合に、順次アクセス書き込みコマンドの書き込みデータのデータ書き込み動作の優先順位を変更する手段とを提供することができる。
【0011】
本発明のこれらの目的およびその他の目的と、本発明の具体的な実施態様が、本発明の以下の詳細な説明と、図面と、請求の範囲とから、当業者にとって明らかとなるであろう。
【0012】
【発明の実施の形態】
図1は、コンピュータ・システム10のブロック図である。コンピュータ・システム10は、ホスト・ユニット12と、少なくとも一つの入力装置14と、少なくとも一つの周辺装置16を備えている。ホスト・ユニット12は、入力装置14によって供給されたデータを処理するための中央処理装置と、ランダム・アクセス・メモリ(RAM)等を有する一般的なパソコン等である。入力装置14は、キーボードと、データ、ビデオ、またはオーディオのソース等である。周辺装置16は、一つまたはそれ以上のプリンタ、ディスプレイ等を含む。
【0013】
コンピュータ・システム10はまた、データの不揮発性記憶のための少なくとも一つのハードディスク・ドライブ(HDD)18を備えている。HDD18は、一般に磁気記録媒体を含むが、光記憶媒体、テープ、またはその他の適当な不揮発性媒体であってもよい。
【0014】
図2は、ハードディスク・ドライブ18の概略構造を示す図である。HDD18は、制御器20と、不揮発性メモリ媒体22と、リードチャネル24と、ヘッドIC26と、サーボ・チャネル回路28と、スピンドル・モータおよびボイスコイル・モータ(SPM/VCM)30と、キャッシュ・バッファ32と、フラッシュROM34とを備えている。制御器20は、プロセッサ(MPU)36と、キャッシュ情報テーブル39と重み率テーブル41を有するS-RAM38と、ハードディスク制御器40と、S-RAM42とを備えている。読み出しヘッド44と書き込みヘッド46も装備されている。
【0015】
HDD18の一般的な動作は以下の通りである。ホスト・ユニット12は、MPU36を外部装置のコンソール・インターフェース(I/F)に接続するために、MPU36にRS232Cポート48などの適当な接続を介して読み出しコマンドと書き込みコマンドを送る。MPU36は、ハードディスク制御器40を介して読み出しコマンドと書き込みコマンドを実行する。このハードディスク制御器40は、種々のコマンドの優先順位をつけると共に、メモリ媒体22からの読み出しとメモリ媒体22への書き込みを直接管理する。HDC40は、メモリ媒体からの読み出しとメモリ媒体22への書き込みを上手に管理するためにキャッシュ・バッファ32内の揮発性メモリを使用する。ATA読み出しコマンドおよび書き込みコマンドを発行するパソコンと通信するために、ATAポート50等を介してデータを、ホスト・ユニット12から受け取り、ホスト・ユニット12へ転送する。
【0016】
キャッシュ・バッファ32はいく通りかの方法で使用される。例えば、時には、HDC40が、データをハードディスク・ドライブに受容可能な速度で連続的にメモリ媒体22に書き込むことができるように、キャッシュ・バッファ32に入力データを蓄える。キャッシュ・バッファ32は、データがメモリ媒体22のいくつかの場所に格納されているときは特に、メモリ(ディスク)媒体22から読み出されたデータを組み立てるために使用することもできる。キャッシュ・バッファ32は、順次読み出しコマンドまたは順次書き込みコマンドを処理するために使用することができる。キャッシュ・バッファ32はまた、読み出しコマンドおよび書き込みコマンドが混在している場合、および、多くの書き込みコマンドと読み出しコマンドが事実上同時に受け取る場合にも有用である。
【0017】
ホスト・ユニット12が読み出しコマンドと書き込みコマンドまたはそのいずれかを発すると、HDD18は、コマンドが書き込みコマンドであればホスト・ユニット12から、コマンドが読み出しコマンドであれば記憶媒体から、キャッシュ・バッファ32にデータを蓄積する。適当なときに、HDC40は、キャッシュ・バッファ32内のデータをホスト・ユニット12またはメモリ媒体22に転送させるキャッシュ・ヒット・コマンドを発する。
【0018】
図3は、「ページ・キャッシュ」と呼ばれる、キャッシュ・バッファ32を制御のために管理する方法を示す。図3に示すように、キャッシュ・バッファ32を、「ページ」と呼ばれるブロック0,1,2,...Nに論理的に分割する。ページ数はメモリ・サイズに基いて決定されるため、メモリ・サイズによって変化する。自由領域探索動作における読み出しデータ転送動作と書き込みデータ転送動作またはそのいずれかのために確保されるキャッシュ・バッファ内の領域は「自由領域」と呼ばれる。各ページは32のセクタを有し、各セクタは112バイトのメモリ・セルを有する。
【0019】
各ページ内のいくつかまたは全てのメモリ・セルは、任意の時間にデータを読み出すことと書き込むことまたはそのいずれかのために使用することができる。キャッシュ・バッファの全てのメモリ・セルは、書き込みデータまたは読み出しデータのいずれかのために使用することができる。このことは、キャッシュ・バッファが、読み出しデータ転送動作と書き込みデータ転送動作の両方のために共有されることを意味する。
【0020】
一つのキャッシュ・バッファを読み出しデータ転送動作と書き込みデータ転送動作の両方のために共有するために、ページ・キャッシュとページ・カウンタが用いられる。ページのページ・カウンタが特定の値、例えば「0」をもつ場合、そのページがオープン状態にあることを意味する。オープン状態は、空き(または使用可能)状態に相当する。これらのページは自由スペースと見なされる。ページのページ・カウンタがそのような特定の値を有する場合、そのページは自由スペースであって、読み出しアクセスと書き込みアクセスの両方のために使用することができる。もちろん、キャッシュ・バッファは、MPU36の制御のもとに、読み出しアクセスと書き込みアクセスの両方のためにアドレス可能なように、キャッシュ・バッファの全てのメモリ・セルを割り当てることができるように構成される。
【0021】
各ページのサイズはレジスタなどに格納される。すなわち、一つのページ内のセクタ数に相当する値「32」は、レジスタかS-RAM38の記憶場所に保持される。また、各ページの状態を格納するキャッシュ情報テーブル39が用意される。MPU36は、電源が入ると、S-RAM38の中にテーブル39を作成する。
【0022】
テーブル39は、キャッシュ・バッファ32の個々のページ0〜Nのために、図3に示すように、「カウンタ」のカウント値を格納する。このようにテーブルはページ・カウンタをページに関係付ける。ページが空いているか否かはページの「カウント」に基いて管理される。ページのカウント値は、各ページ内のデータの状態を示す。ページのカウント値が「1」またはそれ以上の場合、そのページが「保持」状態にあることを意味する。「保持」状態とは、そのページ内のデータが上書きされるべきではないことを意味する。ページのカウント値が「0」の場合、そのページが「オープン」状態にあることを意味する。「オープン」状態は、そのページの全てのメモリ・セルが上書き可能であることを示す。重要なことは、「オープン」状態とは、そのページの全てのメモリ・セルが、読み出しコマンドか書き込みコマンドのいずれかの他のデータのために使用可能であることを意味することである。「オープン」状態にあるそのような領域は、自由領域探索動作が可能であり、自由領域として適当である。
【0023】
MPU36は、データ読み出しやデータ書き込みの間のコマンド受信時と、データ転送完了時、またはそのいずれかの時における自由領域探索動作によって、キャッシュ・バッファ内に自由領域があるかどうかを判定する。自由領域探索動作において、MPU36は、全てのページの個々のカウンタの値をチェックする。カウンタの値は、MPU36内の組込みメモリ内に作成されたテーブル内に格納することができる。
【0024】
MPU36は、以下のようないくつかの形式の自由領域探索動作を用いることができる。
【0025】
(1)自由領域の探索サイズを固定ページ数に設定する。探索によって、「オープン」状態を有するページの数が固定ページ数と合致する連続自由領域があるかどうかがわかる。固定数のオープン状態ページが探索で発見されないならば、発見されるまでその探索を周期的に繰り返す。
【0026】
(2)最小数と最大数を自由領域探索のために設定する。この自由領域探索において、最小数と最大数の間の総ページ数を探索し、「オープン」状態を有する連続ページを確保する。
【0027】
(3)最小数のみを定義したのち、ページ数に相当する連続自由領域を探索して、できるだけ多くの「オープン」状態を有する連続ページを確保する。
【0028】
(4)探索サイズを設定せずに、ページ数に相当する連続自由領域を探索して、できるだけ多くの「オープン」状態を有する連続ページを確保する。
【0029】
(5)探索サイズを設定せずに、コマンドによって要求されたセクタ数を格納することができるページ数に相当する連続自由領域を探索し決定する。
【0030】
ディスク・ドライブの動作状況に基いて、ディスク・ドライブがこれらの自由領域探索動作のうちの一つまたはそれ以上を行うようにこれらの自由領域探索動作を選択する。自由探索動作において確保される連続ページ数は、自由領域探索パターンと、キャッシュ・バッファ内に残っている「オープン」状態を有するページの数とに基いて変化する。
【0031】
例えば、書き込み動作に対しては、自由領域探索パターン(3)および(4)を割り当てることができる。その場合、必要ならば、パターン(3)を最初に用いる。自由領域がパターン(3)によって発見されない場合は、パターン(4)を用いる。読み出し動作に対しては、パターン(1)、(2)、および(5)を割り当てることができる。その場合、必要ならば、パターン(1)を探索動作のために最初に用いる。もし自由領域を発見できない場合は、パターン(2)および(5)をその順に実行する。
【0032】
自由領域探索動作の開始点のために、最新の自由領域探索動作において確保したページの情報を、組込みメモリまたは他の適当な場所に保持する。保持された情報によって識別されるページに続くページから新しい自由領域探索動作を行うことができる。
【0033】
データは、図4(A)〜(D)及び図5(A)〜(C)に示すように、W1、W2等のいくつかのブロックに記録される。各ブロックは一つのコマンドに関するデータを表す。各ページのカウンタは、そのページにブロックが格納されていない場合は「0」、一つのブロックだけが格納されている場合は「1」、二つのブロックのいずれかまたは全てが格納されている場合は「2」というような数を示す。このように、二つ以上のブロックを各ページに格納でき、カウンタ内の数字がゼロでないかぎり保持状態が維持される。
【0034】
図3に示すように、キャッシュ・バッファは所定サイズXのページ0...Nを有し、カウンタ・フラグは各ページ内のデータ・パケットW1...Wnの数を表示する。例えば、図5(A)のデータ・パケットW1は完全にページ0内にあるが、ページ0はW2の一部をも含んでいる。従って、テーブル内に作成されたページ・カウントは、二つのデータ・パケットがページ0内にあることを示す。そのカウントは従って「2」である。ページ5はデータWbの一部だけを含んでいるので、そのカウントは「1」であり、ページ9はデータがないので、そのカウントは「0」である。
【0035】
図4(A)〜(D)及び図5(A)〜(C)に、データ・パケットW1〜W5を格納する第1の方法を示す。この第1の方法において、データ・パケットの長さは、書き込みコマンドがホスト・システムとの通信を通じて受け取られたときに、HDDによって知られる。
【0036】
図4(A)に示すように、データWa、Wb、およびWcは、ページ4〜6の各々の値が1またはそれ以上であるので、消去および上書きすることができないため、その状態は「保持」である(図3参照)。一方、ページ0〜3とページ7〜9の値はすべて「0」であるので、これらのページの状態はすべて「オープン」である。この状態において、書き込みデータW1のコマンドを受け取ると、ハード・ドライブ制御器(MPU)36は自由領域探索動作を実行する。この自由領域探索動作において、図4(A)に示すように、連続ページ0〜3のそれぞれのカウンタの値がすべて「0」であるので、ページ0〜3が自由領域とわかる。
【0037】
また、MPU36は、ホスト・コンピュータからHDC40を介してキャッシュ・バッファ32に格納される書き込みデータW1のセクタ数を得る。MPU36は更に、S-RAM38から所定数X1を得る。ここで、図5(B)に示すように、所定数X1は、一つのページの全セクタ数よりも少ない値であり、例えば「20」である。また、MPU36は、一つのページ内のセクタ数、例えば「32」に、自由探索動作において確保されたページ数を掛けることによって、自由領域探索動作において確保される自由領域の全セクタ数を計算する。
【0038】
書き込みデータW1のセクタ数が与えられると、MPU36は、自由領域の全セクタ数から書き込みデータW1のセクタ数を差し引く。MPU36はまた、自由領域の残りのセクタ数を得て、その残りのセクタ数を所定数X1と比較する。もし残り数が数X1よりも大きければ、書き込みデータW1を自由領域に格納する。ここで、図4(B)に示すように、書き込みデータW1は、ページ0〜3のうちの最小数のページから格納され、ページ0のテーブル内のページ・カウンタの値を1だけ増加させる。次の書き込みデータW2を受け取ると、MPU36は、図4(B)について説明したのと同じ方法を実行し、図4(C)に示すように、自由領域に書き込みデータW2を格納する。図4(C)において、MPU36はページ0と1に渡って書き込みデータW2を格納し、ページ0と1のカウンタの値を1だけ増やす。従って、ページ0と1のカウンタの値はそれぞれ「2」と「1」になる。
【0039】
図4(D)と図5(A)に示すように、MPU36は、書き込みデータW3とW4に対して同じ手順を繰り返し、書き込みデータW3とW4をキャッシュ・バッファに格納する。MPU36は、その手順の実行の間にページ2と3のカウンタの値を変更する。
【0040】
キャッシュ・バッファに書き込みデータW1〜W4を格納した後、書き込みデータW5を受けたときに、MPU36は、自由領域の残りのセクタ数が所定数X1よりも少ないことを認識する。そこでMPU36は、書き込みデータW5のセクタ数が所定数X1よりも少い可能性があっても、書き込みデータW5を自由領域に格納する動作を停止する。それからMPU36は、新しい自由領域探索動作を開始する。図5(B)に示すように、MPU36は、その新しい自由領域探索動作を通して次の自由領域を得る。上記で説明したように、自由領域探索動作における確保される連続ページ数を変化させることができる。ここで、自由領域探索動作において新しく発見された自由領域には、図5(B)の中でハッチングが施されたようにページ7〜9がある。
【0041】
それから、MPU36は、図5(C)に示すように、書き込みデータW5をページ7と8に渡ってキャッシュ・バッファ42に格納し、ページ7と8のカウンタの値を1だけ増やす。すなわち、書き込みデータW5のセクタ数が大きくとも、W5はページ7とページ8の一部とに格納される。ページ8の残りとページ9とは次の使用または続いてくるコマンドのために残される。
【0042】
キャッシュ・バッファを複数のページに分割し、各ページのカウントを記録することによって、システムは、自由スペースがキャッシュ・バッファの中のどこにあるのかを容易に決定することができる。また、「保持」状態と「オープン」状態が、個々のページの値に基いて管理されるので、キャッシュ・バッファのバッファ・スペースを、書き込みデータだけのバッファ・スペースと読み出しデータだけのバッファ・スペースに分ける必要はない。従って、全てのページを例えば書き込みデータだけに用いることができるので、キャッシュ・バッファの記憶容量を有効に利用することができる。
【0043】
図6(A)〜(C)に、データ・パケットW1〜W5を格納する第2の方法を示す。第2の方法においては、データ・パケットの長さは、書き込みコマンドが受け取られたとき、HDDによって知られていない。この状態において、W1〜W5を、上記に図4(A)〜図5(C)を参照して述べた手順と同様な方法で、ページ1〜3の自由領域に連続的に格納する。ここで、MPU36内で実行される手順は、セクタ数の所定数X1との比較を含んでいない。なぜなら、個々の書き込みデータのセクタ数が、書き込みデータW1〜W5を格納するときに知られていないためである。
【0044】
データ・パケットW1〜W5の書き込みデータを格納する間、MPU36は、書き込みデータを1つのセクタ・ユニット内のキャッシュ・バッファの自由領域に格納するたびに、確保された自由領域の全セクタ数を1だけ減らす。従って、MPU36は、自由領域内にW5の全てのデータのための十分なメモリ容量がないため、ページ0〜3の確保された自由領域内のスペースが不十分であることを知る。そこで、MPU36は、図6(A)に示すように、W5の書き込みデータの一部、すなわちW5aをページ3に格納したのち、書き込みデータW5の残りをキャッシュ・バッファに格納することを停止する。停止後、MPU36は、新しい自由領域探索動作を開始する。MPU36が次の自由領域、すなわち図6(B)のページ7〜9を見つけると、W5の残り、すなわち書き込みデータW5bを、図6(C)に示すようにページ7に格納する。最後に、MPU36は、W5をページ3と7に分割したことをRAMに記録する。
【0045】
図7(A)〜図7(C)に、データ・パケットW1〜W5を格納する第3の方法を示す。この第3の方法においては、データ・パケットの長さは、書き込みコマンドが受け取られたとき、HDDによって知られている。この第3の方法においては、残りのセクタ数を所定数X1と比較する手順がないことを除いて、図4(A)〜(D)に示されたのと同じ手順が実行される。図4においてX1は所定値であり、図7においてX2は残りの自由スペースである。比較を実行する代わりに、書き込みデータW1〜W5の各々を受け取ったときに、MPU36は、自由領域の残りのセクタ数から書き込みデータのセクタ数を差し引くことによって、書き込みデータW1〜W5の各々のセクタ数が、自由領域の残りのセクタ数よりも大きいかどうかを判定する。自由領域の残りのセクタ数が書き込みデータのセクタ数より大きい場合、MPU36は、書き込みデータをキャッシュ・バッファの自由領域に格納する。図7(A)に示すように、W1〜W4の書き込みデータが自由領域のページ0〜3に渡って格納される。
【0046】
しかしながら、書き込みデータW5を受け取ったとき、自由領域の残りのセクタ数X2は、書き込みデータW5のセクタ数よりも少ないので、MPU36は、書き込みデータW5をページ0〜3の自由領域に格納するのを停止する。
【0047】
それからMPU36は、新しい自由領域探索動作を実行し、図7(B)に示すように、ページ7〜9のカウンタの値がすべて0であるので、ページ7〜9に新しい連続自由領域を見つける。新しい連続自由領域を確保した後、MPU36は、図7(C)に示すように、書き込みデータW5をページ7に格納する手順を開始する。
【0048】
図8及び図9は、図4(A)〜図5(C)を参照して上述された第1の方法に関するデータ転送動作のイベント順を示すフローチャートである。
【0049】
ステップS10で書き込みコマンドを受け取ると、MPU36は自由領域探索動作を実行する。探索動作を実行する間、MPU36は、ステップS12において、メモリ媒体に書き込むデータが、データ転送が完了したその前の書き込みコマンドのデータと重なるかどうかを判定する。もし重なる場合は、新しいコマンドの要求データを、前の書き込みコマンドからの同じデータが書き込まれたキャッシュ・バッファの領域に上書きする。それから、重なりデータ削除コマンドをステップS14で実行し、データ転送動作を実行する。ステップS12で重なりがないか、ステップS14で重なりデータを削除したならば、MPU36は次のステップS18に進む。
【0050】
図4(A)に示すように、自由領域探索動作において自由領域が確保されたならば、MPU36は、一つのページの所定セクタ数に、自由領域探索動作において確保されたページの数を掛けることによって、自由領域内の全セクタ数を計算する。
【0051】
順次アクセス・ステップS18は、新しいコマンドが、新しいコマンドのすぐ前を行くコマンドと順序関係があるかどうかを判定する。もし順次アクセスがあれば、すなわち、書き込みコマンドのデータのすぐ後にもう一つの書き込みコマンドのデータがあれば、新しい書き込みコマンドのデータを前の書き込みコマンドのデータに続けるために、前の書き込みコマンドのデータのすぐ後に、新しい書き込みコマンドのデータをバッファ内の位置に転送する(すなわち、W1のすぐ後にW2を転送する)。もし順次アクセスがあれば、ステップS20において、前のコマンドのセクタ・カウントに、新しい書き込みコマンドのセクタを表す数を加えることによって、前の書き込みコマンドのセクタ・カウントを調節する。その後、新しい書き込みコマンドは無視される。
【0052】
ステップS18で順次アクセスがないか、ステップS20でセクタ・カウントを調節したならば、ステップS22でキャッシュ・バッファへのデータ転送を開始する。ここで、MPU36は、書き込みコマンドを受け取った後、ホスト・システムとの通信を通じて書き込みデータのセクタ数を受け取る。それから、MPU36は、自由領域の全セクタ数から書き込みデータのセクタ数を差し引いて、その計算結果を、あとで使用するために、一時的な格納手段、例えばS-RAM38に格納する。通常、ページ数、すなわち自由領域探索動作において得られる連続セクタ数は、書き込みデータのセクタ数に比べて比較的大きい。
【0053】
図4(B)に示すようにデータ転送動作が完了すると、MPU36は、ステップS24において、書き込みデータが前のステップS22で格納されたページのページ・カウンタの値を一つ増やす。また、MPU36は、ステップS26において、受け取ったコマンドのアクセス範囲、すなわち、両方ともLBAである、データの先行アドレスおよびデータの末端アドレスと、キャッシュ・バッファ内のデータのアドレスとを、データのキャッシュ情報としてキャッシュ・テーブル39に保存する。MPU36は、電源が入るとS-RAM38内にキャッシュ・テーブル39を作成し、読み出しコマンドや書き込みコマンドまたはパケットの処理後に、そのテーブルの全てを更新する。
【0054】
データとキャッシュ情報をそれぞれキャッシュ・バッファとキャッシュ・テーブルに保存した後、ステップS30でコマンド履歴を計算する。コマンド履歴はハードディスク・ドライブのキャッシュ機能である。コマンド履歴機能において、MPU36は、ディスク・ドライブによって受け取られたホスト・システムから発せられた読み出しコマンドと書き込みコマンドのサンプル数によって、読み出しコマンドと書き込みコマンドの内の読み出しコマンドの割合を決定する。所定数である、読み出しコマンドと書き込みコマンドのサンプル数は、ディスク・ドライブ内の動作状況に基いて変化する。
【0055】
ここで、MPU36に、S-RAM38に格納された重み率テーブル41(図10)が与えられる。この重み率テーブル41は、ハードディスク・ドライブの工場または設計段階で予め決定される。この重み率テーブルには、図8に示すように、読み出しコマンドと書き込みコマンドのうちの読み出しコマンドの割合と重み率との間の関係が格納されている。図8は、読み出しコマンド率と重み率との間の関係を格納するテーブル41を示している。得られた割合が0%であれば重み率は「0」である。得られた割合が1〜34%であれば重み率は「1」である。割合が35〜67%であれば重み率は「2」である。割合が68%より大きければ重み率は「3」である。割合と重み率との間の関係は変更することができ、動作状況、性能などに基き、望みどおりに分類することができる。重み率はページのシャドウ・カウンタの初期値を決定するために用いられる。
【0056】
計算された割合に従って、MPU36は、関係テーブルを参照することによって重み率を得る(図8のステップS30)。ステップS32で重み率が変更されていれば、ステップS34で全てのページのシャドウ・カウンタの値を一つ減らす。ステップS32で重み率の変更がないか、ステップS34で全てのシャドウ・カウンタの値を一つ減らすと、MPU36は次のステップである図9のステップS36へ進む。
【0057】
ステップS36で、MPU36は、キャッシュ・バッファ内の自由領域の残りのセクタ数が所定のセクタ数X1よりも少ないかどうかを判定する。もし少なければ、ステップS38に進んで、図5(B)に示すように、新しい自由領域探索動作を実行する。所定のセクタ数X1は図5(B)に示されている。それから、ステップS40で、新しい自由領域を得るのに成功したかどうかを判定する。新しい自由領域が得られなければ、ステップS38に戻る。
【0058】
ステップS36においてNOであるか、ステップS40で新自由領域が得られると、MPU36はステップS42に進む。ステップS42においては、必要なら、書き込み順序変更動作を開始し、バッファ休止優先順位を設定する。
【0059】
書き込み順序変更動作の機能は、書き込みコマンドのディスク書き込み動作の順序を変更することである。順序変更動作の優先順位は、ディスク媒体上の書き込みコマンド内のデータの物理的位置に基いて決定される。現在ディスク書き込み動作中の書き込みコマンドのデータの物理的位置に、それ以外の書き込みコマンドのそれよりも物理的に接近しているデータに向けられた書き込みコマンドに、順序変更動作のより高い優先順位が与えられる。書き込み順序変更動作に基いて、書き込みコマンドを処理する順序を変更し、順序が変更された書き込みコマンドをディスク書き込み動作のための待ち行列テーブルに格納する。
【0060】
バッファ休止優先順位の機能は、書き込みコマンドが書き込み順序変更動作における最も高い優先順位を有するように、その書き込みコマンドのフラグを設定することである。ステップS42が完了した後、MPU36は、図8及び図9のルーチンに関する新しいコマンドを受け取るまで待機する。
【0061】
図11及び図12は、図6(A)〜(C)および図7(A)〜(C)を参照して説明された第2と第3の方法に関するデータ転送動作のイベント順を示すフローチャートである。
【0062】
ステップS50で書き込みコマンドを受け取ると、MPU36は自由領域探索動作を実行する。探索動作を実行する間、MPU36は、ステップS52において、メモリ媒体に書き込むデータが、データ転送が完了したその前の書き込みコマンドのデータと重なるかどうかを判定する。もし重なる場合は、新しいコマンドの要求データを、前の書き込みコマンドからの同じデータが書き込まれたキャッシュ・バッファの領域に上書きする。それから、ステップS54で、重なりデータ削除コマンドを実行し、ステップS55でデータ転送動作を実行する。ステップS52で重なりがないか、ステップS54で重なりデータを削除したならば、MPU36は次のステップS56に進む。
【0063】
図4(A)に示すように、自由領域探索動作において、自由領域が確保されたならば、MPU36は、一つのページの所定セクタ数(すなわちセクタの数)に、自由領域探索動作において確保されたページの数を掛けることによって、自由領域の全セクタ数を計算する。
【0064】
順次アクセス・ステップS56は、新しいコマンドが、新しいコマンドのすぐ前を行くコマンドと順序関係があるかどうかを判定する。もし順次アクセスがあれば、すなわち、書き込みコマンドのデータのすぐ後にもう一つの書き込みコマンドのデータがあれば、新しい書き込みコマンドのデータを前の書き込みコマンドのデータに続けるために、前の書き込みコマンドのデータのすぐ後に、新しい書き込みコマンドのデータをバッファ内の位置に転送する(すなわち、W1のすぐ後にW2を転送する)。もし順次アクセスがあれば、ステップS58において、前のコマンドのセクタ・カウントに、新しい書き込みコマンドのセクタ数を加えることによって、前の書き込みコマンドのセクタ・カウントを調節する。その後、新しい書き込みコマンドは無視される。
【0065】
ステップS56で順次アクセスがないか、ステップS58でセクタ・カウントを調節したならば、ステップS60でキャッシュ・バッファへのデータ転送を開始する。ステップS60は、図7を参照して述べられた書き込み動作に対しては行われない。なぜなら、書き込みコマンドのデータが自由領域に格納されないかもしれないためである。
【0066】
図4(B)に示すようにデータ転送が完了すると、MPU36は、書き込みデータが前のステップS60で格納されたページのページ・カウントの値を一つ増やす。また、MPU36は、受け取ったコマンドのアクセス範囲、すなわち、両方ともLBAである、データの先行アドレスおよびデータの末端アドレスと、キャッシュ・バッファ内のアドレスとを、前のステップS60において格納された書き込みデータのデータのキャッシュ情報としてキャッシュ・テーブルに保存する。MPU36は、電源が入るとS-RAM38内にキャッシュ・テーブルを作成し、読み出しコマンドや書き込みコマンドの処理後に、そのテーブルを更新する。
【0067】
ステップS62において、MPU36は、書き込みコマンドのデータの必要とするセクタを、図7(A)〜(C)の書き込み動作のための自由領域探索動作において得られた自由領域に格納することができるかどうかを判定する。すなわち、システムは、新しい書き込みコマンドに関する新しいデータを格納するために、キャッシュ・バッファ内の現在使用中の自由領域に十分な残りの記憶容量があるかどうかを判定する。もし十分な容量があれば、新しい書き込みコマンドのデータをキャッシュ・バッファ内の位置に転送する。その位置は前のコマンドのデータの次にある。このようにキャッシュ・バッファに連続してデータを書き込む。
【0068】
図6(A)〜(C)の書き込み動作に対して、ステップS62において書き込みコマンドのデータの必要とするセクタをバッファに格納できるかどうかは、図6(A)〜(C)を参照して述べられたような数値を一つ減らす動作すなわちデクリメントを通じて判定される、確保された自由領域内にスペースがあるかどうかによっている。スペースがないと判断すると、書き込みデータの転送をデータ転送の途中で停止する。すなわち、書き込みデータの一部をキャッシュ・バッファ内の最初の自由領域に格納する。
【0069】
ステップS62で、必要なセクタを格納できない場合は、ステップS66で自由領域探索を行う。また、ステップS62で必要なセクタを格納できない場合は、新しい書き込みコマンドのデータのためのデータ転送が停止され、MPU36がデータ転送休止を行う。それから、ステップS72で、個々のページの自由領域が確保されたかどうかを判定する。確保されなければ、十分な自由領域がステップS72で確保されるまで、自由領域探索パターンを別の自由領域探索パターンに変更することによって、自由領域探索を続ける。
【0070】
ステップS62で、必要な要求セクタを確保できた場合は、MPU36は、ステップS74において、書き込みデータをキャッシュ・バッファの自由領域に格納するデータ転送動作を開始する。ステップS74においてデータ転送が完了すると、MPU36は、ステップS76で、書き込みデータが前のステップS74で格納されたページのページ・カウンタの値を一つ増やす。また、MPU36は、ステップS78において、図5の書き込み動作のために、受け取ったコマンドのアクセス範囲、すなわち、両方ともLBAである、データの先行アドレスおよびデータの末端アドレスと、キャッシュ・バッファ内のデータのアドレスとを、分割された書き込みデータがキャッシュ・バッファ内にあることとその位置とを示すための情報に加えて、キャッシュ・テーブル39、またはデータのキャッシュ情報のためにS-RAM38内に作成された別のテーブルに保存する。
【0071】
図8、9の書き込み動作フローチャートに示されたように、データとキャッシュ情報をそれぞれキャッシュ・バッファとキャッシュ・テーブルに保存した後、ステップS80でコマンド履歴を計算する。コマンド履歴機能において、MPU36は、ディスク・ドライブによって受け取られた、ホスト・システムから出された読み出しコマンドと書き込みコマンドのサンプル数によって、読み出しコマンドと書き込みコマンドの内の読み出しコマンドの割合を計算する。計算された割合は読み出しコマンド率と呼ぶことができる。
【0072】
得られた割合に従って、MPU36は、関係テーブルを参照することによって重み率を得る(図10)。ステップS82で読み出しコマンド率が変化していると、ステップS84で全てのページのシャドウ・カウンタの値を一つ減らす。ステップS82で読み出しコマンド率が変化していないと判断するか、ステップS84で全てのシャドウ・カウンタの値を一つ減らすと、MPU36は図12のステップS86へ進む。
【0073】
ステップS86において、MPU36はデータ転送休止があったかどうかを判定する。もしあれば、ステップS88でデータ転送を再開する。図6(A)〜(C)の書き込み動作では、書き込みデータの残りの部分をキャッシュ・バッファの新しく得られた次の自由領域に格納するようにデータ転送動作を行う。ここでMPU36は、図6(A)〜(C)を参照して上述されたように、最初の自由領域の書き込みデータの残りの部分が次の自由領域にあることを示すための情報を、S-RAM38に登録する。残りの書き込みデータのデータ転送の完了に続いて、MPU36は、ページ・カウントを一つ増やすことと、キャッシュ保存と、読み出しコマンド率の計算と、率変更の決定と、シャドウ・カウンタを減らすこととを実行する。
【0074】
図7の書き込み動作では、MPU36はステップS88においてステップS74〜S84と同じ動作を実行する。
【0075】
ステップS86においてデータ転送休止がなかったならば、ステップS90において、コマンドがバッファを休止状態にするのかどうかを判定する。もしするのであれば、ステップS92で、バッファ休止優先機能を設定する。ステップS94においては、書き込みデータのディスク書き込み動作の順序を変更するために必要ならば、書き込み順序変更機能の開始と、バッファ休止優先順位機能の設定の両方を行う。
【0076】
ステップS94が完了した後、MPU36は、図11、12のルーチンに関する新しいコマンドを受け取るまで待機する。
【0077】
図13はディスク書き込み動作のフローチャートである。
【0078】
ディスク書き込み動作は、キャッシュ・バッファの中のまだ書き込まれていない書き込みデータをディスク記憶媒体に書き込む動作である。それは図8、9と図11、12の書き込み動作と共に非同期で実行される。それはS-RAM38の待ち行列テーブルに待ち行列がある限り実行される。
【0079】
ステップS100でディスク書き込み動作のためのディスク書き込みモジュールを開始する。MPU36はそれからステップS102で、待ち行列テーブルの中の先頭コマンドを選択し、書き込みデータのディスク書き込み情報を得る。それからMPU36は、ステップS104において、その情報に基いてディスク書き込みを開始する。ディスク書き込み動作が完了するまで、MPU36は、「1」へ飛んで、ステップS106でループし、ディスク書き込み動作の終了を待つ。
【0080】
ステップS110でディスク書き込み動作が完了すると、MPU36は、ステップS112で、このディスク書き込み動作によって書きこまれた書き込みデータを格納するページのページ・カウンタの値をリセットする。それからMPU36は待ち行列テーブルを探索する。ステップS114で待ち行列テーブルに待ち行列のコマンドがあると、ステップS102に戻る。待ち行列がなければ、「1」へ飛んで、次のディスク書き込み動作を待つ間、ステップS116で「1」内をループする。
【0081】
図14及び図15は本発明のもう一つのデータ転送動作を示す。
【0082】
図14(A)において、MPU36は、設定を伴った自由領域探索動作を実行する。この動作において、探索のための最小ページ数は「2」であり、最大ページ数は「10」である。MPU36は、探索動作を実行して、図14(A)に示すように、自由領域として、それぞれ「オープン」状態にある10の連続ページを発見する。
【0083】
ここで、受け取るコマンドはランダム・アクセスの書き込みコマンドである。コマンドW1〜W12が受け取られる。事実上は、10ページの自由領域が確保されている。それから、ランダムな書き込みコマンドW1〜W11を受け取り、書き込みコマンドW1〜W11の複数の書き込みデータをキャッシュ・バッファに格納する。それから、ページ0〜9の個々のページ・カウンタが、格納された書き込みデータに従ってカウント値を格納する。書き込みコマンドW11を受け取ることによって、現在使用される自由領域は、図14(B)に示すように、フル状態となる。
【0084】
他の自由領域に次のコマンドを受け取るために、自由領域探索動作を実行する。しかし、オープン・ページがないので、次の書き込みコマンドW12の受け取りはMPU36によって待ち状態に設定される。MPU36はキャッシュ・バッファの中に一つのオープン・ページが使用できるようになるまで待機する。
【0085】
待機中、書き込みコマンドW2、W5、W8、W10、およびW11のディスク書き込み動作を完了する。それから、少なくともページ7からページ9までのカウンタ値を「0」に変更する。そうすると、図14(C)に示すように、少なくともページ7〜9が「オープン」状態となる。ここで、書き込みコマンドW2、W5、W8、W10、およびW11のディスク書き込み動作が、書き込み順序変更動作とバッファ休止優先動作によって、優先されている。
【0086】
新しい自由領域探索動作によって、図15(A)に示すように、ページ7〜9を次のコマンドのための新自由領域として選択する。それから書き込みコマンドW12を受け取る。書き込みコマンドW12の書き込みデータを、図15(B)に示すように、新しく得られた自由領域のページ7に格納する。
【0087】
図16は読み出し動作のフローチャートである。
【0088】
ステップS160で読み出しコマンドを受け取ると、MPU36は、ステップS162で、前の読み出しコマンドの読み出しデータを格納しているページのシャドウ・カウンタの値を一つ減らす。それから、ステップS164で、前のコマンドが読み出しコマンドであるかどうかと、それが順次アクセスのためのものかどうかを判定する。順次アクセスのためのものであれば、ステップS166で、コマンド履歴から読み出しコマンド率を計算し、ステップS168で、読み出しコマンドの読み出しデータを格納しているページのページ・カウンタとシャドウ・カウンタを設定する。ステップS182でデータ転送動作が始まる。そして、ステップS184でデータ転送が完了したときに、アルゴリズムは終了する。
【0089】
ステップS164において、順次アクセスでない場合、例えば、読み出しコマンドの前のコマンドが書き込みコマンドであった場合、ステップS170で、キャッシュ・データが完全にヒットしたかどうかを判定する。ヒットした場合、ステップS182でデータ転送動作がすぐに始まる。ヒットしなかった場合、ステップS172で自由領域探索を行う。ステップS174で自由領域が確保されるまでページを連続的に探索する。ステップS176で読み出しコマンド率をコマンド履歴から計算する。これは書き込み動作について述べた動作と同じである。更に、ステップS178で、記憶媒体から読み出された読み出しデータを格納しているページのページ・カウンタとシャドウ・カウンタを設定する。
【0090】
それからステップS180で記憶媒体の読み出しを行い、ステップS182でデータを転送する。MPU36は、記憶媒体から取得する読み出しデータのサイズを、それぞれの取得時に、一つのページの最大記憶容量よりも小さい値に制限する。従って、一つのページに格納される全ての読み出しデータは、そのページがオープンに設定されるまで有効なままで残る。
【0091】
図10に示すテーブルから得られる率は、キャッシュ・バッファの個々のページ用に設けられたシャドウ・カウンタに与えられる。このシャドウ・カウンタによって、読み出しコマンドの中で使用されるキャッシュ・バッファのページが、次の読み出しコマンドや書き込みコマンドのための当面の使用要求から保護される。それから、ページに格納された読み出しデータがしばらくの間保護される。ページのシャドウ・カウンタがゼロ以外の値を持っていなければ、そのページに格納された読み出しキャッシュ・データは保護される。前記率はハードディスク・ドライブの性能調整によって調整可能である。
【0092】
図17(A)〜図18(C)は、コマンド履歴動作においてシャドウ・カウンタを用いることによってキャッシュ・バッファの読み出しデータを保護する第1の方法を示す。コマンド履歴はキャッシュ機能の一つのである。重み率「2」を持ったランダム・アクセス読み出しコマンドR1、R2、およびR3を受け取るときのコマンド履歴動作を以下に説明する。
【0093】
図17(A)〜図18(C)において、ページ0〜9がコマンド履歴動作の説明のために示されている。キャッシュ・バッファの中に10より多いページが形成されるのは明らかである。図17(A)〜図18(C)において、ページ・カウンタとシャドウ・カウンタが各ページ用に設けられている。ページ・カウンタとシャドウ・カウンタの値が、個々のページと共にS-RAMの中に格納されて、図17(A)〜図18(C)に示すようなテーブルを形成する。図13(A)〜13(G)において、「状態」列と「コマンド」列は、説明と動作を容易に理解するためだけのものである。「状態」列と「コマンド」列は、テーブルの中に形成されていない。
【0094】
図17(A)に示すように、読み出し動作や書き込み動作のために使用することができる三つのオープン領域がある。このオープン領域はページ1、3、および4である。従って、ページ1、3、および4のページ・カウンタの値は全て「0」でなければならない。図13(A)において、残りの領域(ページ)は、そのページ・カウントの値が「1」であるので、書き込みデータのために使用される。このことは残りのページが書き込み待ちの状態にあることを意味し、残りのページの書き込みコマンドのための待ち行列が待ち行列テーブルに格納されている。ページの待ち行列がMPU36によって完了されないならば、ページのページ・カウンタは「1」のままであり、ページの状態は「保持」に保たれる。これらの手順は読み出しコマンドにも適用可能である。
【0095】
それから、図17(B)に示すように、ランダム・アクセス読み出しコマンドR1を受け取る。読み出しコマンドを受け取った後、自由領域探索動作を開始し、ページ1を読み出しコマンドR1のための自由領域として確保する。ここで、読み出しコマンドR1は、図10を参照して説明され、かつ、図10に示されている重み率「2」と共に受け取られる。一つの読み出しコマンドの読み出しデータはキャッシュ・バッファの一つのページ内に格納されている。読み出しコマンドR1の受け取りに際して、MPU36は、自由領域探索動作によって読み出しコマンドR1にページ1を割り当て、ページ・カウンタの値を「0」から「1」に変更する。従って、ページ1の状態とコマンドはそれぞれ「保持」と「R1」である。更に、重み率が現在「2」に保たれているので、値「2」がページ1のシャドウ・カウンタに設定される。
【0096】
次の読み出しコマンドR2を受け取るときに、MPU36は、次の読み出しコマンドR2のために、新しい自由領域探索動作によって確保されたページ3を割り当てる(図17(C))。MPU36は、読み出しコマンドR1のシャドウ・カウンタの値を1だけ減らす。このことはページ1のシャドウ・カウントが2から1に下がることを意味する。MPU36はまた、図17(C)に示すように、ページ3のページ・カウンタとシャドウ・カウンタをそれぞれ「1」と「2」に設定する。
【0097】
図17(D)に示すように、次の読み出しコマンドR3を受け取るときに、MPU36は、次の読み出しコマンドR3のために、更なる新しい自由領域探索動作において発見したページ4を割り当てる。それから、MPU36は、読み出しコマンドR1とR2のシャドウ・カウンタの値をそれぞれ1だけ減らす。このことはページ1のシャドウ・カウントが1から0に下がり、ページ3のシャドウ・カウントが2から1に下がることを意味する。MPU36はまた、ページ4のページ・カウンタとシャドウ・カウンタをそれぞれ「1」と「2」に設定する。
【0098】
ここで、もし読み出しコマンドR1の読み出しデータが、読み出しコマンドR3を受け取る前に転送されているならば、ページ1のページ・カウントは、読み出しコマンドR1の読み出しデータの転送時に、「1」から「0」に変更されるかもしれない。しかしながら、読み出しコマンドR3を受け取るまで、テーブルはページ1のシャドウ・カウンタの値を「1」に保つ。従って、読み出しコマンドR3を受け取るときに、ページ1の読み出しデータが転送されているならば、MPU36は、ページ1のシャドウ・カウンタを1だけ減らす。読み出しデータが転送されたかどうかは、MPU36によってS-RAM38内の待ち行列テーブルを参照することによって判定される。
【0099】
このタイミングで、図18(A)に示すように、ページ1に「オープン」状態が与えられ、ページ1がそのあとに続く読み出しコマンドや書き込みコマンドのために解放される。このことは、読み出しコマンドR1の読み出しデータが、次の読み出しコマンドR3がディスク・ドライブに来るまで、有効データとしてキャッシュ・バッファ内に保持されることを意味する。これは、キャッシュ・バッファに格納された読み出しデータや書き込みデータのデータ転送動作が、MPU36の制御のもとに行われる読み出しコマンドや書き込みコマンドの処理と非同期で、HDC40の制御のもとで行われるためである。そのようなHDCとMPUの独立制御は周知の技術であるので、両者の具体的な動作および両者の関係はここでは説明しない。
【0100】
ランダム・アクセスの次の読み出しコマンドR4をホスト・システムが発し、ハードディスク・ドライブが受け取ると、ディスク・ドライブ内のMPU36は、その読み出しコマンドR4のために、新しく実行した自由領域探索動作において発見したページ1を割り当てる。それから、MPU36は、読み出しコマンドR2とR3のシャドウ・カウンタの値をそれぞれ1だけ減らす。このことは、ページ3のシャドウ・カウントが「1」から「0」に下がり、ページ4のシャドウ・カウントが「2」から「1」に下がることを意味する。MPU36はまた、図18(B)に示すように、ページ1のページ・カウンタとシャドウ・カウンタをそれぞれ「1」と「2」に設定する。
【0101】
もし読み出しコマンドの読み出しデータが転送されたならば、MPU36はまた、読み出しコマンドR4を受け取るときにページ3のページ・カウンタの値を一つ減らす。読み出しコマンドR4を受け取る前に読み出しコマンドR2の読み出しデータが転送されたとしても、図18(C)に示すように、このタイミングでページ3を「オープン」状態に変更する。
【0102】
上述したように、ページのシャドウ・カウンタの値が「0」に設定されていなければ、ページ内に格納された読み出しデータ全体は依然として有効である。また、キャッシュ・バッファ内の読み出しデータの保持時間によって読み出しコマンド率が変化するので、キャッシュ・ヒット率がひどく悪化することはない。
【0103】
図19(A)〜(D)及び図20(A)、(B)は、コマンド履歴動作においてシャドウ・カウンタを用いることによってキャッシュ・バッファの読み出しデータを保護するもう一つの方法を示す。
【0104】
ランダム・アクセスにおいて、読み出しコマンドR1およびR2と書き込みコマンドW1が混在しているときのコマンド履歴動作を、図19(A)〜図20(B)を参照して説明する。図19(A)〜図20(B)の方法においては、これらのコマンドは、重み率「2」と共に受け取られ、一つの読み出しコマンドのための読み出しデータが、キャッシュ・バッファの一つのページ内に格納される。
【0105】
図17(A)〜図18(C)と同様に、ページ0〜9が説明のために使われており、ページ・カウンタとシャドウ・カウンタが各ページ用に設けられている。ページ・カウンタとシャドウ・カウンタの値が、個々のページと共にS-RAMの中に格納されて、図19(A)に示すようなテーブルを形成する。図19(A)において、「状態」列と「コマンド」列は、説明と動作を容易に理解するためだけのものである。「状態」列と「コマンド」列は、テーブルの中に形成されていない。
【0106】
図17(A)と同様に、読み出し動作や書き込み動作のために使用することができる、ページ1、3、および4の三つのオープン領域があることが想定されている。また、図19(A)において、残りの領域(ページ)は、そのページ・カウントの値が「1」であるので、書き込みデータのために使用されることが想定されている。このことは残りのページが書き込み待ちの状態にあることを意味し、残りのページの書き込みコマンドのための待ち行列が待ち行列テーブルに格納されている。ページの待ち行列がMPU36によって完了されないならば、ページのページ・カウンタは「1」のままであり、ページの状態は「保持」に保たれる。これらの手順は読み出しコマンドにも適用可能である。
【0107】
それから、図19(A)に示すように、ランダム・アクセス読み出しコマンドR1が受け取られる。読み出しコマンドを受け取った後、MPU36は、自由領域探索動作を開始し、ページ1を読み出しコマンドR1のための自由領域として確保する。それから、ソフトウェア・アルゴリズムが、読み出しコマンドR1のためにページ1を割り当て、ページ1のページ・カウンタの値を「0」から「1」に変更する。従って、ページ1のための状態とコマンドはそれぞれ「保持」と「R1」になる。また、MPU36は、ページ1のシャドウ・カウンタを「2」に設定する。
【0108】
次の読み出しコマンドR2を受け取るときに、ページ3が、新しい自由領域探索動作によって確保され、次の読み出しコマンドR2のために割り当てられる。プログラムは、図19(B)に示すように、読み出しコマンドR1のためのシャドウ・カウンタの値を1だけ減らし、ページ3のページ・カウンタとシャドウ・カウンタをそれぞれ「1」と「2」に設定する。
【0109】
図19(C)に示すように、MPU36はランダム・アクセスの書き込みコマンドW1を受け取る。ソフトウェアは、書き込みコマンドW1のために、更なる新しい自由領域探索動作において発見したページ4を割り当てる。それから、ソフトウェアはページ1と3のシャドウ・カウンタの値をそれぞれ1だけ減らす。ソフトウェアはまた、ページ4のページ・カウンタを1だけ増やす。ページ4のシャドウ・カウンタはどの値にも設定されないので、「0」に保たれる。
【0110】
読み出しコマンドR1の読み出しデータが転送されたならば、図20(A)に示すように、このタイミングで、ページ1のページ・カウンタを「1」から「0」に変更する。このことは、読み出しコマンドR1の読み出しデータがそのタイミングまで有効なデータとしてキャッシュ・バッファ内に保持されることを意味する。
【0111】
ランダム・アクセスの次の読み出しコマンドR3を受け取ると、MPU36は、次の読み出しコマンドR3のために、新しく実行した自由領域探索動作において発見したページ1を割り当てる。それから、プログラムは、図20(B)に示すように、ページ3のためのシャドウ・カウンタの値を1だけ減らし、ページ1のページ・カウンタとシャドウ・カウンタをそれぞれ「1」と「2」に設定する。
【0112】
読み出しコマンドR3を受け取る前に、ページ3の読み出しデータが転送されるならば、プログラムは、ページ3のページ・カウンタを1だけ減らす。図20(B)に示すように、このタイミングで、ページ3を「オープン」状態に変更する。
【0113】
読み出しコマンドと書き込みコマンドが、任意の時間枠内でランダムな順序で受け取られるページ・キャッシュにおいては、読み出しコマンドのために確保された自由領域が、書き込みコマンドのための自由領域に変更されることがままあるが、そのあと、読み出しデータは処理されず、キャッシュ・ヒット率が低下する。上記に説明したように、読み出しコマンドと書き込みコマンドが特定の時間枠内で混在しているとしても、ページの読み出しデータが、ページのシャドウ・カウンタを用いることによって、読み出しコマンド率に基いて有効に保持されるので、キャッシュ・ヒット率がひどく悪化することはない。
【0114】
キャッシュをバッファ休止状態にする、多くの順次アクセスが続くバッファ・フル状態を免れる方法を以下に説明する。
【0115】
図21(A)〜(C)及び図22(A)〜(C)は、ディスク書き込み動作の優先順位を変更することによってバッファ休止状態を免れる第1の方法を示す図である。図21(A)に示すように、MPU36がランダム・アクセスの書き込みコマンドW1と順次アクセスの書き込みコマンドW2〜W7を順に受け取ると仮定する。図15(A)において、ページ0〜2と10〜nが書き込みコマンドまたは読み出しコマンドのために使用されていて、全て「保持」状態にあり、ページ3〜9の自由領域が確保されているものとする。
【0116】
図21(A)において、ランダム・アクセスの書き込みコマンドW1の書き込みデータを最初に処理し、キャッシュ・バッファのページ3に格納する。それから、書き込みコマンドW2〜W7の書き込みデータを処理し、その書き込みデータを、書き込みコマンドW1の書き込みデータに続くキャッシュ・バッファの自由領域内のページに格納する。ページ3〜9への書き込みコマンドW5(W5aまで)のデータ転送動作の間、自由領域に残りのスペースがなくなると、すなわち、キャッシュ・バッファ全体がフル状態になれば、バッファ・フル状態と認められ、書き込み動作はバッファ休止状態へ進む。
【0117】
できるだけ早くバッファ休止状態から逃れるために、書き込みコマンドW2の書き込みデータの優先順位を最高レベルに設定する。そうするために、キャッシュ機能の一つであるバッファ休止優先順位機能が、書き込みコマンドW2のディスク書き込みのための待ち行列テーブルに設けられた欄にフラグを設定する。そのフラグは、ディスク書き込みの優先順位が待ち行列テーブルの中の最高レベルに変わったことを示す。それから、書き込み順序変更機能が待ち行列テーブルの内容を見直す場合、書き込みコマンドW2のディスク書き込みの処理順序を最初の位置に動かす。従って、他のコマンド、例えばW1、のディスク書き込みの前に、書き込みコマンドW2のディスク書き込みを、上記に説明したように、ディスク書き込み動作によって行う。図21(B)に示すように、ページ3〜5のハッチング箇所を次の書き込みデータのためにオープン状態に設定し、これをS-RAM38に保持する。
【0118】
それから、図21(C)に示すように、書き込みデータの残りの部分W5bを、バッファ休止優先順位機能、書き込み順序変更機能、およびディスク書き込み動作によってオープン状態となったキャッシュ・バッファのスペースに格納する。
【0119】
しかしながら、それに続く書き込みコマンドW6〜W7の書き込みデータを格納するためのキャッシュ・バッファ内の十分なスペースが依然としてなく、しかもバッファ・フル状態は解放されていない。その後、図22(A)と(B)に示すように、書き込みコマンドW6とW7の書き込みデータをキャッシュ・バッファの自由領域に格納するまで、上記に説明した手順を繰り返す。図22(C)に示すように、順次アクセスの最後の書き込みコマンドW7の書き込みデータが格納されると、バッファ休止状態が解放される。ここでは、自由領域のページ3〜9は、順次書き込みコマンドW2〜W7の書き込みデータを格納するとき、リングバッファのように用いられる。
【0120】
図23(A)〜(C)は、ディスク書き込み動作の優先順位を変更することによってバッファ休止状態を免れるもう一つの方法を示す図である。図21及び図22に示すように、MPU36がランダム・アクセスの書き込みコマンドW1と順次アクセスの書き込みコマンドW2〜W4とランダム・アクセスの書き込みコマンドW5を順に受け取ると仮定する。図23(A)〜(C)において、ページ0〜2と10〜nが書き込みコマンドまたは読み出しコマンドのために使用されていて、全て「保持」状態にあり、ページ3〜9の自由領域が確保されているものとする。
【0121】
図23(A)において、ランダム・アクセスの書き込みコマンドW1の書き込みデータが最初に処理され、キャッシュ・バッファのページ3に格納される。それから、書き込みコマンドW2〜W4の書き込みデータが処理され、その書き込みデータが、書き込みコマンドW1の書き込みデータに続くキャッシュ・バッファの自由領域内のページに格納される。ページ3〜9への書き込みコマンドW5(W5aまで)のデータ転送動作の間、自由領域にスペースがなくなると、すなわち、キャッシュ・バッファ全体がフル状態になれば、バッファ・フル状態と認められ、バッファ休止状態が生じる。
【0122】
できるだけ早くバッファ休止状態から逃れるために、書き込みコマンドW2の書き込みデータの優先順位を最高レベルに設定する。そうするために、バッファ休止優先順位機能が、書き込みコマンドW2のディスク書き込みのための待ち行列テーブルに設けられた欄にフラグを設定する。そのフラグは、ディスク書き込みの優先順位が待ち行列テーブルの中の最高レベルに変わったことを示す。それから、書き込み順序変更機能が待ち行列テーブルの内容を見直す場合、書き込みコマンドW2のディスク書き込みの処理順序を最初の位置に動かす。従って、他のコマンド、例えばW1、のディスク書き込みの前に、書き込みコマンドW2のディスク書き込みを、上記に説明したように、ディスク書き込み動作によって行う。図23(B)に示すように、ページ3〜5のハッチングされたメモリ・セルを次の書き込みデータのために「書き込み」状態に設定する。メモリ・セルの再書き込み状態をS-RAM38に保持する。
【0123】
それから、書き込みデータの残りの部分W5bを、図23(B)に示すように、バッファ休止優先順位機能、書き込み順序変更、およびディスク書き込み動作によってオープン状態となったキャッシュ・バッファのスペースに格納する。また、バッファ休止状態は図23(C)に示すように解放される。
【0124】
上述したように、たとえ、キャッシュ・バッファがデータ転送動作の間にフルになり、データ転送動作が停止したとしても、データ転送動作が停止したデータの自由領域と同じ領域に格納された書き込みデータのディスク書き込み動作を、他の書き込みデータを格納する前に実行する。従って、停止したデータ転送動作を、データ転送動作を停止した後の短時間内に再開することができる。すなわち、同じ順次書き込みコマンド内の前の書き込みコマンドの書き込みデータのためのディスク書き込み動作が、他の書き込みコマンド、例えば、別個の、あるいは、独立したランダム書き込みコマンドのそれよりも優先されるので、更に多くの時間を費やすことなく、バッファ・フル状態から抜け出すことが可能であり、従って、ディスク・ドライブの性能は低下しない。
【0125】
上述したように、キャッシュ・バッファは読み出しデータ転送動作と書き込みデータ転送動作の両方のために共有される。従って、多くの書き込みアクセスが短時間に集中したとしても、キャッシュ・バッファの全てのページを、自由領域がキャッシュ・バッファ内に確保される限り、書き込みアクセスのためのバッファとして使用することができる。このことは、多くの読み出しアクセスが短時間に集中する場合にも言える。従って、アクセスが短時間に集中したとしても、キャッシュ・ヒット率は悪化しない。
【0126】
ページが空であるか否かは、個々のページのページ・カウンタの値が「0」か否によって決まる。従って、キャッシュ・バッファ内の空きスペースの管理と探索は簡単かつ容易である。空きスペースを確保する探索速度を速くできる。
【0127】
更に、ページ・キャッシュは一つの読み出しデータだけに対してキャッシュ・バッファ内の一つのページを使用する。このことによって、古い読み出しキャッシュ・データを比較的長くキャッシュ・バッファ内で維持することができる。なぜなら、古いキャッシュ・データは、シャドウ・カウンタの値が規定値、例えば「0」、よりも大きい間は、維持されるからである。また、ページ・キャッシュが、キャッシュ・バッファを読み出しアクセスと書き込みアクセスの両方のために割り当て、キャッシュ・バッファの全てのスペースが、読み出しデータまたは書き込みデータだけを格納するために用いることができるので、古いデータが新しいデータによって上書きされる可能性が低下する。
【0128】
本発明の原理を特定の装置とアプリケーションに関して上記に説明したが、この説明は例示によってのみなされたものであり、本発明の範囲を制限するものでないことは明らかである。
【図面の簡単な説明】
【図1】コンピュータ・システムのブロック図である。
【図2】ハードディスク・ドライブの概略構造を示す図である。
【図3】本発明に従ってキャッシュ・バッファをページ・キャッシュのために管理する方法を示す図である。
【図4】 (A)〜(D)は、本発明によるデータ・パケット格納を示す図(その1)である。
【図5】 (A)〜(C)は、本発明によるデータ・パケット格納を示す図(その2)である。
【図6】 (A)〜(C)は、本発明によるデータ・パケット格納のもう一つの実施例を示す図である。
【図7】 (A)〜(C)は、本発明によるデータ・パケット格納の第3の実施例を示す図である。
【図8】図4及び図5を参照して説明された第1実施例に関するデータ転送動作のイベント順を示すフローチャート(その1)である。
【図9】図4及び図5を参照して説明された第1実施例に関するデータ転送動作のイベント順を示すフローチャート(その2)である。
【図10】読み出しコマンド率と重み率との間の関係を格納したテーブルを示す図である。
【図11】図6と図7を参照して説明された第2実施例と第3実施例に関するデータ転送動作のイベント順を示すフローチャート(その1)である。
【図12】図6と図7を参照して説明された第2実施例と第3実施例に関するデータ転送動作のイベント順を示すフローチャート(その2)である。
【図13】ディスク書き込み動作のフローチャートである。
【図14】 (A)〜(C)は、本発明のもう一つのデータ転送動作の図(その1)である。
【図15】 (A)〜(B)は、本発明のもう一つのデータ転送動作の図(その2)である。
【図16】読み出し動作のフローチャートである。
【図17】 (A)〜(D)は、本発明に従ってキャッシュ・バッファ内の読み出しデータを保護するコマンド履歴動作におけるシャドウ・カウンタの第1実施例を説明する図(その1)である。
【図18】 (A)〜(c)は、本発明に従ってキャッシュ・バッファ内の読み出しデータを保護するコマンド履歴動作におけるシャドウ・カウンタの第1実施例を説明する図(その2)である。
【図19】 (A)〜(D)は、本発明に従ってキャッシュ・バッファ内の読み出しデータを保護するコマンド履歴動作におけるシャドウ・カウンタのもう一つの実施例を説明する図(その1)である。
【図20】 (A)〜(B)は、本発明に従ってキャッシュ・バッファ内の読み出しデータを保護するコマンド履歴動作におけるシャドウ・カウンタのもう一つの実施例を説明する図(その2)である。
【図21】 (A)〜(C)は、ディスク書き込み動作の優先順位を変更することによってバッファ休止状態を免れる第1の方法を示す図(その1)である。
【図22】 (A)〜(C)は、ディスク書き込み動作の優先順位を変更することによってバッファ休止状態を免れる第1の方法を示す図(その2)である。
【図23】 (A)〜(C)は、ディスク書き込み動作の優先順位を変更することによってバッファ休止状態を免れるもう一つの方法を示す図である。
【図24】従来のキャッシュ・バッファ構造を示す図である。
【符号の説明】
18…ハードディスク・ドライブ
20…制御器
22…不揮発性メモリ媒体
24…読み出しチャネル
26…ヘッドIC
28…サーボ・チャネル回路
30…スピンドル・モータ及びボイスコイル・モータ
32…キャッシュ・バッファ
34…フラッシュROM
36…プロセッサ
39…キャッシュ情報テーブル
41…重み率テーブル
40…ハードディスク制御器
44…読み出しヘッド
46…書き込みヘッド
Claims (2)
- 不揮発性メモリ媒体を有する記憶装置における、複数の揮発性メモリ・セルを有するキャッシュ・バッファにデータを格納するためのキャッシュ・バッファ制御方法であって、
メモリ・セルを複数のページに論理的に分割するステップと、
各ページのカウンタに当該ページに格納されているデータパケット数を登録するステップと、
個々のページのカウンタの値をチェックして、空きスペースを探索するステップと、
空きスペースを有するページに新しいデータを格納するステップと、
コマンド履歴から読み出しコマンド率を計算するステップと、
前記読み出しコマンド率から重み率を決定するステップと、
個々のページ用に設けられたシャドウ・カウンタに前記重み率を割り当てるステップと、
ページにデータを格納すると、他のページのシャドウ・カウンタの値を更新するステップを備えたことを特徴とするキャッシュ・バッファ制御方法。 - 複数のページに論理的に分割されたメモリ・セルで構成されたキャッシュ・メモリを有するディスク・ドライブのための制御装置であって、
前記ページ毎に設けられ、当該ページに格納されるデータパケット数を格納するページ・カウンタと、
読み出しコマンド率に対応する重み率を格納したテーブルと、
ページ毎に前記重み率を格納するシャドウ・カウンタと、
ページに格納されたデータの転送の完了によって前記ページ・カウンタの値を更新するとともに、ページにデータが格納されると、他のページのシャドウ・カウンタの値を更新する制御器とを備えたことを特徴とする制御装置。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US30838901P | 2001-07-27 | 2001-07-27 | |
US60/308389 | 2001-07-27 | ||
US10/193755 | 2002-07-11 | ||
US10/193,755 US6944717B2 (en) | 2001-07-27 | 2002-07-11 | Cache buffer control apparatus and method using counters to determine status of cache buffer memory cells for writing and reading data therefrom |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2003150447A JP2003150447A (ja) | 2003-05-23 |
JP4163461B2 true JP4163461B2 (ja) | 2008-10-08 |
Family
ID=26889318
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2002219713A Expired - Fee Related JP4163461B2 (ja) | 2001-07-27 | 2002-07-29 | キャッシュ・バッファ制御方法及び制御装置 |
Country Status (3)
Country | Link |
---|---|
US (1) | US6944717B2 (ja) |
EP (1) | EP1280048A3 (ja) |
JP (1) | JP4163461B2 (ja) |
Families Citing this family (34)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2003178527A (ja) * | 2001-12-12 | 2003-06-27 | Fujitsu Ltd | 情報記録装置及びバッファコントローラ並びに情報記憶方法 |
US6898664B2 (en) * | 2002-08-28 | 2005-05-24 | Hewlett-Packard Development Company, L.P. | Optimizing performance for a storage device within a computer system |
JP2004280558A (ja) * | 2003-03-17 | 2004-10-07 | Ricoh Co Ltd | インタフェース回路及びインタフェース回路を有する光ディスク装置 |
US7577692B1 (en) * | 2003-04-25 | 2009-08-18 | Netapp, Inc. | System and method for reserving space to guarantee file writability in a file system supporting persistent consistency point images |
US7080200B2 (en) * | 2003-08-14 | 2006-07-18 | Hitachi Global Storage Technologies Netherlands B.V. | System and method for handling writes in HDD using 4K block sizes |
JP2005352996A (ja) * | 2004-06-14 | 2005-12-22 | Ntt Docomo Inc | 移動通信端末及びアプリケーション制御方法 |
US7958292B2 (en) * | 2004-06-23 | 2011-06-07 | Marvell World Trade Ltd. | Disk drive system on chip with integrated buffer memory and support for host memory access |
JP4281680B2 (ja) * | 2004-11-10 | 2009-06-17 | ティアック株式会社 | 光ディスク装置 |
JP2006252031A (ja) * | 2005-03-09 | 2006-09-21 | Nec Corp | ディスクアレイコントローラ |
US7966450B2 (en) | 2005-09-01 | 2011-06-21 | Micron Technology, Inc. | Non-volatile hard disk drive cache system and method |
JP4810210B2 (ja) * | 2005-12-06 | 2011-11-09 | 日本電気株式会社 | ストレージシステム、マスタ側ストレージ装置、リモート側ストレージ装置、データコピー方法、データコピープログラム |
US7653778B2 (en) | 2006-05-08 | 2010-01-26 | Siliconsystems, Inc. | Systems and methods for measuring the useful life of solid-state storage devices |
US8549236B2 (en) | 2006-12-15 | 2013-10-01 | Siliconsystems, Inc. | Storage subsystem with multiple non-volatile memory arrays to protect against data losses |
US7596643B2 (en) * | 2007-02-07 | 2009-09-29 | Siliconsystems, Inc. | Storage subsystem with configurable buffer |
CN100583277C (zh) * | 2007-02-16 | 2010-01-20 | 联发科技股份有限公司 | 光学储存装置及其存储装置管理方法 |
US8380944B2 (en) * | 2007-03-01 | 2013-02-19 | Douglas Dumitru | Fast block device and methodology |
US9201790B2 (en) * | 2007-10-09 | 2015-12-01 | Seagate Technology Llc | System and method of matching data rates |
JP2009288988A (ja) * | 2008-05-28 | 2009-12-10 | Fujitsu Ltd | バッファ制御方法及び記憶装置 |
EP2350843B1 (en) * | 2008-07-29 | 2014-06-11 | Synopsys, Inc. | Data processing circuit with arbitration between a plurality of queues |
US8099555B2 (en) * | 2009-01-23 | 2012-01-17 | Konica Minolta Laboratory U.S.A., Inc. | Systems and methods for memory management on print devices |
US8266334B2 (en) * | 2010-02-12 | 2012-09-11 | Phison Electronics Corp. | Data writing method for non-volatile memory, and controller and storage system using the same |
US20120185658A1 (en) * | 2011-01-18 | 2012-07-19 | International Business Machines Corporation | Performing writing operations using a queue of available pages |
JP5178857B2 (ja) * | 2011-02-16 | 2013-04-10 | 株式会社東芝 | メモリシステム |
US9940026B2 (en) * | 2014-10-03 | 2018-04-10 | Micron Technology, Inc. | Multidimensional contiguous memory allocation |
KR20160048512A (ko) * | 2014-10-24 | 2016-05-04 | 에스케이하이닉스 주식회사 | 타이밍 마진 자체 조정이 가능한 반도체 장치 |
US20160357462A1 (en) * | 2015-06-08 | 2016-12-08 | Samsung Electronics Co., Ltd. | Nonvolatile Memory Modules and Data Management Methods Thereof |
TWI588824B (zh) * | 2015-12-11 | 2017-06-21 | 捷鼎國際股份有限公司 | 加快在不連續頁面寫入資料之電腦系統及其方法 |
US10025664B2 (en) | 2015-12-22 | 2018-07-17 | Western Digital Technologies, Inc. | Selective buffer protection |
CN108572790B (zh) * | 2017-04-20 | 2021-11-26 | 深圳市得一微电子有限责任公司 | 一种固态硬盘写入指令排序方法、固态硬盘 |
US10725901B2 (en) * | 2018-05-31 | 2020-07-28 | Western Digital Technologies, Inc. | Storage system and method for soft-decision-based command execution to enhance random write performance |
CN111782146B (zh) * | 2020-06-30 | 2023-10-13 | 深圳忆联信息系统有限公司 | 实现写缓存的方法、装置、计算机设备及存储介质 |
CN112363763B (zh) * | 2020-11-13 | 2022-12-23 | 山东云海国创云计算装备产业创新中心有限公司 | 数据处理方法、装置及计算机可读存储介质 |
US20240103728A1 (en) * | 2022-09-21 | 2024-03-28 | SK hynix NAND Product Solutions Corporation | Systems, methods, and media for recovering worker shares from read prioritization |
KR20240101154A (ko) * | 2022-12-23 | 2024-07-02 | 삼성전자주식회사 | 타임아웃 방지를 위한 전자 장치 및 동작 방법 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0630499A4 (en) * | 1992-03-09 | 1996-07-24 | Auspex Systems Inc | ACCELERATION SYSTEM WITH NON-VOLATILE, PROTECTED, WRITABLE RAM CACHE. |
US5701432A (en) * | 1995-10-13 | 1997-12-23 | Sun Microsystems, Inc. | Multi-threaded processing system having a cache that is commonly accessible to each thread |
US6189080B1 (en) * | 1996-09-20 | 2001-02-13 | Emc Corporation | Minimum read rate throughput in a disk cache system |
US6065099A (en) * | 1997-08-20 | 2000-05-16 | Cypress Semiconductor Corp. | System and method for updating the data stored in a cache memory attached to an input/output system |
US6209062B1 (en) * | 1997-11-24 | 2001-03-27 | Intel Corporation | Method for holding cache pages that are not invalidated within normal time duration for a second access or that are likely to be accessed again soon |
US6026475A (en) * | 1997-11-26 | 2000-02-15 | Digital Equipment Corporation | Method for dynamically remapping a virtual address to a physical address to maintain an even distribution of cache page addresses in a virtual address space |
US6016529A (en) * | 1997-11-26 | 2000-01-18 | Digital Equipment Corporation | Memory allocation technique for maintaining an even distribution of cache page addresses within a data structure |
US6085287A (en) * | 1997-12-30 | 2000-07-04 | Genesis One Technologies, Inc. | Method and apparatus for enhancing the disk cache process by dynamically sizing prefetch data associated with read requests based upon the current cache hit rate |
DE60141856D1 (de) * | 2000-05-25 | 2010-05-27 | Exent Technologies Inc | Plattencachespeicherung |
-
2002
- 2002-07-11 US US10/193,755 patent/US6944717B2/en not_active Expired - Lifetime
- 2002-07-25 EP EP02255200A patent/EP1280048A3/en not_active Withdrawn
- 2002-07-29 JP JP2002219713A patent/JP4163461B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2003150447A (ja) | 2003-05-23 |
EP1280048A2 (en) | 2003-01-29 |
US6944717B2 (en) | 2005-09-13 |
US20030023815A1 (en) | 2003-01-30 |
EP1280048A3 (en) | 2008-01-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4163461B2 (ja) | キャッシュ・バッファ制御方法及び制御装置 | |
US8843691B2 (en) | Prioritized erasure of data blocks in a flash storage device | |
US7552311B2 (en) | Memory device with preread data management | |
US8117374B2 (en) | Flash memory control devices that support multiple memory mapping schemes and methods of operating same | |
US5860124A (en) | Method for performing a continuous over-write of a file in nonvolatile memory | |
US7654466B2 (en) | Semiconductor memory card, semiconductor memory control apparatus, and semiconductor memory control method | |
JP3898782B2 (ja) | 情報記録再生装置 | |
JP4004468B2 (ja) | 大きなページをサポートするようにさせるための方法およびシステム | |
US6571326B2 (en) | Space allocation for data in a nonvolatile memory | |
US8069306B2 (en) | Data area managing method in information recording medium and information processor employing data area managing method | |
US20060224819A1 (en) | Host apparatus | |
JP2009015856A (ja) | メモリシステム及びそのデータ読み出し方法 | |
KR100388338B1 (ko) | 캐시 메모리의 제어 방법, 컴퓨터 시스템, 하드 디스크드라이브 장치 및 하드 디스크 제어 장치 | |
JP3421581B2 (ja) | 不揮発性半導体メモリを用いた記憶装置 | |
US8271721B2 (en) | Data writing method and data storage device | |
KR20070060301A (ko) | 불휘발성 메모리를 쓰기 캐시로 구비한 하드 디스크드라이버 | |
JP2009116465A (ja) | 記憶装置及びメモリ制御方法 | |
JP2003280979A (ja) | 情報記憶装置 | |
JP2008262452A (ja) | 記録デバイスのキャッシュ方法および記録装置 | |
JP3969809B2 (ja) | 記憶装置におけるデータバッファの管理方法 | |
JPH01303547A (ja) | 情報記憶制御システム | |
JP2006065402A (ja) | アクセス制御方法、ディスク制御装置及び記憶装置 | |
JP2004102440A (ja) | コマンド処理方法及び記憶装置 | |
JP2665180B2 (ja) | ディスクキャッシュバッファの確保方式 | |
US20040268022A1 (en) | Method for expediting reading and writing on a non-volatile storage medium |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20050324 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20080321 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20080408 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20080609 |
|
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: 20080624 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20080724 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110801 Year of fee payment: 3 |
|
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: 20110801 Year of fee payment: 3 |
|
S111 | Request for change of ownership or part of ownership |
Free format text: JAPANESE INTERMEDIATE CODE: R313111 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110801 Year of fee payment: 3 |
|
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: 20120801 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120801 Year of fee payment: 4 |
|
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: 20120801 Year of fee payment: 4 |
|
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: 20120801 Year of fee payment: 4 |
|
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: 20120801 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130801 Year of fee payment: 5 |
|
LAPS | Cancellation because of no payment of annual fees |