(57)【特許請求の範囲】
【請求項１】
I/O命令を発行するCPU装置と、ディスク装置と、所定のスロット単位のディスクデータを選択的に保持するディスクキャッシュメモリと、該ディスク装置およびキャッシュメモリの制御を行うドライバ装置を含むディスクシステムにおいて、
キャッシュメモリの各スロットは領域番号を格納するための欄を備え、
前記ドライバ装置は発行されたI/O命令によりディスクデータを前記キャッシュメモリに格納する際に前記I/O命令の種別に対応する値を前記領域番号の欄に記録し、
かつ発行されたI/O命令により前記キャッシュメモリのデータをアクセスするごとにアクセスするスロットの領域番号を前記I/O命令の種別に対応する値に更新し、
かつ前記領域番号で区別されるキャッシュメモリの各領域について設定された上限サイズに応じて、各領域ごと独立にキャッシュの追い出し制御を行う手段を有するディスクシステム。
【請求項２】
ディスク中の所定のデータをスロット単位で選択的に保持するキャッシュメモリを制御するキャッシュ制御方法において、
(a) 前記キャッシュメモリを構成する複数の仮想領域のそれぞれの上限サイズを設定し、
(b) アクセスしようとするデータの種別を識別する識別情報を付加したI/O命令を発行し、
(c) 発行されたI/O命令に付加された識別情報により、前記複数の仮想領域の中から使用すべき仮想領域を選択し、
(d) 発行されたI/O命令のアクセス対象であるデータが前記キャッシュメモリに存在しない場合は、新データの格納のためにキャッシュリプレースが必要か否かを判定し、
(e) キャッシュリプレースが必要な場合は、前記選択した仮想領域の番号と同一の仮想領域の番号を有するキャッシュデータからリプレース対象を選択して前記新データでリプレースし、キャッシュリプレースが必要でない場合は前記新データを格納し、かつ、いずれの場合も選択された仮想領域の番号を新データと対応付けて前記キャッシュメモリに記録する、とのステップを有し、
更に、前記発行されたI/O命令のアクセス対象であるデータがキャッシュメモリに存在する場合は、該データをアクセスするとともに該データに対応付けられた仮想領域の番号が前記選択された仮想領域の番号と一致するか否かを判定し、一致しない場合は前記データに対応付けられた仮想領域の番号を前記選択された仮想領域の番号に変更するステップを更に有することを特徴とするキャッシュ制御方法。
【請求項３】
前記仮想領域の番号の変更に際し、前記選択された仮想領域の番号と同一の仮想領域番号を有するキャッシュデータの合計サイズが該仮想領域に対して設定された上限サイズに既に達していれば、該同一の仮想領域番号を有するキャッシュデータの一つを前記キャッシュメモリから追い出すことを特徴とする請求項２のキャッシュ制御方法。
【請求項４】
I/O命令を発行するCPU装置とディスク装置との間でやりとりされる情報のうち、ディスク装置中の所定のスロット単位のデータを選択的に保持するキャッシュメモリを制御するキャッシュ制御方法において、
前記キャッシュメモリは、デフォルト領域を含む複数の仮想領域で構成され、
当該仮想領域は該キャッシュメモリ内の物理的な位置とは無関係に、当該仮想領域に属するスロットにより構成され、
当該デフォルト領域以外の仮想領域のそれぞれに上限サイズが設定され、
かつ当該上限サイズの合計は前記キャッシュメモリ全体の容量を超えない値であり、
前記キャッシュメモリを構成する全スロットには前記デフォルト領域に対応する識別情報が予め格納されているキャッシュ制御方法であって、
(a)  前記CPU装置がアクセスしようとするデータがユーザデータであるかメタデータであるかの種別を識別する識別情報を付加したI/O命令を前記CPU装置から発行し、
(b)  前記識別情報により前記複数の仮想領域の中から使用すべき仮想領域を選択し、
(c)  発行されたI/O命令のアクセス対象であるデータが前記キャッシュメモリに存在しない場合は、当該アクセス対象となった新データの格納のためにキャッシュリプレースが必要か否かを判定し、
(d)  前記キャッシュリプレースが必要な場合は、前記選択した仮想領域の番号もしくは前記デフォルト領域に対応する番号を有するキャッシュデータから前記キャッシュリプレース対象を選択して前記新データでリプレースし、
(e)  前記キャッシュリプレースが不要の場合は、前記新データを格納し、かつ、いずれの場合も前記選択された仮想領域の番号を前記新データと対応付けて前記キャッシュメモリに記録する、
とのステップを有し、
前記発行されたI/O命令のアクセス対象であるデータがキャッシュメモリに存在する場合は、そのキャッシュメモリ中のデータに対応付けられた仮想領域の番号が前記選択された仮想領域の番号と一致するか否かを判定し、一致しない場合は前記データをアクセスするとともに前記データの対応付けられた仮想領域の番号を前記選択された仮想領域の番号に変更するステップを更に有することを特徴とするキャッシュ制御方法。
【請求項５】
前記仮想領域の番号の変更に際し、前記選択された仮想領域の番号がデフォルト領域以外である場合には、前記選択された仮想領域の番号と同一の仮想領域番号を有するキャッシュデータの合計サイズが設定された上限サイズに既に達していれば、該同一の仮想領域番号を有するキャッシュデータの一つを前記キャッシュメモリから追い出すことを特徴とする請求項４のキャッシュ制御方法。
【請求項６】
前記キャッシュリプレースが必要か否かの判定は、前記選択された領域が前記デフォルト領域である場合には、前記キャッシュメモリ全体で空き領域があるか否かにより行い、
前記選択した仮想領域が前記デフォルト領域以外の仮想領域である場合には、その仮想領域の番号を有するキャッシュデータが前記キャッシュメモリに占めるサイズが該仮想領域に対して設定された上限サイズに達しているか否か及び前記キャッシュメモリ全体で空き領域があるか否かにより行うことを特徴とする請求項４のキャッシュ制御方法。
【請求項７】
請求項４のキャッシュ制御方法において、
前記デフォルト領域以外の指定された仮想領域の番号を有するキャッシュデータの全てについて仮想領域の番号を前記デフォルト領域の番号に書き換え、もって前記デフォルト領域に退避するステップを更に有することを特徴とするキャッシュ制御方法。
【請求項８】
請求項４のキャッシュ制御方法において、
指定された仮想領域の番号を有するキャッシュデータの全てについて前記キャッシュメモリからパージするステップを更に有することを特徴とするキャッシュ制御方法。
【請求項９】
前記識別情報はアクセスしようとするデータがユーザデータであるかメタデータであるかを少なくとも識別する情報であり、したがって前記複数の仮想領域の一つはユーザデータを格納するための領域であることを特徴とする請求項４のキャッシュ制御方法。
【請求項１０】
前記キャッシュリプレースが必要か否かの判定は、前記選択された仮想領域がユーザデータを格納するための領域である場合には、前記キャッシュメモリ全体で空き領域があるか否かにより行い、前記選択した仮想領域がユーザデータを格納するための領域以外の仮想領域である場合には、その仮想領域の番号を有するキャッシュデータが前記キャッシュメモリに占めるサイズが該仮想領域に対して設定された上限サイズに達しているか否か及び前記キャッシュメモリ全体で空き領域があるか否かにより行うことを特徴とする請求項４のキャッシュ制御方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ディスク等のストレージリソースのアクセス制御に関し、特にディスクキャッシュ制御に関する。
【０００２】
【従来の技術】
ディスクへのアクセス時間は、CPUの演算時間に比較して非常に時間がかかる。そのために、キャッシュメモリを設置し、一度アクセスしたデータはキャッシュメモリ上に保存し、二回目からはキャッシュメモリ上のデータを参照することでデータへのアクセス時間の短縮を図っている。しかし、キャッシュメモリはディスクのサイズと比べ小さいため、全てのデータがキャッシュメモリ上に保存されるわけではなく、新たなデータをキャッシュメモリに保存するためには古いデータを破棄する必要がある。
キャッシュの制御方式としては一般的にLRU(Least Recently Used)アルゴリズムが知られている。LRUアルゴリズムとは、新データによるリプレースなどキャッシュデータの破棄が必要な場合に、最も古くアクセスされたデータから順に破棄していく方式である。キャッシュ上のデータを最後にアクセスされた時間を付加して保持する。アクセスされたデータがキャッシュに保持されている場合には、アクセス情報を更新し、最新データへと変更する。これにより、常にアクセス時間の古いキャッシュから破棄することができる。特開平11-65927には、通常のLRU制御を行うキャッシュメモリの他に、優先度が付されたファイルをキャッシングする「優先度キャッシュ」を設けたシステムが開示される。この優先度キャッシュでは、優先度の高低によりキャッシュから破棄するファイルを決定する制御方法がとられる。
【０００３】
【発明が解決しようとする課題】
キャッシュ制御において、通常のLRUアルゴリズムでは一度しか使用されないデータもキャッシュに保持され、最新アクセスデータとされるため、使用頻度が高いにも関わらず、その時点でアクセス時間が古いデータがキャッシュから追い出されることがある。
優先度キャッシュを併用する上記従来技術によれば、使用頻度が高そうなファイルに予め優先度の属性を付すことによって、一般のファイルが格納されるLRU制御のキャッシュメモリとは異なる優先度キャッシュに格納される。よって上記の問題は改善され、キャッシュヒット率が高まる。一方、通常はあまり使用されず、つまり使用頻度は低いが、一時集中的に再使用されるファイルについても、LRU制御のキャッシュメモリを利用できる。しかしながら上記従来技術では、どのファイルが優先度キャッシュを使用すべきファイルかの区別、およびその優先度の値をユーザが予め判断して設定する必要がある。さらに優先度キャッシュと通常のキャッシュとは物理的に分けられており、それぞれの種類のキャッシュ容量の設定の自由度が小さいという問題点がある。
そこで本発明の一つの目的は、システムの自動判断でキャッシュメモリに格納する格納対象の区分が可能であり、したがって、高使用頻度のデータが低使用頻度のデータに追い出されるのを防止してキャッシュヒット率を高め、IO性能を高める、という複数キャッシュの区分使用の効果を、人の手間の増加なしに達成できるキャッシュシステムおよびその制御方法を提供するにある。
本発明の更なる目的は、区分される各キャッシュ領域の容量の設定の自由度が大きく、したがって格納対象の状態にマッチした設定が容易なキャッシュシステムおよびその制御方法を提供するにある。
【０００４】
【課題を解決するための手段】
本発明で開示される発明の代表的な特徴は、データをキャッシュメモリに格納する際にキャッシュスロットに記録する領域番号によりキャッシュの領域区分を行い、その各々の領域ごとに予め上限サイズを設定し、各領域内で独立にキャッシュリプレースを行う点にある。つまり予め設定される複数の領域はサイズのみが設定された仮想領域である。
より詳しくは、ＣＰＵから発行されるディスクデータのI/O命令には、アクセス対象のデータの種別を示す識別情報が付加されており、I/O命令の実行にキャッシュメモリへのデータ格納、もしくはキャッシュメモリ上のデータの読み出しが生じる際に、そのI/O命令に付加された識別情報が、使用するべき領域を示す領域番号として採用され、格納されたまたはアクセスされたデータが属する領域の領域番号として実際にキャッシュメモリに記録される。
具体的にはI/O命令のアクセス対象の種別とは少なくともユーザデータかメタデータかの種別であり、そのメタデータを更にi-node、ディレクトリ、その他のメタデータに区別しても良い。ユーザデータはアプリケーションプログラムが指定するデータであり、メタデータはファイルシステムがファイル管理に使用するデータである。したがって、ファイルシステムが稼働するＣＰＵでI/O命令を発行する際に上記のどの種類のデータをアクセス対象としているのかを自動的に判断可能であり、I/O命令にその種別を示す識別情報を付加できる。そこにユーザの判断と手間は介在しない。
ユーザデータは一般にアクセスがランダムであり、一方メタデータはユーザデータに比べ使用頻度が高い。上記したキャッシュ制御によれば、I/O命令に付加されたデータ種別がキャッシュの使用領域区分となり、各領域毎の上限サイズ制御、つまり領域毎に独立のリプレース制御が行われるので新規のユーザデータによりメタデータがキャッシュから追い出される事態が防止され、キャッシュヒット率が向上する。
本発明の他の特徴は発明の実施の形態の欄の記載で明らかにされる
【０００５】
【発明の実施の形態】
本発明の第１の実施例を説明する。図１は本実施例の要点を説明する概念図である。101はCPU、102はディスク制御用ドライバ装置、103はキャッシュメモリ、104はディスク装置である。キャッシュメモリ103は複数の仮想的な領域111〜113を持つ。点線矢印は命令の流れを、実践矢印はデータの流れを表す。Read命令の場合を例に挙動を説明すると、まずCPU101はI/O種類に応じて識別情報を付加してI/O要求を発行する(121)。I/O要求を受けたドライバ装置102は識別情報を基に、キャッシュメモリ103の複数の領域111〜113のうちのどの領域を使用するかを選択する。次に、アクセス対象のデータがキャッシュメモリ103に存在するか否かをチェックし、存在しない場合は、ディスクへのアクセスを行い(122)、ディスクからデータを読み出す。読み出されたデータは選択された領域(ここでは領域113)内の空きスロット114に格納される(123)。その後、読み出されたデータはドライバ装置102に渡される(124)。ドライバ装置102からCPU101にデータが送られて(125)、I/O命令が完了する。
キャッシュメモリ103の内部はスロット単位で管理されており、各スロット毎にデータがキャッシングされる。図2に示すように、各スロットは格納したデータのディスク装置上のアドレス201、キャッシュメモリの複数の領域のうちどの領域を使用しているかを示す領域番号202、実際の格納したデータ本体203からなる。
ここでキャッシュメモリの領域とは、キャッシュメモリ中の物理位置によって予め区分された領域ではない。予め設定されているのは各領域それぞれの上限サイズ、つまりそれらの領域として使用できるスロットの数である。CPU101からのIO命令によりデータ本体203が格納された時、同時に領域番号202が記録され、これらが有効とされて所属する領域が決まる。したがって、図1に示す領域区分は仮想的な区分である。また、同一領域に属するスロットが連続した位置にあるとは限らない。
本実施例ではキャッシュメモリ103に設定される領域は、ユーザデータの領域、メタデータ(i-node)の領域、メタデータ(ディレクトリ情報)の領域、メタデータ(その他)の領域の4種である。それぞれの領域の領域番号202として順に00、01、10、11を用いる。ユーザデータとはユーザが指定するファイルのことであり、メタデータとはファイルシステムがI/Oの制御に使用するデータのことである。CPU101から発行するIO命令に、IOアクセスの対象が上記４種のデータのうちのれであるかを区別する識別情報が含まれる。IO命令により、データがキャッシュメモリ103のスロットに格納される際、もしくはキャッシュメモリ中のデータがアクセスされる際にIO命令に含まれる識別情報がそのまま領域番号として記録される。
ドライバ装置102は図3に示す領域情報テーブル301を内部に保持する。領域情報テーブル301にはキャッシュメモリの各領域ごとの上限サイズと現在の使用量とが記録される。I/O命令が発行されると、ドライバ装置102はそのI/O命令に含まれる識別情報を用いれて領域情報テーブル301を参照し、対応するキャッシュ領域の空き状況を判定する。対応するキャッシュ領域に空き容量が無ければ、そのキャッシュ領域中のデータ、つまり同一の領域番号が記録された現在使用されているスロット中のデータをリプレース対象として選択し、ディスク装置104から読み出した新データでリプレースする。対応するキャッシュ領域に空き容量があれば、空きスロットに新データを格納する。
図４は実施例のドライバ装置によるキャッシュ処理の手順を示す。I/Oの種類に応じた識別情報が付加されたI/O命令が発行されると(401)、その識別情報を元に分割されたキャッシュ領域のうち使用すべき領域を選択する(402)。次に当該データがキャッシュに存在するか確認する(403)。キャッシュに存在しない場合にはデータを保持するための空きスロットが選択したキャッシュ領域内に存在するかを確認する(404)。空きスロットが存在しない場合には、当該キャッシュ領域からキャッシュリプレースの対象をＵＲＬアルゴリズムで選択し(405)、ディスク装置から読み出した新データでリプレースする(406)。選択したキャッシュ領域に空きスロットがあれば、新データを空きスロットに格納する(407)。このとき、このスロットの領域番号の欄にはステップ402で選択した領域番号が記録されるとともに、このスロットが有効とされ、これにより新スロットがどの領域に属するかが決定したことになる。一方、キャッシュにヒットした場合には、選択した領域でヒットしたかどうか、すなわちIO命令に付加された識別情報とヒットしたキャッシュスロットに記録された領域番号が一致するかどうかを判定する(408)。一致した場合はキャッシュデータをそのまま利用する。
ステップ408で一致しない場合とは、キャッシュされているデータを、前回のIO命令の指定によるデータ種別とは異なる種別のデータとしてアクセスする場合である。この場合には、当該スロットの領域番号を新たに選択した領域番号に書換える。これとともに、ドライバ装置の持つ領域情報テーブル301の現在の使用量の欄の更新を行う。更に、この領域番号の書換えによっても、書換先の領域の使用量が上限サイズを越えることは許されない。そこで、書換先の領域の使用量が既に上限サイズに達している場合には、上記のヒットしたスロットの領域番号の書換えとともに、書換先の領域番号と同じ領域番号が記録されたキャッシュデータから１スロットのデータを選択してキャッシュメモリから追い出す。追い出し対象の選択は、新データの格納の際のリプレース対象の選択と全く同様にLRUアルゴリズムにより行う。以上の処理が、図4に該当領域番号に書換えのステップ409として示された処理である。これらの手順によりIO命令の発行に対応したキャッシュ処理が完了する（410）。
キャッシュメモリの各領域に割り当てるキャッシュサイズの設定は、システム管理者が行う。上記実施例の領域設定画面を実施例図５に示す。まず、システム管理者が領域設定画面を起動すると、キャッシュメモリの分割数の問い合わせ画面が表示される(501)。キャッシュメモリの分割数を決定後、各領域のサイズ設定画面に移行し、一つずつサイズを設定する(502〜503)。各領域のサイズの合計は利用可能なキャッシュ領域のサイズを越えてはならないため、1番目の領域のサイズは0から最大キャッシュメモリサイズまでの値が受付けられる。同様にn番目の領域のサイズは0から残りキャッシュメモリサイズまでの範囲で選択される。全ての領域に対してサイズの設定が終了すると領域設定プログラムは終了する。各領域のサイズの設定で、使用頻度の高いデータのために使用される領域を大きくとができる。これにより、効率の良いキャッシュ制御が可能となる。
上記実施例において、IO命令への識別情報の付加はREAD/WRITEコマンドのコントロールバイトを利用している。図６に示すように、READ/WRITE用のSCSIコマンドは、最終バイトにコントロールバイト601が存在し、コントロールバイト601の上位２ビットはベンダ固有ビット501とされている。上記実施例ではIO命令でアクセスしようとするデータ種別をIO種別とし、そのIO種別は４通りであるので、この２ビットのベンダ固有ビットをIO種別のための識別情報の格納に利用している。
以上に述べた実施例では、IO命令に付加した識別情報が、そのIO命令により新たにデータが格納されるキャッシュスロットに領域番号として記録される。同じスロットのデータが別の識別情報をもつIO命令にてアクセスされると、スロットの領域番号はこの識別情報に更新される。キャッシュメモリは、仮想的に領域区分され、つまり各領域に対して設定された上限サイズを越えないように領域毎に独立してリプレース制御される。これにより、I/O性能が向上する。例えば、アプリケーションプログラムによりアクセスされたユーザデータは必ずしも再度アクセスされるとは限らない。上記の領域毎に独立したリプレース管理によれば、ユーザデータよりも再使用頻度が高いメタデータが再度利用しないユーザデータによりリプレースされてしまうことはなく、したがって結果的にキャッシュヒット率の向上が期待できるからである。しかも、その領域は、データが格納される際にデータに付随して格納する領域番号で区別されるので、予め区域分けした特別な構造のキャッシュメモリを使用する必要がない。更に、上記のI/O性能向上に関わる各領域の容量の設定が自由に行える等の利点をもつ。
キャッシュメモリ制御では、キャッシュデータの全てを一括して廃棄するパージ処理を可能としているの一般的であり、キャッシュメモリの初期化に用いられる。本実施例では、領域番号で区別された仮想領域毎に独立にパージを実行可能としている。すなわち、パージ命令のフォーマットに領域番号を指定する領域指定欄を備える。ドライバ装置は、発行されたパージ命令の領域指定欄が示す領域番号と同一の領域番号が記録されたキャッシュデータの全てを選択してキャッシュメモリから廃棄する。
また、上記実施例では、それぞれの領域のキャッシュ制御方法、特にリプレース対象の選択のアルゴリズムを全てLRUで統一している。LRUアルゴリズムはキャッシュ制御方式としては一般的で、効果が高い方式であるが、アクセス時刻の管理にオーバーヘッドがかかる。そこで、領域によっては、制御の容易なFIFO(First in First Out)を採用し、管理オーバヘッドの削減を達成することも可能である。例えば、より厳密なキャッシュ制御が必要なメタデータの領域にはLRUを採用し、ランダムアクセスの可能性が高いユーザデータの領域にはFIFOを採用することが可能である。
次に本発明の第２の実施例を説明する。第２の実施例で特徴的なのは、キャッシュメモリに設定される４つの仮想領域のうちのユーザデータ領域（領域番号00）はデフォルト領域である点である。すなわちデータが格納される以前のスロットの領域番号は00である。仮想領域の種別としてはこのようなスロットをユーザデータ領域のスロットとして扱う。
この実施例でも、領域情報テーブルは例えば図３のように設定される。ただし、複数領域のうちのユーザデータ領域は、もし他の領域の使用量がその上限サイズに達しておらず、よってキャッシュメモリ全体としてまだ空き領域が存在する場合はその他の領域の未使用の分まで拡張できる点が先の実施例と異なる。つまり領域情報テーブル上でユーザデータ領域の上限サイズの欄の設定値は厳密な上限サイズではない。また、各メモリスロットには有効ビット（図示せず）が設けれられる。図３の使用量の欄は、実際にデータが格納され、有効ビットに１が記録されたスロットの数である。したがって、領域情報テーブル上でのユーザデータ領域の使用量の値は、領域番号が00であるスロットの数から、実際にはデータがまだ格納されていないスロットの数を差し引いた値である。以下、図７にそって制御手順を述べる。
IO命令の発行のステップ701、そこに付加された識別情報から使用する領域を選択するステップ702、及びキャッシュヒットか否かをチェックするステップ703は、それぞれ先の実施例の図４のステップ401、402、403と全く変わりがない。IO命令の対象がキャッシュメモリになかった場合に、選択領域がユーザデータ領域（領域番号00）か、他のメタデータの各領域（領域番号01、10、11）のいずれかで空き状況の判定方法が変化する。ステップ704で選択領域がユーザデータ領域であれば、キャッシュメモリ全体でまだ空きスロットがあるか否かを判定する。つまり図３の領域情報テーブルの使用量の欄の値の合計と、キャッシュメモリの全スロット数、つまり上限サイズの欄の合計とを比較する（ステップ707）。空きスロットがあれば、新データを空きスロットに格納し、そのスロットの有効ビットを０から１に書き換える。なお領域番号の欄(図２の202)は空きスロットの時から既に00であり書き換えの必要はない（ステップ708）。このフローにより、ユーザデータの実際の占有サイズが領域情報テーブル上の上限サイズを越えて拡張される場合が生じる。ステップ707で空きスロットがなければ、ステップ709でユーザデータ領域内がらリプレース対象を選択し、ステップ711で新データとリプレースする。
一方、ステップ704で選択領域がメタデータの領域のいずれかであれば、その領域の上限サイズと使用量を比較し、空きスロットの有無を判別する（ステップ705）。空きスロットがあれば、次に領域情報テーブルの使用量の欄の値の合計とキャッシュメモリの全スロット数とを比較し、キャッシュメモリ全体として空きスロットがあるか否かを判別する（ステップ706）。空きスロットがあれば新データを格納する。また、そのスロットの領域番号の欄に選択領域の番号を記録し、有効ビットに１を記録する（ステップ708）。ステップ706でキャッシュメモリ全体として空きスロットが無い場合とは、本来はメタデータの領域となるべき領域までユーザデータが占有している場合である。したがって、ステップ709ではユーザデータ領域の領域番号00が記録されたスロットの一つをリプレース対象として選択し、ステップ711で新データとリプレースする。この時、データリプレースされるスロットの領域番号の欄がユーザデータ領域の番号00から新データに対応する選択領域の番号に書き換えられる。上記のステップ705、706、709、711と進むフローにより、ユーザデータの実際の格納領域がその上限サイズを越えて一時的に拡張された場合にも、その拡張された部分は順次メタデータでリプレースされる。
ステップ705で選択領域に空きスロットが無ければ、ステップ710にて、その選択領域内からリプレース対象を選択し、ステップ711に進んで新データでリプレースする。この動作は図４のステップ405、406と同様である。またキャッシュヒットの場合に、選択した領域でヒットか否かを判定するステップ712、選択した領域以外でヒットした場合に、そのキャッシュデータをアクセスし、スロットの領域番号を更新するステップ713も、図４のステップ408、409と同様である。ただし、ステップ713において、選択した領域がユーザデータ領域の場合には、領域のサイズが上限値を越えてもキャッシュからの追い出しは必要ない。
本実施例では、フラッシュと呼ぶキャッシュ処理を実行可能である。フラッシュとはデフォルト領域以外の領域のキャッシュデータをデフォルト領域に一括して退避することである。具体的には、ドライバ装置はフラッシュ命令が発行されるとド領域番号01、10、11が記録されたキャッシュデータの領域番号を全て00に書き換える。これに加えて、設定した各領域毎に独立したフラッシュ処理も実行可能にすることもできる。つまり、フラッシュ命令のフォーマットにフラッシュ対象の領域を指定する領域指定欄を設ける。ドライバ装置は、発行されたフラッシュ命令の領域指定欄の示す領域番号と同じ領域番号が記録されたキャッシュデータの領域番号を00に書き換える。もし発行されたフラッシュ命令の領域指定欄が00であれば、キャッシュメモリ中に記録された01、10、11である領域番号を全て00に書き換える。
図７に示すキャッシュ制御フローを行うドライバ装置を採用した実施例では、設定した複数のキャッシュ領域のうちユーザデータ領域に限っては、本来他の領域として用いるべき空きスロットまで一時的に拡張することができる。したがって先の実施例と比較すると、キャッシュメモリのより有効な利用が行われる。他の領域の新データがあれば領域を拡張使用するユーザデータは順次新データにリプレースされる。つまり定常の状態では、各領域のサイズは、それぞれ領域情報テーブルに設定された上限サイズに制御される。つまり、領域ごとに独立したリプレース制御がなされる点は先の実施例と同様である。したがって、使用頻度の高いデータが使用頻度の低いデータによりリプレースされることが防止され、キャッシュヒット率が向上するとの作用効果をもつ。
【０００６】
【発明の効果】
本発明によれば、I/O命令のアクセス対象データの種別が使用するキャッシュの領域番号としてキャッシュデータに対応して記録され、その領域番号で区分された仮想領域ごとにキャッシュリプレースが制御されるので、データの使用頻度の高低に対応したキャッシュメモリの区分制御によりキャッシュヒット率が向上し、結果的にデスク上のデータのI/O性能が向上する。この効果を得るためにユーザの手間が増加するということがない。また、各仮想領域の容量の設定の自由度が大きいので、データの状況にマッチした設定が容易である。
【図面の簡単な説明】
【図１】本発明の実施例を示す概略図である。
【図２】実施例のキャッシュメモリの各スロットの構成を示すデータ構成図である。
【図３】実施例の制御ドライバ内のテーブルの構成を示すデータ構成図である。
【図４】実施例の処理手順を示すフローチャートである。
【図５】仮想領域のサイズの指定方法を示す図である。
【図６】実施例で用いるI/O命令の命令フォーマットの一部を示す図である。
【図７】別の実施例の処理手順を示すフローチャートである
【符号の説明】
101…CPU
102…ドライバ装置
103…キャッシュメモリ
104…ディスク装置
111〜113…設定した仮想領域。
【図１】
0004186509.tif 000002
【図２】
0004186509.tif 000003
【図３】
0004186509.tif 000004
【図４】
0004186509.tif 000005
【図５】
0004186509.tif 000006
【図６】
0004186509.tif 000007
【図７】
0004186509.tif 000008