(57)【要約】【課題】低使用頻度のデータにより高使用頻度のデータがキャッシュメモリから追い出されるのを防止してキャッシュヒット率を向上させるキャッシュ区分制御を、ユーザの手間の増加を伴わずに実現する。【解決手段】CPU101から発行するI/O命令にアクセス対象のデータがユーザデータかメタデータかを区別する識別情報を付加する。I/O命令を受けるドライバ装置102は、発行されたI/O命令に付加された識別情報により、キャッシュメモリ103に設定された複数の仮想領域111〜113のうちの使用すべき仮想領域を選択し、I/O命令の実行にキャッシュメモリへの新データの格納が伴う場合には、選択した仮想領域の番号を新データに対応してキャッシュメモリ103に記録する。これにより新データを格納したスロット114の所属する領域が決まる。キャッシュリプレースは各領域ごとに独立して実行し、もって予め設定した各領域の上限サイズを保つ。【選択図】  図１
2008305424.tif 000002
【特許請求の範囲】
【請求項１】
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の演算時間に比較して非常に時間がかかる。
そのために、キャッシュメモリを設置し、一度アクセスしたデータはキャッシュ
メモリ上に保存し、二回目からはキャッシュメモリ上のデータを参照することで
データへのアクセス時間の短縮を図っている。しかし、キャッシュメモリはディ
スクのサイズと比べ小さいため、全てのデータがキャッシュメモリ上に保存され
るわけではなく、新たなデータをキャッシュメモリに保存するためには古いデー
タを破棄する必要がある。
キャッシュの制御方式としては一般的にLRU(Least Recently Used)アルゴリズム
が知られている。LRUアルゴリズムとは、新データによるリプレースなどキャッ
シュデータの破棄が必要な場合に、最も古くアクセスされたデータから順に破棄
していく方式である。キャッシュ上のデータを最後にアクセスされた時間を付加
して保持する。アクセスされたデータがキャッシュに保持されている場合には、
アクセス情報を更新し、最新データへと変更する。これにより、常にアクセス時
間の古いキャッシュから破棄することができる。特開平11-65927には、通常のLR
U制御を行うキャッシュメモリの他に、優先度が付されたファイルをキャッシン
グする「優先度キャッシュ」を設けたシステムが開示される。この優先度キャッ
シュでは、優先度の高低によりキャッシュから破棄するファイルを決定する制御
方法がとられる。
【発明の開示】
【発明が解決しようとする課題】
【０００３】
キャッシュ制御において、通常のLRUアルゴリズムでは一度しか使用されないデ
ータもキャッシュに保持され、最新アクセスデータとされるため、使用頻度が高
いにも関わらず、その時点でアクセス時間が古いデータがキャッシュから追い出
されることがある。
優先度キャッシュを併用する上記従来技術によれば、使用頻度が高そうなファイ
ルに予め優先度の属性を付すことによって、一般のファイルが格納されるLRU制
御のキャッシュメモリとは異なる優先度キャッシュに格納される。よって上記の
問題は改善され、キャッシュヒット率が高まる。一方、通常はあまり使用されず
、つまり使用頻度は低いが、一時集中的に再使用されるファイルについても、LR
U制御のキャッシュメモリを利用できる。しかしながら上記従来技術では、どの
ファイルが優先度キャッシュを使用すべきファイルかの区別、およびその優先度
の値をユーザが予め判断して設定する必要がある。さらに優先度キャッシュと通
常のキャッシュとは物理的に分けられており、それぞれの種類のキャッシュ容量
の設定の自由度が小さいという問題点がある。
そこで本発明の一つの目的は、システムの自動判断でキャッシュメモリに格納す
る格納対象の区分が可能であり、したがって、高使用頻度のデータが低使用頻度
のデータに追い出されるのを防止してキャッシュヒット率を高め、IO性能を高め
る、という複数キャッシュの区分使用の効果を、人の手間の増加なしに達成でき
るキャッシュシステムおよびその制御方法を提供するにある。
本発明の更なる目的は、区分される各キャッシュ領域の容量の設定の自由度が大
きく、したがって格納対象の状態にマッチした設定が容易なキャッシュシステム
およびその制御方法を提供するにある。
【課題を解決するための手段】
【０００４】
本発明で開示される発明の代表的な特徴は、データをキャッシュメモリに格納す
る際にキャッシュスロットに記録する領域番号によりキャッシュの領域区分を行
い、その各々の領域ごとに予め上限サイズを設定し、各領域内で独立にキャッシ
ュリプレースを行う点にある。つまり予め設定される複数の領域はサイズのみが
設定された仮想領域である。
より詳しくは、ＣＰＵから発行されるディスクデータのI/O命令には、アクセス
対象のデータの種別を示す識別情報が付加されており、I/O命令の実行にキャッ
シュメモリへのデータ格納、もしくはキャッシュメモリ上のデータの読み出しが
生じる際に、そのI/O命令に付加された識別情報が、使用するべき領域を示す領
域番号として採用され、格納されたまたはアクセスされたデータが属する領域の
領域番号として実際にキャッシュメモリに記録される。
具体的にはI/O命令のアクセス対象の種別とは少なくともユーザデータかメタデ
ータかの種別であり、そのメタデータを更にi-node、ディレクトリ、その他のメ
タデータに区別しても良い。ユーザデータはアプリケーションプログラムが指定
するデータであり、メタデータはファイルシステムがファイル管理に使用するデ
ータである。したがって、ファイルシステムが稼働するＣＰＵでI/O命令を発行
する際に上記のどの種類のデータをアクセス対象としているのかを自動的に判断
可能であり、I/O命令にその種別を示す識別情報を付加できる。そこにユーザの
判断と手間は介在しない。
ユーザデータは一般にアクセスがランダムであり、一方メタデータはユーザデー
タに比べ使用頻度が高い。上記したキャッシュ制御によれば、I/O命令に付加さ
れたデータ種別がキャッシュの使用領域区分となり、各領域毎の上限サイズ制御
、つまり領域毎に独立のリプレース制御が行われるので新規のユーザデータによ
りメタデータがキャッシュから追い出される事態が防止され、キャッシュヒット
率が向上する。
本発明の他の特徴は発明の実施の形態の欄の記載で明らかにされる。
【発明の効果】
【０００５】
本発明によれば、I/O命令のアクセス対象データの種別が使用するキャッシュの
領域番号としてキャッシュデータに対応して記録され、その領域番号で区分され
た仮想領域ごとにキャッシュリプレースが制御されるので、データの使用頻度の
高低に対応したキャッシュメモリの区分制御によりキャッシュヒット率が向上し
、結果的にデスク上のデータのI/O性能が向上する。この効果を得るためにユー
ザの手間が増加するということがない。また、各仮想領域の容量の設定の自由度
が大きいので、データの状況にマッチした設定が容易である。
【発明を実施するための最良の形態】
【０００６】
本発明の第１の実施例を説明する。図１は本実施例の要点を説明する概念図であ
る。101はCPU、102はディスク制御用ドライバ装置、103はキャッシュメモリ、10
4はディスク装置である。キャッシュメモリ103は複数の仮想的な領域111〜113を
持つ。点線矢印は命令の流れを、実践矢印はデータの流れを表す。Read命令の場
合を例に挙動を説明すると、まずCPU101はI/O種類に応じて識別情報を付加してI
/O要求を発行する(121)。I/O要求を受けたドライバ装置102は識別情報を基に、
キャッシュメモリ103の複数の領域111〜113のうちのどの領域を使用するかを選
択する。次に、アクセス対象のデータがキャッシュメモリ103に存在するか否か
をチェックし、存在しない場合は、ディスクへのアクセスを行い(122)、ディス
クからデータを読み出す。読み出されたデータは選択された領域(ここでは領域1
13)内の空きスロット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の制御に使用するデータのことである。CPU
101から発行する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命令に付加された識別情報とヒット
したキャッシュスロットに記録された領域番号が一致するかどうかを判定する(4
08)。一致した場合はキャッシュデータをそのまま利用する。
ステップ408で一致しない場合とは、キャッシュされているデータを、前回のIO
命令の指定によるデータ種別とは異なる種別のデータとしてアクセスする場合で
ある。この場合には、当該スロットの領域番号を新たに選択した領域番号に書換
える。これとともに、ドライバ装置の持つ領域情報テーブル301の現在の使用量
の欄の更新を行う。更に、この領域番号の書換えによっても、書換先の領域の使
用量が上限サイズを越えることは許されない。そこで、書換先の領域の使用量が
既に上限サイズに達している場合には、上記のヒットしたスロットの領域番号の
書換えとともに、書換先の領域番号と同じ領域番号が記録されたキャッシュデー
タから１スロットのデータを選択してキャッシュメモリから追い出す。追い出し
対象の選択は、新データの格納の際のリプレース対象の選択と全く同様にLRUア
ルゴリズムにより行う。以上の処理が、図4に該当領域番号に書換えのステップ4
09として示された処理である。これらの手順により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で選択領域がメタデータの領域のいずれかであれば、その領
域の上限サイズと使用量を比較し、空きスロットの有無を判別する（ステップ70
5）。空きスロットがあれば、次に領域情報テーブルの使用量の欄の値の合計と
キャッシュメモリの全スロット数とを比較し、キャッシュメモリ全体として空き
スロットがあるか否かを判別する（ステップ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命令の命令フォーマットの一部を示す図である。
【図７】別の実施例の処理手順を示すフローチャートである
【符号の説明】
【０００８】
１０１…CPU
１０２…ドライバ装置
１０３…キャッシュメモリ
１０４…ディスク装置
１１１〜１１３…設定した仮想領域。
【図１】
2008305424.tif 000003
【図２】
2008305424.tif 000004
【図３】
2008305424.tif 000005
【図４】
2008305424.tif 000006
【図５】
2008305424.tif 000007
【図６】
2008305424.tif 000008
【図７】
2008305424.tif 000009