(57)【要約】【課題】多種のシーケンシャルデータがキャッシュメモリに格納されている時にも１つのキャッシュ管理リストで管理できる制御方式のディスク装置を提供する。【解決手段】複数のシーケンシャルデータ管理用構造体とシーケンシャルデータ管理用リストを備え、多種のシーケンシャルデータに対して、１つのキャッシュ管理リストで制御でき、複雑なアルゴリズムになることを防ぐ。【選択図】      図５
2004152173.tif 000002
【特許請求の範囲】
【請求項１】
ディスクの書き込みと読み出しを制御する書き込み／読み出し回路部と、
ディスクから読み出したデータを一時的に格納するキャッシュメモリと、
前記キャッシュメモリのアクセス単位データごとの管理情報であるバッファ管理用構造体によって構成されたキャッシュメモリ管理用リストと、所定数以上連続する前記バッファ管理用構造体によって構成されたシーケンシャルデータ管理用リストとに基づいて前記キャッシュメモリを制御する制御手段と、
上位処理装置との間でデータの転送を行う入出力回路部と、
前記キャッシュメモリおよび前記書き込み／読み出し回路部と前記入出力回路部との間でデータの転送を行うダイレクトメモリアクセス部とを備えるディスク装置において、
前記制御手段が、前記キャッシュメモリの所定数以上連続するアクセス単位データの種類に応じて、前記シーケンシャルデータ管理用リストを複数設け、複数の所定数以上連続するアクセス単位データを管理し、前記キャッシュメモリの制御を行うことを特徴とするディスク装置。
【請求項２】
前記制御手段が、前記キャッシュメモリ管理用リストに、前記シーケンシャルデータ管理用リストがアクセスされた情報である更新履歴を保持する履歴フラグを設け、前記履歴フラグを参照することにより、新しく所定数以上連続するアクセス単位データを前記キャッシュメモリに格納する場合に、最も古くアクセスされた前記シーケンシャルデータ管理用リストを検索し、前記シーケンシャルデータ管理用リストを無効化にすることにより、前記所定数以上連続するアクセス単位データをキャッシュメモリから廃棄することを特徴とする請求項１記載のディスク装置。
【請求項３】
前記制御手段が、前記キャッシュメモリのアクセス単位データにリンクしていない前記バッファ管理用構造体で構成された空きセグメント管理用リストを設け、前記キャッシュメモリに新しく前記アクセス単位データが格納される場合に、前記空きセグメント管理用リストから前記バッファ管理用構造体を取得し、前記キャッシュメモリ管理用リストおよび前記シーケンシャルデータ管理用リストへ登録して、新しく格納された前記アクセス単位データとリンクさせて、管理することを特徴とする請求項１または２に記載のディスク装置。
【請求項４】
キャッシュメモリのアクセス単位データごとの管理情報であるバッファ管理用構造体によって構成されたキャッシュメモリ管理用リストと、
所定数以上連続する前記バッファ管理用構造体によって構成されたシーケンシャルデータ管理用リストとに基づいて前記アクセス単位データの管理を行うキャッシュメモリ制御方法において、
複数の前記シーケンシャルデータ管理用リストにより、複数の前記所定数以上連続するアクセス単位データを管理し、制御を行うことを特徴とするキャッシュメモリの制御方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ハードディスク装置等のディスク装置およびそのディスク装置のキャッシュメモリ制御方法に関するものである。
【０００２】
【従来の技術】
一般にディスク装置は、ディスクと、このディスク上のデータのうち使用頻度の高いデータを一時的に保持するキャッシュメモリと、キャッシュメモリを制御するマイクロコンピュータ等を備えている。そして、従来のディスク装置のキャッシュメモリ制御方法では、キャッシュメモリへ新しいデータの入力要求があった場合に、キャッシュメモリがすでに他のデータで埋められている時は、最も古く参照されたデータと置き換える方法であるＬＲＵ（Ｌｅａｓｔ  Ｒｅｃｅｎｔｌｙ  Ｕｓｅｄ）アルゴリズム等でキャッシュメモリの制御を行っていた。また最近アクセスした命令やデータを再度アクセスする傾向が強いプログラムの局所性を利用したデータの再利用、すなわちキャッシュメモリ上に最近アクセスされたデータを蓄えることによりディスクからの読み出しよりもキャッシュメモリからの読み出しを多くすることにより、読み出し速度を速くし、ディスク装置の見かけ上の性能向上を図った。
【０００３】
プログラムやデータのアクセス単位をセグメントと呼び、このセグメントは、図１に示すバッファ管理用構造体５０を用いてＬＲＵアルゴリズムで管理されている。バッファ管理用構造体５０は、セグメントアドレス５１と、データのブロックアドレス５２と、次の構造体へのポインタ５３と、前の構造体へのポインタ５４から成っている。
【０００４】
セグメントアドレス５１は、セグメントのキャッシュメモリ上の領域を示している。データのブロックアドレス５２は、セグメントのディスク上の領域を示しており、ホストコンピュータ等の上位処理装置からデータの読み出しの要求があった場合、要求に合ったデータかどうか検索する時に用いられる。次の構造体へのポインタ５３および前の構造体へのポインタ５４は、前後のバッファ管理用構造体５０を参照して、リスト構造を構成する。
【０００５】
図２は、キャッシュメモリを制御するマイクロコンピュータ内のメモリに存するキャッシュメモリ管理用リスト６０の構成の一例を示している。左端のバッファ管理用構造体５０ａは、次の構造体へのポインタ５３ａにより、左側から２番目のバッファ管理用構造体５０ｂを参照する。以下、同様にして、右端のバッファ管理用構造体５０ｄまで順次参照できる。逆に、右端のバッファ管理用構造体５０ｄは、前の構造体へのポインタ５４ｄにより、右側から２番目のバッファ管理用構造体５０ｃを参照する。以下、同様にして、左端のバッファ管理用構造体５０ａまで順次参照できる。
【０００６】
ＬＲＵアルゴリズムを使用してキャッシュメモリ管理用リスト６０を管理した場合、過去に利用されたデータのバッファ管理用構造体５０ほど右側に配置され、最近使われた利用頻度の高いデータのバッファ管理用構造体５０ほど左側に配置される。キャッシュメモリ上で古いデータと新しいデータの入れ替えがあると、新しいアクセス単位データにリンクされたバッファ管理用構造体５０がキャッシュメモリ管理用リスト６０に登録され左端に追加される。そして右端から古いアクセス単位データのバッファ管理用構造体５０が廃棄される。
【０００７】
古いデータがキャッシュメモリからなくなるので、キャッシュメモリ上には最近使われた利用頻度の高いデータが配置され、ディスク上のデータよりもキャッシュメモリ上のデータが読み出される割合が多くなり、ディスク装置のシステム性能が向上する。
【０００８】
しかし、映像データのような連続したデータは、他のデータと共用されることが少なく、その分再利用される可能性が低い。このようなデータがキャッシュメモリ上に保存される場合は、キャッシュメモリは、再び参照されることの少ないデータで埋まることになり、ＬＲＵアルゴリズムは性能向上に寄与しなくなる。
【０００９】
よって、アクセスされるデータに映像データのようなシーケンシャルデータと連続しないランダムデータが混在している場合にもキャッシュメモリを効率的に使用し、ディスク装置の性能低下を避けるには、キャッシュメモリにシーケンシャルなデータを不用意に保存しないようにする必要がある。
【００１０】
ただし、キャッシュメモリ上に上位処理装置が要求するデータが存在しないケースであるキャッシュミスの発生を最小限に抑えるために、効果的に先読みを行う必要があった。先読みとは、連続したデータをディスクから読み出す時に必要なデータの先のデータも一緒に読み出しておき、再度上位処理装置から読み出し要求のあった場合に、キャッシュメモリから読み出すことにより、スピードアップを図る方法である。
【００１１】
その為、キャッシュメモリをランダムデータ用のバッファ領域と、シーケンシャルデータ用のバッファ領域に分け、キャッシュメモリ上のデータを管理するキャッシュアルゴリズムと先読み処理を行う先読みアルゴリズムで別々に管理し、シーケンシャルデータでキャッシュメモリが占有されることを防いでいた。しかし、複数のアルゴリズムが存在し、データアクセス管理の複雑化を招いていた。
【００１２】
上記の問題を解決するため、ディスクに対するランダムアクセスとシーケンシャルアクセスを効率的に管理するために、図３に示すシーケンシャルデータ管理用構造体７０と図１に示す従来と同じバッファ管理用構造体５０を用い、図４に示すキャッシュメモリ管理用リスト６０ｂとシーケンシャルデータ管理用リスト８０とを形成し、これらのリストをキャッシュメモリを制御するマイクロコンピュータ内部のメモリに設け、キャッシュメモリ上のデータを管理する提案がある。
【００１３】
まずシーケンシャルデータ管理用構造体７０の構成について図３にて説明する。シーケンシャルデータ管理用構造体７０は、シーケンシャルデータ管理用構造体識別子７１と、次のバッファ管理用構造体へのポインタ７２と、前のバッファ管理用構造体へのポインタ７３と、シーケンシャルデータ管理用リストへのポインタ７４と、シーケンシャルデータ管理用リストへの登録数７５から成っている。
【００１４】
シーケンシャルデータ管理用構造体識別子７１は、シーケンシャルデータ管理用構造体７０を識別するデータであり、―１が入力されている。次のバッファ管理用構造体へのポインタ７２および前のバッファ管理用構造体へのポインタ７３は、シーケンシャルデータ管理用構造体７０の前後に位置するバッファ管理用構造体５０を参照するポインタである。
【００１５】
ただし、キャッシュメモリ管理用リスト６０ｂで示すように、シーケンシャルデータ管理用構造体７０が先頭に配置されるため、前のバッファ管理用構造体へのポインタ７３には、無効データが入力されている。
【００１６】
シーケンシャルデータ管理用リストへのポインタ７４は、シーケンシャルデータ管理用リスト８０内の先頭に位置するバッファ管理用構造体５０（図４のバッファ管理用構造体５０ｇに相当）を参照するポインタである。シーケンシャルデータ管理用リストへの登録数７５は、シーケンシャルデータ管理用リスト８０内に登録されているバッファ管理用構造体５０（図４のバッファ管理用構造体５０ｇ、５０ｈ、５０ｉに相当）の個数が入力されている。
【００１７】
次に、キャッシュメモリ管理用リスト６０ｂとシーケンシャルデータ管理用リスト８０の構成の一例について図４にて説明する。キャシュメモリ管理用リスト６０ｂは、先頭にシーケンシャルデータ管理用構造体７０を配置し、バッファ管理用構造体５０ｅ、５０ｆとで構成されている。シーケンシャルデータ管理用リスト８０は、バッファ管理用構造体５０ｇ、５０ｈ、５０ｉとで構成されている。
【００１８】
ホストコンピュータ等の上位処理装置からデータの入出力要求があり、キャッシュメモリへデータを格納する場合、ディスク装置に存するマイクロコンピュータ等の制御手段によって、データのアクセス単位であるセグメントのアドレスの連続数が所定数未満と判断された場合は、キャッシュメモリ管理用リスト６０ｂ内のバッファ管理用構造体５０とリンクされ、ランダムデータとして管理される。セグメントのアドレスの連続数が所定数以上と判断された場合は、シーケンシャルデータ管理用リスト８０内のバッファ管理用構造体５０とリンクされ、シーケンシャルデータとして管理される。
【００１９】
キャッシュメモリ管理用リスト６０ｂ内のシーケンシャルデータ管理用構造体７０の次のバッファ管理用構造体へのポインタ７２により、先頭のバッファ管理用構造体５０ｅが参照される。またシーケンシャルデータ管理用リストへのポインタ７４で、シーケンシャルデータ管理用リスト８０内の先頭のバッファ管理用構造体５０ｇが参照される。バッファ管理用構造体５０ｅ、５０ｇの次の構造体へのポインタ５３ｅ、５３ｇにより、バッファ管理用構造体５０ｆ、５０ｈが参照される。そして順次、バッファ管理用構造体５０ｉまで参照される。
【００２０】
その為、上位処理装置から読み出し要求があった場合、キャッシュメモリに要求されたデータがあるかどうかを、シーケンシャルデータ管理用リスト８０およびキャッシュメモリ管理用リスト６０ｂ内の各バッファ管理用構造体５０のブロックアドレス５２を参照することにより検索できる。
【００２１】
以上のようにランダムデータとシーケンシャルデータをまとまった管理用リスト構造体で管理することにより、キャッシュメモリをランダムデータ用のバッファ領域とシーケンシャルデータ用のバッファ領域に分けることを必要とせず、アルゴリズムの複雑化を防ぐことができる。（特許文献１参照）。
【００２２】
【特許文献１】
特開１９９８―１０５４６６号公報（第６−１０項、第２図）
【００２３】
【発明が解決しようとする課題】
しかし、上述した従来のキャッシュメモリ管理方法においては、シーケンシャルデータ用のリスト構造が一つしかない。これは、言い換えれば、連続したデータを管理できるのが１種類であることを示しており、ビデオデータあるいはオーディオデータといった単一のメディア種の連続したデータしか管理できない。
【００２４】
また近年のマルチメディア化による再生データ種の多様化に伴い、１つのメディア内に複数のデータ種が、混在することが多くなっている。従来の管理リスト構造では、複数のデータ種を時分割で再生している場合に、あるデータ種（説明のためＡメディア種）のシーケンシャルデータを先読みによりキャッシュメモリに格納していても、他のデータ種（説明のためＢメディア種）のアクセスにより無効化されてしまう。
【００２５】
すなわち、ホストコンピュータ等の上位処理装置からＢメディア種のシーケンシャルデータのアクセスが発生し、キャッシュメモリへＢメディア種のデータの格納が生じた場合、キャッシュメモリにすでに格納されていたＡメディア種のデータを管理しているシーケンシャルデータ管理用リストがＬＲＵアルゴリズムにより無効化され、データはキャッシュメモリから廃棄される可能性がある。
【００２６】
本発明は、上記の問題点に鑑み、キャッシュメモリの制御手段内にシーケンシャルデータ管理用リストを複数設けることにより、多様なデータ種を再生するディスクにおいても、複数のシーケンシャルデータを格納できるキャッシュ効率の高いキャッシュメモリ制御方法を採用したディスク装置を提供することを目的とする。
【００２７】
【課題を解決するための手段】
上記目的を達成するために本発明は、書き込み／読み出し回路部と、キャッシュメモリと、キャッシュメモリの制御手段と、ダイレクトメモリアクセス部と、入出力回路部を備えたディスク装置において、制御手段が、制御手段内のメモリへキャッシュメモリ管理用リストと複数のシーケンシャルデータ管理用リストを設け、キャッシュメモリ上のデータを管理する。
【００２８】
この構成によると、アドレスが所定数以上連続するシーケンシャルデータを複数管理できる。そのためキャッシュメモリ上に既に格納されているシーケンシャルデータが他種のシーケンシャルデータの格納によりキャッシュメモリから廃棄されてしまうことを防ぎ、先読みされたデータを有効に活用でき、キャッシュ効率を高めることができる。
【００２９】
また本発明は、キャッシュメモリ管理用リスト内に、上位処理装置からのデータの入出力要求により、制御手段からシーケンシャルデータ管理用リストがアクセスされた情報を保持する履歴フラグを設けた構成とする。
【００３０】
この構成によると、新しくシーケンシャルデータをキャッシュメモリに格納する際に、最も古くアクセスされたシーケンシャルデータ管理用リストを、履歴フラグを参照して特定し、シーケンシャルデータ管理用リストを無効化する。それによって、古いシーケンシャルデータをキャッシュメモリから廃棄し、キャッシュメモリに最新のシーケンシャルデータを格納することができ、キャッシュ効率を高めることができる。
【００３１】
また本発明は、キャッシュメモリ上のデータとリンクしていない空きのバッファ管理用構造体から成る空きセグメント管理用リストを設けた構成とする。
【００３２】
この構成によると、新しいデータをキャッシュメモリへ格納する場合に、そのデータにリンクさせるための空きのバッファ管理用構造体の有無を空きセグメント管理用リストを検索することにより簡単に確認できる。そしてシーケンシャルデータ管理用リストとキャッシュメモリ管理用リストへ、空きのバッファ管理用構造体をすぐに供給することができる。その為、書き込み時の処理時間を短くし、書き込み速度を向上させることができる。
【００３３】
【発明の実施の形態】
以下に本発明の実施形態を図面を参照して説明する。先ず、本発明の実施形態であるディスク装置の概略構成について図５を用いて説明する。
【００３４】
ディスク装置８は、ディスク１と、書き込み／読み出し回路部２と、キャッシュメモリ３と、入出力回路部４と、キャッシュメモリの制御手段であるマイクロコンピュータ５と、ダイレクトメモリアクセス部７等で構成される。
【００３５】
書き込み／読み出し回路部２は、ディスク１に対してデータの書き込み、読み出しの制御を行う。キャッシュメモリ３は、ディスク１から読み出したデータを一時的に蓄える。ダイレクトメモリアクセス部７は、キャッシュメモリ３および書き込み／読み出し回路部２と入出力回路部４との間でデータを転送する。入出力回路部４は、ホストコンピュータ等の上位処理装置６との間でデータの転送を行う。マイクロコンピュータ５は、キャッシュメモリ３の制御を行う。
【００３６】
次に、キャッシュメモリ３を制御するマイクロコンピュータ５内のメモリに存し、キャッシュメモリ３上のデータ管理に用いられる管理用構造体および管理用リストについて説明する。図６は、シーケンシャルデータ管理用構造体［０］、［１］の構成図である。図７は、空きセグメント管理用構造体の構成図である。図８は、キャッシュメモリ管理用リストおよびシーケンシャルデータ管理用リスト［０］、［１］の構成図である。図９は、空きセグメント管理用リストの構成図である。
【００３７】
従来技術と同様に、図１に示すバッファ管理用構造体５０を用いて、キャッシュメモリ３上のデータをセグメント単位で管理する。そして、図６に示すシーケンシャルデータ管理用構造体［０］１０とシーケンシャルデータ管理用構造体［１］２０とバッファ管理用構造体５０を用いて、図８に示すキャッシュメモリ管理用リスト６０ａとシーケンシャルデータ管理用リスト［０］３０とシーケンシャルデータ管理用リスト［１］４０とを構成する。
【００３８】
なお、図８の例では、ディスクに記録されているデータ種が２種類であると仮定し、シーケンシャルデータ管理用構造体［０］１０、［１］２０とシーケンシャルデータ管理用リスト［０］３０、［１］４０を配置しているが、より多くのデータ種がディスクに存在する場合は、それに合わせてシーケンシャルデータ管理用構造体およびシーケンシャルデータ管理用リストの数を増やして管理する。
【００３９】
まず、シーケンシャルデータ管理用構造体［０］１０、［１］２０の構成について図６を用いて説明する。シーケンシャルデータ管理用構造体［０］１０は、シーケンシャルデータ管理用構造体識別子１１と、次のバッファ管理用構造体へのポインタ１２と、前のバッファ管理用構造体へのポインタ１３と、シーケンシャルデータ管理用リストへのポインタ１４と、シーケンシャルデータ管理用リストへの登録数１５と、履歴フラグ１６から成っている。
【００４０】
シーケンシャルデータ管理用構造体識別子１１は、シーケンシャルデータ管理用構造体［０］１０を識別するためのデータであり、―１が入力されている。次のバッファ管理用構造体へのポインタ１２は、シーケンシャルデータ管理用構造体［０］１０の次に位置するバッファ管理用構造体５０を参照するポインタである。但し、次に位置するバッファ管理用構造体５０が存在しない場合は、―１が入力される。前のバッファ管理用構造体へのポインタ１３は、シーケンシャルデータ管理用構造体［０］１０の前に位置するバッファ管理用構造体５０を参照するポインタである。
【００４１】
しかし、図８に示すキャッシュメモリ管理用リスト６０ａのように、データ種が２種類の場合は、シーケンシャルデータ管理用構造体［１］２０が、シーケンシャルデータ管理用構造体［０］１０の前に配置される為、前のバッファ管理用構造体へのポインタ１３は、シーケンシャルデータ管理用構造体［１］２０を参照する識別子が入力される。
【００４２】
シーケンシャルデータ管理用リストへのポインタ１４は、シーケンシャルデータ管理用リスト［０］３０内の先頭のバッファ管理用構造体５０（図８に示すバッファ管理用構造体５０ｔに相当）を参照するポインタである。但し、シーケンシャルデータ管理用リスト［０］３０が存在しない場合は、―１が入力される。シーケンシャルデータ管理用リストへの登録数７５は、シーケンシャルデータ管理用リスト［０］３０に登録されているバッファ管理用構造体５０（図８に示すバッファ管理用構造体５０ｔ、５０ｌ、５０ｍに相当）の個数が入力されており、セグメント数の連続数をチェックすることができる。
【００４３】
履歴フラグ１６は、シーケンシャルデータ管理用リストが上位処理装置６の入出力要求によりマイクロコンピュータ５からアクセスされた情報を保持したものである。新しいシーケンシャルデータがキャッシュメモリ３に格納される場合に、各データ種ごとのシーケンシャルデータ管理用リストがすでに存在する場合、最も古くアクセスされたシーケンシャルデータ管理用リストを履歴フラグ１６で検索して特定し、そのシーケンシャルデータ管理用リストを無効化し、リンクされていたシーケンシャルデータをキャッシュメモリ３から廃棄する。
【００４４】
図８の例では、データ種が２種類と仮定しているため、履歴フラグ１６、２６は、０、１で示されているが、データ種が増えた場合は、それにともない履歴フラグを示す数字も増える。例えば、データ種がｎ種類あれば、履歴フラグは、０からｎ―１の整数であらわされ、履歴フラグが０で示されるシーケンシャルデータ管理用リストが、最も古くアクセスされた管理リストであり、履歴フラグがｎ―１で示されるシーケンシャルデータ管理用リストが、最も新しくアクセスされた管理リストとなる。
【００４５】
また、シーケンシャルデータ管理用構造体［１］２０については、構成がシーケンシャルデータ管理用構造体［０］１０と同じであるため、使用方法の相違点のみ説明する。シーケンシャルデータ管理用構造体識別子２１は、シーケンシャルデータ管理用構造体［１］２０を識別するためのデータであり、―２が入力されている。データ種が２種類より多い場合は、識別子のデータもそれにあわせて増やされる。例えば、データ種がｎ種類の場合は、配置されるシーケンシャルデータ管理用構造体もｎヶ配置され、ｎ番目の構造体の識別子は、―ｎと設定される。
【００４６】
次のバッファ管理用構造体へのポインタ２２は、キャッシュメモリ管理用リスト６０ａ内のシーケンシャルデータ管理用構造体［０］１０を参照するポインタである。前のバッファ管理用構造体へのポインタ２３は、シーケンシャルデータ管理用構造体［１］２０の前に位置するバッファ管理用構造体５０を参照するポインタである。
【００４７】
しかし、図８に示すキャッシュメモリ管理用リスト６０ａのように、シーケンシャルデータ管理用構造体［１］２０が先頭に配置されるため、無効データが入力される。但し、前のバッファ管理用構造体へのポインタ２３に、最後尾のバッファ管理用構造体５０（図８に示すバッファ管理用構造体５０ｋに相当）のセグメントアドレスを入力すれば、シーケンシャルデータ管理用構造体［１］２０からバッファ管理用構造体５０ｋを参照できる環状リスト構造も構成できる。
【００４８】
シーケンシャルデータ管理用リストへのポインタ２４は、シーケンシャルデータ管理用リスト［１］４０内の先頭のバッファ管理用構造体５０（図８に示すバッファ管理用構造体５０ｎに相当）を参照するポインタである。但し、シーケンシャルデータ管理用リスト［１］４０が存在しない場合は、―１が入力される。シーケンシャルデータ管理用リストへの登録数２５、履歴フラグ２６は、シーケンシャルデータ管理用構造体［０］１０のシーケンシャルデータ管理用リストへの登録数１５、履歴フラグ１６と同様な使い方がされる。
【００４９】
次に、キャッシュメモリ管理用リスト６０ａ、シーケンシャルデータ管理用リスト［０］３０、シーケンシャルデータ管理用リスト［１］４０の構成の一例である図８について説明する。
【００５０】
キャッシュメモリ管理用リスト６０ａは、シーケンシャルデータ管理用構造体［０］１０と、シーケンシャルデータ管理用構造体［１］２０と、バッファ管理用構造体５０ｊと、バッファ管理用構造体５０ｋとで構成される。
【００５１】
シーケンシャルデータ管理用リスト［０］３０は、バッファ管理用構造体５０ｔと、バッファ管理用構造体５０ｌと、バッファ管理用構造体５０ｍとで構成される。
【００５２】
シーケンシャルデータ管理用リスト［１］４０は、バッファ管理用構造体５０ｎと、バッファ管理用構造体５０ｏと、バッファ管理用構造体５０ｕとで構成される。
【００５３】
キャッシュメモリ管理用リスト６０ａ内において、シーケンシャルデータ管理用構造体［０］１０は、次のバッファ管理用構造体へのポインタ１２を用いて、シーケンシャルデータ管理用構造体［０］１０の次に位置するバッファ管理用構造体５０ｊを参照し、順次、右端のバッファ管理用構造体５０ｋまで参照する。逆に、右端のバッファ管理用構造体５０ｋは、前の管理用構造体へのポインタ５４ｋを用いて、バッファ管理用構造体５０ｊを参照し、順次、シーケンシャルデータ管理用構造体［１］２０まで参照する。
【００５４】
また、シーケンシャルデータ管理用構造体［０］１０、［１］２０のシーケンシャルデータ管理用リストへのポインタ１４、２４によりシーケンシャルデータ管理用リスト［０］３０、［１］４０の各先頭のバッファ管理用構造体５０ｔ，５０ｎを参照する。
【００５５】
シーケンシャルデータ管理用リスト［０］３０内においては、バッファ管理用構造体５０ｔの次の構造体へのポインタ５３ｔを用いて、次に位置するバッファ管理用構造体５０ｌを参照し、順次、右端のバッファ管理用構造体５０ｍまで参照する。逆に、右端のバッファ管理用構造体５０ｍは、前の管理用構造体へのポインタ５４ｍを用いて、バッファ管理用構造体５０ｌを参照し、順次、バッファ管理用構造体５０ｔまで参照する。
【００５６】
シーケンシャルデータ管理用リスト［１］４０内においても、バッファ管理用構造体５０ｎの次のバッファ管理用構造体へのポインタ５３ｎを用いて、次に位置するバッファ管理用構造体５０ｏを参照し、順次、右端のバッファ管理用構造体５０ｕまで参照する。逆に、右端のバッファ管理用構造体５０ｕは、前の管理用構造体へのポインタ５４ｕを用いて、バッファ管理用構造体５０ｏを参照し、順次、バッファ管理用構造体５０ｎまで参照する。
【００５７】
本実施例では、シーケンシャルデータ管理用リスト［０］３０、［１］４０内のバッファ管理用構造体５０ｔ、５０ｎの前の構造体へのポインタ５４ｔ、５４ｎには無効データが入力されている。また、バッファ管理用構造体５０ｍ、５０ｕの次の構造体へのポインタ５３ｍ、５３ｕにも無効データが入力されている。しかし、それぞれのポインタに、前に位置するバッファ管理用構造体５０および次に位置するバッファ管理用構造体５０のセグメントアドレスを設定すれば、環状リスト構造が構成でき、バッファ管理用構造体５０ｍ、５０ｔ、また５０ｎ、５０ｕがお互いに参照できる構成となる。
【００５８】
また、シーケンシャルデータ管理用構造体［０］１０、［１］２０のシーケンシャルデータ管理用リストへの登録数１５、２５によりシーケンシャルデータ管理用リスト［０］３０、［１］４０内のバッファ管理用構造体５０の登録数を参照でき、セグメントアドレスの連続数が確認できる。
【００５９】
ここで、マイクロコンピュータ５が、上位処理装置６からデータの読み出し要求を受けた時に、要求されたデータがキャッシュメモリ３上に存在するかを調べる処理についてケース１、２、３にわけて説明する。方法は、キャッシュメモリ管理リスト６０ａとシーケンシャルデータ管理用リスト［０］３０、［１］４０内のバッファ管理用構造体５０のデータブロックアドレスを参照して調べる。
【００６０】
まず、ケース１の場合を説明する。マイクロコンピュータ５は、キャッシュメモリ管理用リスト６０ａ内に位置するシーケンシャルデータ管理用構造体［０］１０の次のバッファ管理用構造体へのポインタ１２の値が−１であるかどうかを確認する。次のバッファ管理用構造体へのポインタ１２の値が−１でない場合は、次のバッファ管理用構造体へのポインタ１２から該当するバッファ管理用構造体５０ｊを特定し、データのブロックアドレス５２ｊが上位処理装置６から要求されているものかどうか調べる。
【００６１】
上記データブロックアドレスが要求されているものと異なるなら、該当バッファ管理用構造体５０ｊの次の構造体へのポインタ５３ｊを調べ、次のバッファ管理用構造体５０ｋを特定し、データのブロックアドレス５２ｋが上位処理装置から要求されているものかどうか調べる。
【００６２】
図８では、バッファ管理用構造体５０ｋで終わっているが、この処理を、データブロックアドレスが要求されているものと同一のアドレスデータを保持しているバッファ管理用構造体５０を見つけるまで、あるいは次のバッファ管理用構造体５０が無くなるまで続ける。要求されているデータブロックアドレスが見つかった場合は、上位処理装置６へデータを転送する。
【００６３】
次に、ケース２の場合を説明する。シーケンシャルデータ管理用構造体［０］１０の次のバッファ管理用構造体へのポインタ１２の値が−１すなわちキャッシュメモリ管理用リスト６０ａ内にバッファ管理用構造体５０が存在しない場合、あるいはケース１で該当するデータブロックアドレスが見つからなかった場合は、シーケンシャルデータ管理用構造体［０］１０、［１］２０のそれぞれのシーケンシャルデータ管理用リストへのポインタ１４、２４を調べる。
【００６４】
シーケンシャルデータ管理用構造体［０］１０、［１］２０のそれぞれのシーケンシャルデータ管理用リストへのポインタ１４、２４がどちらも、−１である場合、シーケンシャルデータ管理用リスト［０］３０、［１］４０が存在しないので、要求データブロックが存在しないことになる。
【００６５】
さらに、ケース３の場合を説明する。シーケンシャルデータ管理用構造体［０］１０、［１］２０のシーケンシャルデータ管理用リストへのポインタ１４、２４の内、いずれかのポインタが−１でない場合、すなわちシーケンシャルデータ管理用リスト［０］３０、［１］４０のいずれかが存在する場合、シーケンシャルデータ管理用リストへのポインタ１４、２４の値から、シーケンシャルデータ管理用リスト［０］３０、［１］４０内の先頭のバッファ管理用構造体５０ｔ、５０ｎを特定し、データのブロックアドレス５２ｔ、５２ｎが上位処理装置６から要求されたものであるか調べる。
【００６６】
上記データのブロックアドレス５２ｔ、５２ｎが要求されているものと異なるなら、次のバッファ管理用構造体５０ｌ、５０ｏを特定する。この作業をデータのブロックアドレスが要求されているものと同一のアドレスデータを保持しているバッファ管理用構造体５０を見つけるまで、あるいは次のバッファ管理用構造体５０が無くなるまで続ける。要求されているデータブロックアドレスが見つかった場合は、上位処理装置６へ、データを転送する。
【００６７】
もし以上の検索の結果、入出力要求のデータがキャッシュメモリ３に存在しなければ、次に、ディスク１からキャッシュメモリ３に要求データを格納し、キャッシュメモリ管理用リスト６０ａ、もしくはシーケンシャルデータ管理用リスト［０］３０、［１］４０にバッファ管理用構造体５０を登録し、要求データとリンクさせる必要がある。それは上位処理装置６から、再度同じデータの入出力要求を受けた場合に、キャッシュメモリ３からデータ転送するためである。
【００６８】
登録する場合、まず、キャッシュメモリ管理用リスト６０ａ、シーケンシャルデータ管理用リスト［０］３０、［１］４０に、入出力要求のデータのセグメントアドレスと連続するデータとリンクしたバッファ管理用構造体５０が既に登録されているかどうかを、セグメントアドレスを参照して確認する。アドレスが連続するデータのバッファ管理用構造体５０が登録されていれば、空きセグメント管理用リスト１００（図９参照）から空きのバッファ管理用構造体５０を取得し、連続するデータのバッファ管理用構造体５０とつなげて、キャッシュメモリ管理用リスト６０ａ、シーケンシャルデータ管理用リスト［０］３０、［１］４０に登録する。
【００６９】
アドレスが連続するデータのバッファ管理用構造体５０とつなげて、要求データのバッファ管理用構造体５０を登録するのは、管理リスト上においても連続性をもたせることにより、上位処理装置６からデータの入出力要求があった場合に、検索しやすいように、まとめて管理するためである。
【００７０】
ただし、キャッシュメモリ管理用リスト６０ａに、要求データのセグメントアドレスと連続したデータのバッファ管理用構造体５０が登録されていて、要求データのバッファ管理用構造体５０を、そこにつなげて登録した場合に、もしアドレスの連続数が所定数以上になれば、シーケンシャルデータとして扱われる。そのため、新たにシーケンシャルデータ管理用リストを設けて、そこへ両データのバッファ管理用構造体５０を移動させ、シーケンシャルデータとして登録する。
【００７１】
また、新規にシーケンシャルデータ管理用リストを設ける場合は、シーケンシャルデータ管理用構造体［０］１０、［１］２０の履歴フラグ１６、２６を参照し、最も古くアクセスされたシーケンシャルデータ管理用リストを無効化することが必要である。それは、データ種の種類数以上にシーケンシャルデータ管理用リストを設け、不用意にシーケンシャルデータをキャッシュメモリ３に格納させないためである。
【００７２】
もし、キャッシュメモリ管理用リスト６０ａ、シーケンシャルデータ管理用リスト［０］３０、［１］４０にセグメントアドレスが連続したデータが登録されていなければ、空きセグメント管理用リスト１００から空きのバッファ管理用構造体５０を取得し、キャッシュメモリ管理用リスト６０ａに、バッファ管理用構造体５０を登録させ、要求データとリンクさせる。
【００７３】
以上の様に、キャッシュメモリ管理用リスト６０ａ及びシーケンシャルデータ管理用リスト［０］３０、［１］４０内のバッファ管理用構造体５０のデータブロックアドレス５２を検索し、キャッシュメモリ３上に要求データが存在するか調べる。存在しなければキャッシュメモリ３に格納し、上記管理リストにバッファ管理用構造体５０を登録させ、要求データとリンクさせ管理を行う。
【００７４】
次に、空きセグメント管理用構造体の構成と空きセグメント管理用リストの構成の一例について図７および図９を用いて説明する。
【００７５】
図７に示す空きセグメント管理用構造体９０は、キャッシュメモリ３上のデータにリンクされていない空きのバッファ管理用構造体５０を管理するものである。空きセグメント管理用リスト１００への先頭ポインタ９１は、空きセグメント管理用リスト１００に登録されている空きセグメント管理用構造体９０の次に位置するバッファ管理用構造体５０（図９に示すバッファ管理用構造体５０ｐに相当）のセグメントアドレス５１（図９に示すセグメントアドレス５１ｐに相当）とリンクする。また、空きセグメント管理用リスト登録数９２は、空きセグメント管理用リスト１００に登録されているバッファ管理用構造体５０（図９に示すバッファ管理用構造体５０ｐ、５０ｑ、５０ｒに相当）の個数を示す。
【００７６】
マイクロコンピュータ５が、キャッシュメモリ３に新しくデータを格納し、古いデータを廃棄する場合に、空きセグメント管理用リスト１００に対して行う処理について説明する。まず、新しくデータが格納される場合に、空きのバッファ管理用構造体５０が存在するかどうかを、空きセグメント管理用リスト登録数９２をチェックして調べる。０以外であれば存在するので、空きセグメント管理用リスト１００から空きのバッファ管理用構造体５０を取得し、キャッシュメモリ管理用リスト６０ａあるいはシーケンシャルデータ管理用リスト［０］３０、［１］４０に登録させ、新しいデータとリンクさせる。０であれば、キャッシュメモリ３上にデータを格納するセグメント領域が存在しないことになり、古いデータを廃棄してから、空きのバッファ管理用構造体５０を取得する。
【００７７】
次に、古いデータを廃棄する場合は、古いデータとリンクしていたバッファ管理用構造体５０のキャッシュメモリ管理用リスト６０ａあるいはシーケンシャルデータ管理用リスト［０］３０、［１］４０への登録を無効化する。次に、登録が無効化されたバッファ管理用構造体５０を、空きセグメント管理用リスト１００に登録させ、そして空きセグメント管理用リスト登録数９２等の管理情報の更新を行う。
【００７８】
次に、マイクロコンピュータ５の制御手順を、図１０のフローチャートに沿って説明する。
【００７９】
ステップＳ１にて上位処理装置６から入出力要求を受け取る。次に、ステップＳ２にて、ステップＳ１にて入出力要求のあったデータがキャッシュメモリ３内に存在するかどうかを、キャッシュメモリ管理用リスト６０ａとシーケンシャルデータ管理用リスト［０］３０、［１］４０内のバッファ管理用構造体５０を検索することにより調べる。要求データのブロックアドレス５２と同一のものが検索されたら、ステップＳ３に進み、上位処理装置６にデータを転送する。
【００８０】
要求されたデータブロックがキャッシュメモリ３に存在しないと判断されたならステップＳ４に進む。キャッシュメモリ３に存在しない場合は、新しくバッファ管理用構造体５０を空きセグメント管理用リスト１００から取得する必要があり、キャッシュメモリ管理用リスト６０ａに入出力要求のアドレスと連続するデータが存在するかどうかを、セグメントアドレス５１を参照して判定する。もしキャッシュメモリ管理用リスト６０ａに連続するデータが存在しない場合は、ステップＳ５に進む。存在した場合は、ステップＳ７に進む。
【００８１】
ステップＳ５では、シーケンシャルデータ管理用リスト［０］３０、［１］４０に要求データとアドレスが連続するデータが存在するかどうかセグメントアドレス５１を参照して判定する。もし連続するデータが存在しない場合にはステップＳ１４に進む。存在する場合は、ステップＳ６に進む。
【００８２】
ステップＳ６では、ステップＳ５にて決定したアドレスが連続するデータが存在するシーケンシャルデータ管理用リストがどちらか（本実施例では０あるいは１）を記憶しておき、ステップＳ１３に進む。
【００８３】
ステップＳ７では、連続するアドレス数が所定数以上であるかどうか判定する。所定数以上連続しているならシーケンシャルデータに対するアクセスと判断し、ステップＳ８に進む。所定数以上連続していないならステップＳ１４に進む。
【００８４】
ステップＳ８では、シーケンシャルデータ管理用リスト［０］３０に登録されたバッファ管理用構造体５０があるかどうかを調べる。登録されたバッファ管理用構造体５０が無い場合は、ステップＳ１１に進む。登録されたバッファ管理用構造体５０がある場合は、ステップＳ９に進む。
【００８５】
ステップＳ９では、シーケンシャルデータ管理用リスト［１］４０に登録されたバッファ管理用構造体５０があるかどうかを調べる。登録されたバッファ管理用構造体５０が無い場合は、ステップＳ１２に進む。登録されたバッファ管理用構造体５０がある場合は、ステップＳ１０に進む。ステップＳ１０では、シーケンシャルデータ管理用リスト［０］３０、［１］４０の両方に登録されたバッファ管理用構造体５０がある場合に移行する。
【００８６】
ステップＳ１０では、シーケンシャルデータ管理用リスト［０］３０の履歴フラグ１６が１かどうか判定する。１でなければ、最も古くアクセスされたシーケンシャルデータ管理用リストであり、廃棄の対象となる。１であればステップＳ１２へ進み、０であればステップＳ１１に進む。
【００８７】
ステップＳ１１では、本例でデータを登録するリストをシーケンシャルデータ管理用リスト［０］３０であると記憶する。また、シーケンシャルデータ管理用リスト［０］３０にバッファ管理用構造体５０が登録済みであるなら、その登録されていたバッファ管理用構造体５０を無効化し、空きセグメント管理用リスト１００に追加し、空きセグメント管理用構造体９０のデータを更新する。
【００８８】
ステップＳ１２では、本例でデータを登録するリストをシーケンシャルデータ管理用リスト［１］４０であると記憶する。また、シーケンシャルデータ管理用リスト［１］４０にバッファ管理用構造体５０が登録済みであるなら、その登録されていたバッファ管理用構造体５０を無効化し、空きセグメント管理用リスト１００に追加し、空きセグメント管理用構造体９０のデータを更新する。
【００８９】
ステップＳ１３では、入出力要求のあったデータのブロックアドレス５２を、空きのバッファ管理用構造体５０に記憶し、ステップＳ６、ステップＳ１１、ステップＳ１２で記憶したシーケンシャルデータ管理用リスト［０］３０あるいはシーケンシャルデータ管理用リスト［１］４０に登録する。ここで、空きのバッファ管理用構造体５０は、空きセグメント管理用リスト１００から取得する。
【００９０】
ステップＳ１４では、空きのバッファ管理用構造体５０を取得するため空きセグメント管理用リスト１００に登録があるかどうかを調べる。具体的には、空きセグメント管理用リスト登録数９２が０以外であるかどうかを調べる。空きのバッファ管理用構造体５０があるならステップＳ１５に進む。なければ、ステップＳ１６に進む。
【００９１】
ステップＳ１５では、入出力要求のあったデータのブロックアドレス５２を、空きのバッファ管理用構造体５０に記憶し、キャッシュメモリ管理用リスト６０ａに登録する。ここで、空きのバッファ管理用構造体５０を空きセグメント管理用リスト１００から取得する。
【００９２】
ステップＳ１６では、空きのバッファ管理用構造体５０が存在していないので、キャッシュメモリ管理用リスト６０ａの右方部分、つまりＬＲＵアルゴリズムでいえば最も古くアクセスされたセグメントをキャッシュメモリ３から廃棄し、登録されていたバッファ管理用構造体５０を空きセグメント管理用リスト１００に追加する。その後、空きのバッファ管理用構造体５０を空きセグメント管理用リスト１００から取得し、そのバッファ管理用構造体５０に入力要求のあったデータのブロックアドレス５２を記憶させ、キャッシュ管理用リスト６０ａにリンクする。
【００９３】
ステップＳ１７では、入力要求のあったデータのブロックアドレス５２が登録されたバッファ管理用構造体５０のセグメントアドレスが目指すキャッシュメモリ３との間でデータ転送を実行し、次の入出力要求を待つためステップＳ１に戻る。
【００９４】
以上、実施の形態をあげて本発明を説明したが、本発明は必ずしも上記実施の形態の内容に限定されるものではない。
【００９５】
【発明の効果】
本発明によると、ディスク装置にビデオやオーディオといった多種のシーケンシャルデータが格納されている時にも、シーケンシャルデータ管理用リストを複数持つことにより、１つのキャッシュメモリ管理用リストで管理しているのでアルゴリズムの複雑化を避けることができるとともに、先読みの為にキャッシュメモリに格納されたシーケンシャルデータが、他種のシーケンシャルデータの格納により廃棄されることを防ぎ、ディスクよりもキャッシュメモリからの読み出しを多くさせ、ディスク装置の性能を向上することができる。
【００９６】
また本発明によると、シーケンシャルデータがアクセスされた履歴情報である履歴フラグを管理し、新しいシーケンシャルデータがキャッシュメモリに格納される場合、履歴フラグを参照することにより、最も古くアクセスされたシーケンシャルデータ管理用リストを検索し、それを無効化し、管理されていたシーケンシャルデータをキャッシュメモリから廃棄することにより、シーケンシャルデータ単位でＬＲＵアルゴリズムを適用でき、よりキャッシュ効率の高いディスク装置を提供できる。
【００９７】
キャッシュ管理リストとは別に、空きセグメント管理リストによりキャッシュメモリ内の空きセグメントの管理をすることにより、空きのバッファ管理用構造体をすぐに取得できるので、書き込み時間少なく、システム性能の高いディスク装置を提供可能である。
【図面の簡単な説明】
【図１】従来のキャッシュメモリを管理するためのバッファ管理用構造体の構成を示す図
【図２】従来のキャッシュメモリ制御方法によるキャッシュメモリを管理するキャッシュメモリ管理用リストの構成を示す図。
【図３】従来のキャッシュメモリ制御方法によるシーケンシャルデータ管理用構造体の構成を示す図。
【図４】従来のキャッシュメモリ制御方法によるキャッシュメモリを管理するためのキャッシュメモリ管理用リストとシーケンシャルデータ管理用リストの構成を示す図。
【図５】本発明のキャッシュメモリ制御方法を適用したディスク装置の構成を示す図。
【図６】本発明のキャッシュメモリ制御方法によるシーケンシャルデータ管理用構造体［０］、［１］の構成を示す図。
【図７】本発明のキャッシュメモリ制御方法による空きセグメント管理用構造体の構成を示す図。
【図８】本発明のキャッシュメモリ制御方法によるキャッシュメモリを管理するためのキャッシュメモリ管理用リストとシーケンシャルデータ管理用リスト［０］、［１］の構成の一例を示す図。
【図９】本発明のキャッシュメモリ制御方法による空きセグメント管理リストの構成を示す図。
【図１０】本発明のキャッシュメモリ制御方法による制御アルゴリズムを示すフローチャート図。
【符号の説明】
１    ディスク
２    書き込み／読み出し回路部
３    キャッシュメモリ
４    入出力回路部
５    マイクロコンピュータ（制御手段）
６    上位処理装置
７    ダイレクトメモリアクセス部
８    ディスク装置
１０    シーケンシャルデータ管理用構造体［０］
２０    シーケンシャルデータ管理用構造体［１］
３０    シーケンシャルデータ管理用リスト［０］
４０    シーケンシャルデータ管理用リスト［１］
５０    バッファ管理用構造体
６０    キャッシュメモリ管理用リスト
７０    シーケンシャルデータ管理用構造体
８０    シーケンシャルデータ管理用リスト
９０    空きセグメント管理用構造体
１００    空きセグメント管理用リスト
【図１】
2004152173.tif 000003
【図２】
2004152173.tif 000004
【図３】
2004152173.tif 000005
【図４】
2004152173.tif 000006
【図５】
2004152173.tif 000007
【図６】
2004152173.tif 000008
【図７】
2004152173.tif 000009
【図８】
2004152173.tif 000010
【図９】
2004152173.tif 000011
【図１０】
2004152173.tif 000012