(57)【特許請求の範囲】
【請求項１】
ホストコンピュータから送られてきたデータを一時格納するキャッシュメモリと、
前記ホストコンピュータから送られてきた前記キャッシュメモリ上のデータのデータ量を記憶するデータ量記憶部と、
前記ホストコンピュータから送られてきたデータが前記キャッシュメモリに書き込まれた時点で当該ホストコンピュータに書き込み終了を報告すると共に、当該書き込み終了の後に当該データの記録媒体への書き込み制御を行うコントローラと、
を有してなり、
前記データ量記憶部は、前記記録媒体上のアドレス及び前記キャッシュメモリ上の格納開始アドレスを保持するタグを有し、
前記コントローラは、
前記ホストコンピュータから前記キャッシュメモリに対して順次送られてきたデータが、シーケンシャルデータあるいはランダムデータの何れかであるかを判断するデータ連続性判別手段と、
前記データ連続性判別手段の判別結果に基づいて前記データがシーケンシャルデータの場合は、前記キャッシュメモリに一時格納する該データを一まとめに結合するデータ結合手段と、
前記データ連続性判別手段の判別結果に基づいて前記データが少なくともランダムデータを含む場合であると判別された場合は、前記キャッシュメモリにおける未書き込みデータ量が所定の値より大きいか否かを判断し、当該未書き込みデータ量が前記所定の値より大きい場合は前記キャッシュメモリに当該データを一時格納することを規制する未書き込みデータ蓄積量制限手段と、
を備えたことを特徴とするディスクキャッシュ装置。
【請求項２】
前記データ量記憶部は、前記ホストコンピュータから送られてきたデータのデータ数、前記キャッシュメモリにおける未書き込みデータ量、前記キャッシュメモリにおける空き容量を記憶することを特徴とする請求項１に記載のディスクキャッシュ装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ホストコンピュータから送られてきたデータを一時キャッシュメモリに蓄えて、キャッシュメモリにデータを書き込み終わった時点でホストコンピュータに書き込み終了を報告し、その後ディスクへ書き込みを行うことにより書き込み処理の高速化を図るディスクキャッシュ装置に関する。
【０００２】
【従来の技術】
一般に情報記録再生装置は、情報処理装置におけるホストコンピュータの外部記録装置として用いられているが、記録媒体に対するデータの書き込み処理及び読み出し処理はホストコンピュータとの間でのデータ転送処理速度よりも遅いため、近年では中間にキャッシュメモリを設けてキャッシュメモリを介してデータ転送を行うことにより、データの記録処理や再生処理の高速化を図ったものが用いられてきている。特に、光ディスクを記録媒体として用いる光ディスク装置では、記録媒体への書き込み処理に多くの時間がかかるため、記録データや再生データを一時格納するディスクキャッシュメモリを設けたものが一般的である。
【０００３】
このようなキャッシュメモリを備えたディスクキャッシュ装置では、従来はホストコンピュータから送られてきたデータが連続したデータ（シーケンシャルデータ）か、不連続なデータ（ランダムデータ）かに関わらず、キャッシュメモリの容量まで、あるいは記憶できるデータ数までキャッシュメモリにデータを蓄えるようになっていた。
【０００４】
最近では、キャッシュメモリの容量が２５６ＫＢ程度以上と大きくなってきており、ホストコンピュータからみると書き込み動作の実行時間がより短くなっている。
【０００５】
光磁気ディスク装置などの媒体への書き込みに時間がかかる記録再生装置では、キャッシュ容量の大容量化に伴って、ホストコンピュータに書き込み終了を報告してからキャッシュメモリに蓄えられたデータを全てディスクに書き終わるまでに長い時間がかかるようになった。
【０００６】
このようにキャッシュメモリに未書き込みのデータが多く存在するときに、リードキャッシュ等を設けずに単純なライトキャッシュのみを備えた装置では、ホストコンピュータから読み込み命令などを受け付けると、一般的にはデータの信頼性を確保するため、まず未書き込みデータを全てディスクに書き終わってから読み込み命令（リード命令）などを実行することになる。
【０００７】
キャッシュメモリに未書き込みデータがある場合は、ディスク上には未書き込みデータに対応する書換え前の旧データが存在し、キャッシュメモリ上にのみ書換え後の新データが存在する場合がある。このときに、キャッシュメモリの未書き込みデータを書き込む前にディスクからデータを読み出してホストコンピュータへ転送すると、間違った旧データを送ってしまうことになる。また、読み出したデータや転送すべきデータをホストコンピュータへ送る前にキャッシュメモリに一旦書き込んで、その後ホストコンピュータへ転送を行うような場合は、キャッシュメモリに未書き込みデータがあると未書き込みデータを書き換えてしまうことがあり得る。これらの不具合を防止するために、リード命令やデータ転送時にキャッシュメモリを使用する命令を実行する場合は、まず未書き込みデータのディスクへの書き込みを行ってからその命令を実行するようになっている。
【０００８】
この場合、ホストコンピュータからすると読み込み動作に非常に長い時間がかかっているように見えるため、ホストコンピュータの仕様によっては命令実行のタイムアウトとなり読み込み失敗としてしまう場合がある。
【０００９】
【発明が解決しようとする課題】
前述したように、ディスクキャッシュ装置においては、キャッシュメモリに未書き込みデータが多く存在するときに、リード命令等を受けた場合は、まず未書き込みデータのディスクへの書き込みが終了してからその命令に対する処理が行われるため、読み込み処理の終了までに多くの時間を要し、ホストコンピュータから見るとディスクの読み込み動作に長い時間がかかっているとみなされることがある。この場合、ホストコンピュータの仕様によっては命令実行のタイムアウトとなり、読み込み失敗としてしまうことがあり、ホストコンピュータからの命令に対する処理を正常に実行完了できないおそれがある。
【００１０】
本発明は、これらの事情に鑑みてなされたもので、キャッシュメモリ上の未書き込みデータのディスクへの書き込み時間を短縮し、ホストコンピュータが許容できる範囲以内に収めることができ、ホストコンピュータから引き続き送られてくる命令に対する処理においてホストコンピュータがタイムアウトを検出するのを防止することが可能なディスクキャッシュ装置を提供することを目的としている。
【００１１】
【課題を解決するための手段】
本発明によるディスクキャッシュ装置は、ホストコンピュータから送られてきたデータを一時格納するキャッシュメモリと、前記ホストコンピュータから送られてきた前記キャッシュメモリ上のデータのデータ量を記憶するデータ量記憶部と、前記ホストコンピュータから送られてきたデータが前記キャッシュメモリに書き込まれた時点で当該ホストコンピュータに書き込み終了を報告すると共に、当該書き込み終了の後に当該データの記録媒体への書き込み制御を行うコントローラと、を有してなり、前記データ量記憶部は、前記記録媒体上のアドレス及び前記キャッシュメモリ上の格納開始アドレスを保持するタグを有し、前記コントローラは、前記ホストコンピュータから前記キャッシュメモリに対して順次送られてきたデータが、シーケンシャルデータあるいはランダムデータの何れかであるかを判断するデータ連続性判別手段と、前記データ連続性判別手段の判別結果に基づいて前記データがシーケンシャルデータの場合は、前記キャッシュメモリに一時格納する該データを一まとめに結合するデータ結合手段と、前記データ連続性判別手段の判別結果に基づいて前記データが少なくともランダムデータを含む場合であると判別された場合は、前記キャッシュメモリにおける未書き込みデータ量が所定の値より大きいか否かを判断し、当該未書き込みデータ量が前記所定の値より大きい場合は前記キャッシュメモリに当該データを一時格納することを規制する未書き込みデータ蓄積量制限手段と、を備えたことを特徴とする。
【００１２】
前記構成により、ホストコンピュータから順次送られてきたデータが連続したデータの場合は、複数のデータを一まとめにして書き込みが行われ、これにより不要なシークや回転待ちが減少し、記録媒体への書き込みを高速に実行可能となる。また、前記データが不連続なデータの場合は、キャッシュメモリに蓄えられるデータ数あるいはデータ量が連続したデータの場合よりも制限され、キャッシュメモリに格納した未書き込みデータを記録媒体に書き込み終了するまでの時間が短縮される。
【００１３】
【発明の実施の形態】
以下、図面を参照して本発明の実施の形態を説明する。
図１は本実施形態におけるディスクキャッシュ装置の構成を示すブロック図である。本実施形態では、記録媒体への書き込み処理時間の遅さを補って処理時間の高速化を図るための単純なライトキャッシュを備えた装置に着目し、このようなキャッシュメモリとしていわゆるライトスルー方式のディスクキャッシュを備えた装置の構成例を示す。
【００１４】
ディスクキャッシュ装置は、ホストコンピュータ５からインターフェース部（Ｉ／Ｆ部）６を介して送られてきたデータを一時蓄えておくキャッシュメモリ３と、前記ホストコンピュータ５から送られてきたデータのデータ数等のデータ量を記憶するデータ量記憶部２と、データの書き込み処理及び読み出し処理の制御を行うコントローラ１と、記録媒体としてのディスク４に対する書き込み及び読み出しを行うディスクコントローラ７と、を有して構成されている。
【００１５】
コントローラ１は、ホストコンピュータ５から送られてきたデータをキャッシュメモリ３に書き込み終わった時点でホストコンピュータ５に書き込み終了を報告し、その後キャッシュメモリ３からディスクコントローラ７を介してスピンドルモータ８で回転駆動されているディスク４へデータの書き込みを行うようになっている。
【００１６】
このとき、ディスクコントローラ７により、スピンドルモータ８や図示しないヘッド等の制御を行うことにより、ディスク４に対するデータの書き込み及び読み出しが行われる。
【００１７】
また、コントローラ１は、連続して送られてきたデータがシーケンシャルデータがランダムデータかを判断し、シーケンシャルデータの場合は、キャッシュメモリ３に蓄えられている未書き込みのシーケンシャルデータを一まとめにしてディスク４に書き込みを行い、ランダムデータの場合は、キャッシュメモリ３に蓄えることができるデータ数あるいはデータ量をシーケンシャルデータの場合よりも小さくする制御を行う。
【００１８】
ここで、図２に本実施形態におけるディスクキャッシュ装置の主要部の機能構成を示す。
【００１９】
コントローラ１は、データ量記憶部２の情報を基にホストコンピュータ５から連続して送られてきたデータがシーケンシャルデータかランダムデータかを判断するデータ連続性判別手段１ａと、データ連続性判別手段１ａの判別結果を基にデータが連続している場合はこのキャッシュメモリ３上の未書き込みデータを一まとめに結合するデータ結合手段１ｂと、前記判別結果を基にデータが不連続の場合はキャッシュメモリ３に蓄積可能なデータ量を連続している場合よりも小さくする未書き込みデータ蓄積量制限手段１ｃと、キャッシュメモリ３上の未書き込みデータのディスク４への書き込みを制御するデータ書き込み制御手段１ｄと、の各機能ブロックを有している。
【００２０】
図３はデータ量記憶部２の構成を示す概念図である。データ量記憶部２は、ホストコンピュータ５から送られてきたデータ数（書き込み命令数）をカウントするカウンタｃ＿ｎｕｍ  １０と、キャッシュメモリ３に蓄えられている未書き込みデータ量をカウントするカウンタｃ＿ｌｎｇ  １１と、キャッシュメモリ３の空き容量をカウントするカウンタｃ＿ｅｍｐ  １２と、未書き込みデータの先頭番号を示すポインタｔ＿ｔａｇ  １３と、同最終番号を示すポインタｅ＿ｔａｇ  １４と、各未書き込みデータのディスク４上の書き込み開始アドレスｗ＿ｌｂａ  ，書き込みブロック数ｗ＿ｌｎｇ  ，およびキャッシュメモリ３上の格納開始アドレスｃ＿ａｄｒ  からなるタグｔａｇ  １５と、を有してなる。タグｔａｇ  １５は、書き込み命令毎にそれぞれ設けられ、各命令に対応する未書き込みデータについてｗ＿ｌｂａ  ，ｗ＿ｌｎｇ  ，ｃ＿ａｄｒ  が１セットとなっている。
【００２１】
次に、本実施形態の動作手順を説明する。図４ないし図７は本発明の第１の実施形態に係るコントローラ１の動作を示すフローチャートである。
【００２２】
まず、ステップＳ０（以降はステップを省略し単にＳ０のように記す）で、初期設定としてデータ量記憶部２の各カウンタ，ポインタ，タグに以下の数値を代入してデータ量記憶部２の初期化を行う。キャッシュメモリ３へ送られてきたデータ数  ｃ＿ｎｕｍ＝０、キャッシュメモリ３上の未書き込みデータ量  ｃ＿ｌｎｇ＝０、キャッシュメモリ３の空き容量  ｃ＿ｅｍｐ＝８００ｈ、未書き込みデータの先頭タグポインタ  ｔ＿ｔａｇ＝０、未書き込みデータの最終タグポインタ  ｅ＿ｔａｇ＝７Ｆｈ、最終タグボインタ  ｅ＿ｔａｇで示されるタグの書き込みブロック数  ｗ＿ｌｎｇ（ｅ＿ｔａｇ  ）＝０、キャッシュメモリアドレス  ｃ＿ａｄｒ（ｅ＿ｔａｇ  ）＝０とする。なお、本実施形態ではタグ１５の最大数は８０ｈ（＝１２８）とする。ここで、ｈは１６進数を示しており、データ量記憶部２では各値が１６進数で格納される。
【００２３】
そしてＳ１で、ｃｍｄ＿ｆｌａｇがセットされているか否かを判断してホストコンピュータからコマンドを受信したかをチェックし、受信していなければＳ５に進む。Ｓ５では  ｃ＿ｎｕｍ＝０か否かを判断して未書き込みデータがあるかをチェックし、未書き込みデータがなければＳ１へ戻る。
【００２４】
このコマンド受信待ち状態において、コマンド受信割り込みが発生すると図６のコマンド受信割り込み処理に進む。コマンド受信割り込み処理では、Ｓ２０でコマンドを受信したことを示すフラグｃｍｄ＿ｆｌａｇをセットする。次いで、Ｓ２１でコマンドがライトコマンドかをチェックし、ライトコマンドでなければ割り込み処理を終了する。
【００２５】
図４に戻り、前記のようにコマンド受信フラグｃｍｄ＿ｆｌａｇがセットされると、Ｓ１からＳ２に進み、コマンドがライトコマンドかをチェックし、ライトコマンドでなければＳ３へ進む。Ｓ３では受信したコマンドを実行し、コマンド受信フラグｃｍｄ＿ｆｌａｇをリセットして命令終了をホストコンピュータ５へ報告する。
【００２６】
再びコマンド受信割り込みが発生すると、Ｓ２０でコマンド受信フラグｃｍｄ＿ｆｌａｇをセットし、Ｓ２１でコマンドがライトコマンドかをチェックする。受信したコマンドがライトコマンドの場合は、Ｓ２２に進んで図７に示すキャッシュ処理を行い、ホストコンピュータ５からデータを受信する。
【００２７】
キャッシュ処理では、まずＳ３０でデータを受信する前にタグ１５に空きがあるかをチェックし、  ｃ＿ｎｕｍ＝８０ｈであってタグに空きがなければ何もせずに終了する。
【００２８】
Ｓ３０でタグに空きがある場合は、Ｓ３１でキャッシュメモリ３にデータを受信できるだけの空きがあるかをチェックし、  ｃ＿ｅｍｐ−ＬＯＮＧ＜０、すなわちキャッシュメモリ３の空き容量からデータの長さを引いた数が負であってキャッシュメモリに空きがなければ何もせずに終了する。
【００２９】
Ｓ３１でキャッシュメモリに空きがある場合は、Ｓ３２でデータがシーケンシャルかランダムかをチェックする。ここでは、今回のコマンドで指定されているディスク４上の先頭アドレスＬＢＡと、前回のコマンドで指定されているディスク４上の書き込み開始アドレスと書き込みブロック数から算出する次のデータのディスク上のアドレス  ｗ＿ｌｂａ（ｅ＿ｔａｇ  ）＋  ｗ＿ｌｎｇ（ｅ＿ｔａｇ  ）とを比較し、これらが等しい場合はシーケンシャルデータと判断する。
【００３０】
Ｓ３２でデータがシーケンシャルの場合はＳ３４に進み、ランダムの場合はＳ３３で未書き込みのデータ数をチェックする。Ｓ３３では  ｃ＿ｎｕｍ≧４０ｈか否かを判断し、未書き込みのデータ数ｃ＿ｎｕｍ  がタグ１５の最大値８０ｈの半分未満ならばＳ３４に進み、半分以上であれば何もせずに終了する。
【００３１】
すなわち、Ｓ３２及びＳ３３において、データがランダムの場合にキャッシュメモリに蓄積するデータ量を制限している。
【００３２】
最初はデータがシーケンシャルかランダムか（Ｓ３２の結果）に関わらず、未書き込みデータ数ｃ＿ｎｕｍ  は０なのでＳ３４へ進む。
【００３３】
Ｓ３４では、データ量記憶部２における未書き込み最終タグの各値を以下のように更新する。データ受信前の最終タグポインタ  ｌ＿ｔａｇを  ｌ＿ｔａｇ＝ｅ＿ｔａｇ  、データ受信後の最終タグポインタ  ｅ＿ｔａｇ＝（ｅ＿ｔａｇ  ＋ｌ）（なおｅ＿ｔａｇ  の最大値は７Ｆｈとし、７Ｆｈでマスクする）、ディスク４上の書き込み開始アドレス  ｗ＿ｌｂａ（ｅ＿ｔａｇ  ）＝ＬＢＡ（コマンドで指定されたアドレス）、キャッシュメモリ３上の格納開始アドレス  ｃ＿ａｄｒ（ｅ＿ｔａｇ  ）＝｛  ｃ＿ａｄｒ（ｌ＿ｔａｇ  ）＋  ｗ＿ｌｎｇ（ｌ＿ｔａｇ  ）×５１２｝（なお  ｃ＿ａｄｒ（ｅ＿ｔａｇ  ）の最大値はＯＦＦＦＦＦｈとし、ＯＦＦＦＦＦｈでマスクする）、未書き込みデータ数  ｃ＿ｎｕｍ＝ｃ＿ｎｕｍ  ＋１とする。前記キャッシュメモリアドレス  ｃ＿ａｄｒ（ｅ＿ｔａｇ  ）は、前回のキャッシュメモリアドレス  ｃ＿ａｄｒ（ｌ＿ｔａｇ  ）にデータ量［ｂｙｔｅ］を足した値である。ここで、１ブロックを５１２［ｂｙｔｅ］とする。
【００３４】
その後、Ｓ３５でホストコンピュータ５からデータを受信して、このデータをキャッシュメモリ３に一時格納し、Ｓ３６でコマンド受信フラグｃｍｄ＿ｆｌａｇをリセットして命令終了をホストコンピュータ５へ報告する。
【００３５】
再度図４に戻り、未書き込みデータが発生するとＳ５から図５のＳ６へ進み、Ｓ６で未書き込みデータが２つ以上あるかをチェックする。なお、図４と図５において符号Ａ，Ｂがそれぞれ対応してつながっている。
【００３６】
Ｓ６において  ｃ＿ｎｕｍ＝１、すなわち未書き込みデータが１つだけの場合は、Ｓ１０に進んでデータをディスク４へ書き込み、Ｓ１１で以下のようにカウンタの各値を更新する。キャッシュメモリ３の上の未書き込みデータ量  ｃ＿ｌｎｇ＝  ｃ＿ｌｎｇ−  ｗ＿ｌｎｇ（ｔ＿ｔａｇ  ）、キャッシュメモリ３の空き容量  ｃ＿ｅｍｐ＝  ｃ＿ｅｍｐ＋  ｗ＿ｌｎｇ（ｔ＿ｔａｇ  ）、未書き込みデータの先頭タグポインタ  ｔ＿ｔａｇ＝  ｔ＿ｔａｇ＋１、未書き込みデータ数  ｃ＿ｎｕｍ＝  ｃ＿ｎｕｍ−１とする。その後、Ｓ１１から図４のＳ１へ戻る。
【００３７】
Ｓ６で未書き込みデータが２つ以上ある場合はＳ７へ進み、Ｓ７で次の未書き込みタグポインタｎ＿ｔａｇ  を求める。ここでは  ｎ＿ｔａｇ＝ｔ＿ｔａｇ  ＋１とする。なお、ｎ＿ｔａｇ  の最大値は７Ｆｈであるため、７Ｆｈでマスクする。
【００３８】
次に、Ｓ８で先頭タグと次のタグのデータがシーケンシャルかランダムかチェックし、データがランダムならば前述のＳ１０へ進み、シーケンシャルならばＳ９へ進む。ここでは、次のタグのディスク上の書き込み開始アドレス  ｗ＿ｌｂａ（ｎ＿ｔａｇ  ）と先頭タグのディスク上の書き込み開始アドレスと書き込みブロック数から算出するディスク上のアドレス  ｗ＿ｌｂａ（ｔ＿ｔａｇ  ）＋  ｗ＿ｌｎｇ（ｔ＿ｔａｇ  ）とを比較し、これらが等しい場合はシーケンシャルデータと判断する。
【００３９】
Ｓ９では、以下のようにタグ１５の各値を更新して２つのタグを１つにまとめる。次のタグのディスク４上のアドレス  ｗ＿ｌｂａ（ｎ＿ｔａｇ  ）＝  ｗ＿ｌｂａ（ｔ＿ｔａｇ  ）、次のタグの書き込みブロック数  ｗ＿ｌｎｇ（ｎ＿ｔａｇ  ）＝  ｗ＿ｌｎｇ（ｎ＿ｔａｇ  ）＋  ｗ＿ｌｎｇ（ｔ＿ｔａｇ  ）、次のタグのキャッシュメモリ３上のアドレス  ｃ＿ａｄｒ（ｎ＿ｔａｇ  ）＝  ｃ＿ａｄｒ（ｔ＿ｔａｇ  ）、先頭タグポインタ  ｔ＿ｔａｇ  ＝ｎ＿ｔａｇ、未書き込みデータ数  ｃ＿ｎｕｍ＝ｃ＿ｎｕｍ  −１とする。その後、Ｓ９からＳ６へ戻り、未書き込みデータが１つになるかデータが連続でなくなるまでＳ６〜Ｓ９の処理を繰り返し、シーケンシャルデータをまとめる。
【００４０】
なお、Ｓ３０でタグ１５に空きが無いと判断されたとき、Ｓ３１でキャッシュメモリ３に空きが無いと判断されたとき、あるいはＳ３２及びＳ３３で送られてくるデータがランダムで且つ未書き込みデータ数が所定値（本実施形態ではタグの最大値の半分）以上と判断されたときは、Ｓ６からＳ１１でデータがディスク４へ書き込まれた後に再度Ｓ４でデータの受信動作が行われる。
【００４１】
ただし、この再度のデータ受信動作の時点でもキャッシュメモリ３に空きが無いと判断されたとき、あるいは送られてくるデータがランダムで且つ未書き込みデータ数が所定値以上と判断されたときは、データの受信が可能となるまでＳ１からＳ１１の処理が繰り返される。そして、データが受信可能になった時点でＳ４においてデータの受信動作が行われ、コマンド受信フラグｃｍｄ＿ｆｌａｇがリセットされてホストコンピュータ５へライトコマンドの終了が報告される。
【００４２】
前記のように本実施形態では、Ｓ６ないしＳ９でシーケンシャルデータの場合はデータをまとめる処理を行い、Ｓ３２及びＳ３３でランダムデータの場合はキャッシュメモリ３に蓄積するデータ量を制限している。
【００４３】
１回のライト処理時間Ｔは、回転待ちを含むアクセス時間Ａと書き込み時間Ｗとの和であり、データ数がＮの場合は、Ｔｎ＝（Ａ＋Ｗ）×Ｎとなる。なお、シーケンシャルデータの場合はまとめて書き込みを行うので、Ｔｓ＝Ａ＋Ｗ×Ｎとなる。すなわち、ランダムデータを書き込む場合は、シーケンシャルデータをまとめて書き込む場合よりも余分なアクセス時間Ａ×（Ｎ−１）の分だけ全体のライト処理時間Ｔが長くなり、その延長分によりライト命令終了（キャッシュメモリへのデータ書き込み終了）からリード命令などの次の命令の実行終了までの時間が長くなる。
【００４４】
このとき、コントローラ１はキャッシュメモリ３に未書き込みデータがある場合でも次の命令は受付けて、ライト命令でなければ、キャッシュメモリ３の未書き込みデータをディスク４に書き込んでから命令を実行するようになっている。よって、ホストコンピュータからみると、キャッシュメモリ３内の未書き込みデータをディスク４に書き込む時間分だけ命令実行時間が長くなり、命令実行のタイムアウトを検出しやすくなる。
【００４５】
そこでランダムデータの場合は、キャッシュメモリ３に蓄えることができるデータ数を少なくすることにより、キャッシュメモリ３に未書き込みデータがある場合の命令実行時間の最大値を小さくする。このようにキャッシュメモリ３に蓄えることができるデータ数を小さくすることは、受信可能なデータ数を小さくすることとほぼ同じこととなり、ホストコンピュータ５におけるタイムアウトの発生を防止することができる。
【００４６】
以上説明したように、本実施形態では、ホストコンピュータ５より送られてきたデータがシーケンシャルデータの場合は、連続するタグのデータを結合してディスク４への書き込みを行うようにしている。これにより、ディスク４への書き込み処理を高速に行うことができ、ホストコンピュータ５から次のコマンドを受けた場合も、あまりホストコンピュータ５を待たせることなくコマンドに早く応答して実行できる。
【００４７】
また、ホストコンピュータ５より送られてきたデータがランダムデータの場合は、ディスクへの書き込み処理においてシーケンシャルデータに比べて余分にシークタイムや回転待ち時間が発生するので、キャッシュメモリ３に蓄えておくことのできるデータ数をシーケンシャルデータの場合よりも少なく制限している。これにより、キャッシュメモリ３に蓄えられた未書き込みデータを全てディスク４へ書き込み終わるのにかかる時間を短くでき、ディスク４への書き込み時間をホストコンピュータ５が許容できる範囲以内に制限し、次のコマンドにおいてホストコンピュータ５が命令実行のタイムアウトを検出することを防ぐことができる。
【００４８】
次に、本発明の第２の実施形態としてコントローラ１の動作を変更した例を示す。第２の実施形態は前述の第１の実施形態におけるキャッシュ処理の手順の変形例である。図８に第２の実施形態に係るキャッシュ処理の手順のフローチャートを示す。なお、その他のコントローラ１の動作手順については図４ないし図６と同様であり、説明を省略する。
【００４９】
第２の実施形態では、図７におけるＳ３１，Ｓ３３の判断を変更し、キャッシュメモリ３の空き容量  ｃ＿ｅｍｐ及びホストコンピュータ５から送られてきたデータ数  ｃ＿ｎｕｍの代わりに、キャッシュメモリ３上の未書き込みデータ量  ｃ＿ｌｎｇによって判断を行うようにしている。
【００５０】
すなわち、本実施形態のキャッシュ処理においては、まずＳ５０でデータを受信する前にタグ１５に空きがあるかをチェックし、  ｃ＿ｎｕｍ＝８０ｈであってタグに空きがなければ何もせずに終了する。
【００５１】
Ｓ５０でタグに空きがある場合は、Ｓ５１でキャッシュメモリ３にデータを受信できるだけの空きがあるかをチェックし、  ｃ＿ｌｎｇ＋ＬＯＮＧ＞８００ｈ、すなわちキャッシュメモリ３の未書き込みデータ量にデータの長さを足した数が８００ｈ以上であってキャッシュメモリに空きがなければ何もせずに終了する。
【００５２】
Ｓ５１でキャッシュメモリに空きがある場合は、Ｓ５２で前記Ｓ３２と同様にデータがシーケンシャルかランダムかをチェックし、データがシーケンシャルの場合はＳ５４に進み、ランダムの場合はＳ５３で未書き込みデータ量をチェックする。Ｓ５３では c_lng≧４００ｈか否かを判断し、未書き込みデータ量c_lng がキャッシュメモリ３の空き容量の最大値８００ｈの半分未満ならばＳ５４に進み、半分以上であれば何もせずに終了する。
【００５３】
Ｓ５４では前記Ｓ３４と同様にデータ量記憶部２における未書き込み最終タグの各値を以下のように更新し、その後Ｓ５５でホストコンピュータ５からデータを受信して、このデータをキャッシュメモリ３に一時格納し、Ｓ５６でコマンド受信フラグｃｍｄ＿ｆｌａｇをリセットして命令終了をホストコンピュータ５へ報告する。
【００５４】
このように、キャッシュメモリ３の空き容量  ｃ＿ｅｍｐの代わりに、キャッシュメモリ３上の未書き込みデータ量  ｃ＿ｌｎｇを用いた場合においても第１の実施形態と同様の効果を得ることができる。
【００５５】
なお、上記実施形態の説明ではホストコンピュータからのデータがランダムデータの場合のタグの数、あるいは未書き込みデータ量を、シーケンシャルデータのときの半分に設定したが、これに限らず、ホストコンピュータ５が許容できる範囲以内であれば、これより多くしてもまたは少なくしても良い。
【００５６】
また、ホストコンピュータからのデータがシーケンシャルの場合は、データを可能な限り全て一まとめに結合するようにしたが、データ数あるいはデータ量を制限してまとめても良い。
【００５７】
また、コマンド受信は割り込みではなく、インターフェース部６をポーリングすることで行っても良い。
【００５８】
また、キャッシュメモリ３の容量やタグ１５の最大値は本実施形態の値に限らず、他の値でも良いし、データ量記憶部２の構成も本発明の要旨内であれば各種変更は可能である。
【００５９】
また、記録媒体としてのディスク４は回転駆動型のものに限らず、カード型のような媒体でも良いし、固定式でも交換式の媒体でも構わない。
【００６０】
以上説明したように、本実施形態によれば、ホストコンピュータから送られてくるデータがシーケンシャルデータの場合は、連続するデータを一まとめにしてディスクへ書き込むので、キャッシュメモリ内の未書き込みデータをディスクへ書き込む時間を短くでき、これにより引続き送られてくるホストコンピュータからの命令に早く応答することができる。この場合、ホストコンピュータから最初のデータを受信してから全てのデータを書き込み終了するまでの時間も短くなるため、ホストコンピュータの全命令の実行時間も短くすることができる。
【００６１】
また、ホストコンピュータから送られてくるデータがランダムデータの場合は、キャッシュメモリに一時蓄えておく未書き込みのデータ数またはデータ量を、シーケンシャルデータの場合に比べて少なく制限するので、引続き送られてくるホストコンピュータからのコマンドの実行を長く待たせることがなくなり、ホストコンピュータが命令実行のタイムアウトを検出することを防止できる。この場合、ホストコンピュータから最初のデータを受信してから全てのデータを書き込み終了する時間は変わらないし、ホストコンピュータの全命令の実行時間は、キャッシュメモリに蓄えられるデータ量が少なくなった分若干長くなる。しかし、最後のライト命令が終了してから次のライト以外の命令に対する実行時間は短くすることができる。
【００６２】
【発明の効果】
以上説明したように本発明によれば、キャッシュメモリ上の未書き込みデータのディスクへの書き込み時間を短縮し、ホストコンピュータが許容できる範囲以内に収めることができ、ホストコンピュータから引き続き送られてくる命令に対する処理においてホストコンピュータがタイムアウトを検出するのを防止することができる効果がある。
【図面の簡単な説明】
【図１】本発明の実施形態におけるディスクキャッシュ装置の構成を示すブロック図
【図２】本発明の実施形態におけるディスクキャッシュ装置の主要部の機能構成を示すブロック図
【図３】図１におけるデータ量記憶部の構成を示す概念図
【図４】本発明の第１の実施形態に係るコントローラの動作手順において、書き込み処理におけるメインの流れの前半部を示すフローチャート
【図５】第１の実施形態に係るコントローラの動作手順において、書き込み処理におけるメインの流れの後半部を示すフローチャート
【図６】第１の実施形態に係るコントローラの動作手順において、コマンド受信割り込み処理の手順を示すフローチャート
【図７】第１の実施形態に係るコントローラの動作手順において、キャッシュ処理の手順を示すフローチャート
【図８】本発明の第２の実施形態に係るキャッシュ処理の手順を示すフローチャート
【符号の説明】
１…コントローラ
１ａ…データ連続性判別手段
１ｂ…データ結合手段
１ｃ…未書き込みデータ蓄積量制限手段
１ｄ…データ書き込み制御手段
２…データ量記憶部
３…キャッシュメモリ
４…ディスク
５…ホストコンピュータ
７…ディスクコントローラ
【図１】
0003594265.tif 000002
【図２】
0003594265.tif 000003
【図３】
0003594265.tif 000004
【図４】
0003594265.tif 000005
【図５】
0003594265.tif 000006
【図６】
0003594265.tif 000007
【図７】
0003594265.tif 000008
【図８】
0003594265.tif 000009