JP3861061B2 - ディスクキャッシュ制御装置 - Google Patents
ディスクキャッシュ制御装置 Download PDFInfo
- Publication number
- JP3861061B2 JP3861061B2 JP2003037601A JP2003037601A JP3861061B2 JP 3861061 B2 JP3861061 B2 JP 3861061B2 JP 2003037601 A JP2003037601 A JP 2003037601A JP 2003037601 A JP2003037601 A JP 2003037601A JP 3861061 B2 JP3861061 B2 JP 3861061B2
- Authority
- JP
- Japan
- Prior art keywords
- data
- cache memory
- cache
- processing
- stored
- 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 - Lifetime
Links
Images
Landscapes
- Memory System Of A Hierarchy Structure (AREA)
Description
【産業上の利用分野】
本発明は、キャッシュメモリを有するディスクキャッシュ制御装置に係り、具体的には、キャッシュメモリを用いて、固定長記録形式のディスク装置により可変長記録形式のディスク装置をエミュレ−トするディスクキャッシュ制御装置に関する。
【0002】
【従来の技術】
ディスク装置は、情報処理システムにおいてデ−タの記録媒体として一般的に用いられている記録装置である。ディスク装置の障害が、情報処理システムに与える影響は多大であり、ディスク装置の高信頼化が必須である。
特許文献1には、記憶装置の高信頼化技術の一例が示されている。
本従来技術は、処理装置から転送されたデ−タを記憶サブシステムにおいて、当該記憶サブシステムに接続される記憶装置の数より少なくても1だけ少ない数のセグメントに等分割する。分割した個々のセグメントの排他的論理和を求めることによって、セグメントと同じバイト長の検査合計、すなわちパリティを生成する。個々のデ−タセグメントとパリティセグメントを故障の点で互いに独立している異なった記憶装置に記録し、これにより、一台の記憶装置が故障しても、それに記録されているデ−タが再生でき、高い信頼性が実現できる。
前記従来技術では、パリティを用いた高信頼化技術であるため、個々のデ−タセグメントとパリティセグメントは、同一のバイト数となり、このような固定長のデ−タを記録する記録媒体は、固定長記録形式(固定ブロックア−キテクチャ(FBA)形式)が望ましい。一方、多くの大規模情報処理システムは、ディスク空間を効率良く利用するため、レコ−ドのバイト長に応じてディスクトラック記録形式を分割する可変長記録形式、すなわちカウント、キ−、デ−タ(CKD)形式を用いている。
FBA形式のディスク装置を用いて、CKD形式のディスク装置をエミュレ−トする方式(CKDエミュレ−ト方式)については、特許文献2に一例が示されている。前記従来技術では、CKD形式のレコ−ドのバイト
変位相対位置を維持しながらFBA形式のディスク装置に記録することにより、CKD形式のデ−タのアドレッシングが可能となる。
以上、ディスク装置の高信頼化に関する従来技術を示したが、ディスク装置の性能も情報システムに多大な影響を与える。ディスク装置の性能を向上させる技術としてディスクキャッシュがある。従来のディスクキャッシュ制御装置については、非特許文献1において論じられている。
【特許文献1】
特開昭53−148928号公報
【特許文献2】
特開平1−306917号公報
【非特許文献1】
アイ・ビ−・エム システムズジャ−ナル(IBM SYSTEMS JOURNAL)、Vol.28、No.2、1989年、pp.196−226
【0003】
【発明が解決しようとする課題】
上記CKDエミュレ−ト方式は、ディスク装置へデ−タ出力中の障害について考慮されていない。つまり、FBA形式のディスク装置によりCKD形式のディスク装置をエミュレ−トする場合、CKD形式のレコ−ドは、FBA形式のブロックとデ−タ境界が一致していない。
このため、処理装置からCKD形式のレコ−ドの更新要求が発行されると、更新対象となったCKD形式レコ−ドに対応する部分以外のデ−タを含めてディスク装置に格納することになる。従って、ディスク装置へデ−タ書き込み中に障害が発生すると、処理装置から要求された更新対象CKDレコ−ド以外のCKDレコ−ドを破壊してしまうという問題がある。
上記アイ・ビ−・エム システムズジャ−ナルで論じられたディスクキャッシュに関する従来技術では、ライトキャッシュ方式が開示されている。
具体的には、制御装置内に揮発性のキャッシュメモリとバッテリ電源により不揮発化されたメモリ(Nonvolatile Stoage:NVS)を持ち、処理装置からライト要求が発行された場合、更新レコ−ドをキャッシュメモリとNVSの両方に同時に格納する。NVSに更新レコ−ドを格納した時点でライト処理の終了を処理装置に報告し、更新レコ−ドは、処理装置からのライト要求とは非同期にディスク装置に書き込まれる。これにより、電源障害や、ディスク書き込み障害が発生しても、更新レコ−ドは、NVS内に保持されるため、レコ−ド更新処理おいてもディスクキャッシュの効果が期待できる。しかし、CKDエミュレ−ト方式の基本的問題は解決されていなかった。
【0004】
一方、各社で開発されたFBA形式のディスク装置等を共通に使用できるようにするためのインタフェ−スとして、ANSI(米国規格協会)で定められたSCSI(Small Computer Systems Interface)がある。
このSCSIにおいてディスク装置上のデ−タをアクセスするためにはCDB(コマンド記述ブロック)にアクセス対象なるFBAブロックのアドレスと転送バイト数を指定する。この際、複数FBAブロックのアクセスを1回のCDBで指定することは可能であるが、この場合、アクセス対象FBAブロックは論理的に連続でなければならない。
これに対しCKD形式のディスク装置をアクセスする場合のインタフェ−スは、不連続のCKDレコ−ドに対しても、1回の入出力要求でアクセス可能である。このため、FBA形式のディスク装置のインタフェ−スとしてSCSIを用い、CKDエミュレ−ションを行なった場合、ディスク装置に対し複数回の入出力要求を発行しなければならず、CDB発行オ−バヘッドのみならず、ディスク回転待ちが多数発生する。
この問題は、デ−タの読出し要求に対しては、予め処理装置が要求するアクセス範囲のデ−タをキャッシュメモリにロ−ディングすることにより回避可能であるが、デ−タの書き込み要求に対しては、ディスク装置へのアクセス回数を削減することはできない。
【0005】
本発明の目的は、ディスク装置にデ−タ書き込み動作中に障害が発生してもデ−タを消失しないCKDエミュレ−ト方式を提供することと、CKDエミュレ−トに適したディスクキャッシュ制御方式を提供することにある。
他の目的は、FBA形式のディスク装置のインタフェ−スとしてSCSIを用いた場合においてもディスク装置へのアクセス回数が増えないCKDエミュレ−ト方式を提供することにある。
【0006】
【課題を解決するための手段】
上記目的を達成するために、処理装置から更新対象となったCKDレコ−ド(CKD形式におけるレコ−ド)を含むFBAブロック(FBA形式ディスク装置上の固定長ブロック)を複数のキャッシュメモリに格納するようにしたものである。これを実現する手段として以下を用いる。
(1)処理装置から更新対象となったCKDレコ−ドを含むFBAブロックが、一つのキャッシュメモリ(キャッシュメモリa)上にのみ存在する場合、当該FBAブロック内の当該CKDレコ−ド以外の領域をキャッシュメモリa以外の一つ以上のキャッシュメモリにコピ−する。
(2)処理装置により更新されたCKDレコ−ドを当該CKDレコ−ドを含むFBAブロックが存在するキャッシュメモリの全てに格納する。
(3)処理装置からアクセス対象となったCKDレコ−ドを含むFBAブロックがいずれのキャッシュメモリにも存在しない場合、当該FBAブロックをディスク装置から読出し、一つ以上のキャッシュメモリに格納する。
処理装置からアクセス対象となったCKDレコ−ドを含むFBAブロックがいずれのキャッシュメモリにも存在しない場合、一つのキャッシュメモリにアクセス対象となったCKDレコ−ドを含むFBAブロックを格納し、処理装置からの入出力要求がデ−タ更新要求のときのみ上記(1)、(2)の手段を実行する方式も考えられる。但し、この方式は、FBAブロックのキャッシュメモリへの格納処理に加え、キャッシュメモリ間のコピ−処理が必要となる。一方、(3)の方式では、2つのキャッシュメモリへのFBAブロックの格納処理は同時に行なわれるため、キャッシュメモリ間コピ−処理分の時間を短縮することができる。
上記制御により同一のFBAブロックが複数のキャッシュメモリに存在することになり、キャッシュメモリの利用効率が低下するという問題がある。この問題に対して、更新CKDレコ−ドを含まないFBAブロックを格納している各キャッシュメモリスロットをLRU(Least Recntery Used)チェインの異なる位置に接続する。
上記他の目的を達成するために更新CKDレコ−ドを含むFBAブロックの間のFBAブロックについても複数のキャッシュメモリに格納するようにしたものである。これを実現する手段として以下を用いる。
(4)更新CKDレコ−ドを含むFBAブロックの間のFBAブロックが、一つのキャッシュメモリ(キャッシュメモリa)上にのみ存在する場合、当該FBAブロック内の当該CKDレコ−ド以外の領域をキャッシュメモリa以外の一つ以上のキャッシュメモリにコピ−する。
(5)更新CKDレコ−ドを含むFBAブロックをFBA形式のディスク装置へ格納する際、一方のキャッシュメモリaを用いディスク装置への格納処理を実行し、他のキャッシュメモリにより処理装置からのデ−タ読出し要求を実行する。
【0007】
【作用】
処理装置は、ディスクキャッシュ制御装置に対してCKDレコ−ドのアドレスを指定して出力要求を発行する。
この出力要求を受領したディスクキャッシュ制御装置は、CKDレコ−ドアドレスから当該CKDレコ−ドを含むFBAブロックのアドレスを算出する。このFBAブロックアドレスを用い、当該FBAブロックがキャッシュメモリ上に存在するかを判定するヒット/ミス判定を行なう。
ヒット/ミス判定により、当該FBAブロックが一つのキャッシュメモリにのみ格納されていると判定された場合は、上記(1)の処理を実行する。
また、当該FBAブロックがいずれのキャッシュメモリにも格納されていないと判定された場合、上記(3)の処理を実行する。
その後、処理装置よりデ−タを受領し、キャッシュメモリ上のFBAブロックに格納する上記(2)の処理を実行する。
これにより、複数のキャッシュメモリ上に処理装置から転送された出力デ−タを含むFBAブロックが格納される。
これにより、いずれかのキャッシュメモリに障害が発生しても一つ以上のキャッシュメモリ上に処理装置から転送されたデ−タが保持されるため、処理装置に出力デ−タをキャッシュメモリ上に格納した時点で出力処理の終了を報告しても問題ない。
さらに、一つ以上のキャッシュメモリにバッテリ電源等の不揮発化機構を備え、処理装置から転送されたデ−タを不揮発化されたキャッシュメモリに格納することにより、電源障害に対しても処理装置から転送されたデ−タを保証できる。
さらに、キャッシュメモリへの格納単位をFBAブロックとしているためディスク装置へデ−タ格納中に電源等に障害が発生しても、障害復旧後、障害により出力処理が中断されたFBAブロックを不揮発化されたキャッシュメモリから再出力することにより障害回復が可能となる。
【0008】
キャッシュメモリ上のFBAブロックは、エミュレ−ト対象となるCKD形式のディスク装置のトラック単位にまとめられ管理されており、この管理単位をキャッシュスロット呼ぶ。処理装置より入出力要求が発行され、当該入出力要求の対象となるトラックがキャッシュメモリ上に存在しない場合、最も長い間アクセスされていないキャッシュスロットを選択し、このキャッシュスロットに処理装置からアクセス対象となったトラックに対応するFBAブロックを読み込む。
このキャッシュスロットの選択にLRU(Least Recentery Used)チェインを用いる。LRUチェインには、処理装置から読出し対象となったキャッシュスロット、およびディスク装置へ書き込みを終了したキャッシュスロットが登録されている。
本発明では、キャッシュスロットを各キャッシュメモリ毎に管理し、LRUチェインへのキャッシュスロットの登録位置を各キャッシュメモリ単位に変更する。これにより、エミュレ−ト対象となるCKDディスク装置のトラックに対応するキャッシュスロットを保持するキャッシュメモリ数は、処理装置からのアクセス頻度により決定される。
【0009】
処理装置より更新されたCKDレコ−ドを含むFBAブロック(更新FBAブロック)は、上記(1)、(2)、および(3)の処理により複数のキャッシュメモリに存在することになる。
さらに(4)の処理により、更新FBAブロックの間の未更新FBAブロックを複数のキャッシュメモリに配置される。それによって、未更新FBAブロックをディスク装置に書き込み中にキャッシュメモリに障害が発生しても、他の正常なキャッシュメモリから書き込み動作を再実行できる。
このため、FBA記録形式のディスク装置のインタフェ−スとしてSCSIを用いても、1回の出力処理により、複数の更新FBAブロックをディスク装置に格納でき、かつ無駄な回転待ちが発生しないため、効率的にディスク装置へのデ−タ格納処理が実行できる。
また(5)の処理により、更新FBAブロックをディスク装置に格納中であっても、他のキャッシュメモリにより処理装置からのデ−タ読出し処理が実行できる。
【0010】
【実施例】
以下、本発明の一実施例を図面を参照して説明する。
図1は、本発明の一実施例の制御構成を示す図である。
処理装置1は、可変長記録形式の代表的インタフェ−スであるCKDインタフェ−スを使用するプログラム(以下プログラムと呼ぶ)10を実行し、演算装置(図示せず)、主記憶装置(図示せず)、および入出力プロセッサ(図示せず)から構成される。処理装置1は、制御装置2を介して固定長記録形式のディスク装置(FBAディスク装置)3に接続される。
制御装置2は、チャネル制御部21により処理装置1と接続され、ドライブ制御部24によりFBAディスク装置3に接続される。さらに制御装置2内には、複数のキャッシュメモリ(図示の例では、バッテリ電源等により不揮発化された不揮発キャッシュメモリ22、23の2つのキャッシュメモリが存在する場合が示されている)、チャネル制御プロセッサ25、ドライブ制御プロセッサ26、および制御メモリ27を含んでいる。なお、制御メモリ27も、バッテリ電源等により不揮発化されている。
【0011】
プログラム10が外部記憶装置との間でデ−タを入出力する場合は、主記憶装置上にチャネルプログラムを配置し、入出力起動命令を実行する。入出力起動命令を契機にチャネルプロセッサが起動され、チャネルプロセッサは、主記憶装置上のチャネルプログラムを読出し、制御装置2へ入出力要求を発行する。
制御装置2へ発行される入出力要求は、CKD形式デ−タであり、直接FBAディスク装置3への入出力要求とすることはできない。プログラム10からの入出力要求をFBAディスク装置において実行するため、チャネル制御プロセッサ25、およびドライブ制御プロセッサ26にエミュレ−ションプログラムが格納されている。
【0012】
処理装置1から転送されるCKD形式デ−タは、制御装置2においてエミュレ−トするCKDディスク装置のトラック(CKDトラックと呼ぶ)単位にまとめられ、FBAディスク装置3に記憶される。
例えば、60KBの物理トラック容量のCKDディスク装置を2KBの容量を持つ固定長ブロックのFBAディスク装置によりエミュレ−トする場合、CKDトラックは、30個の固定長ブロックにマッピングされる。
図2は、CKD形式デ−タをFBA形式デ−タによりエミュレ−トする際のデ−タ形式を示す。
CKDトラックは、INDEX 100によりトラックの開始位置が示され、トラック上の各フィ−ルドは、ギャップにより区切られている。
ギャップG1 101は、INDEX 100と、トラックの状態およびトラック番号を管理するトラックの最初のフィ−ルドであるHA 102を分離する。ギャップG2’ 103は、HA 102とR0レコ−ド−121を分離する。ギャップG3 107、114、120は、レコ−ドを分割するギャップであり、ギャップG2 105等は、レコ−ド内の各フィ−ルドを分割する。
各レコ−ドは、レコ−ドの状態、位置、および長さを示す制御フィ−ルド(CF)と、アクセス対象となるレコ−ドを検索するための情報を格納するキ−フィ−ルド(KF)、およびデ−タを格納するデ−タフィ−ルド(DF)から構成される。キ−フィ−ルド、およびデ−タフィ−ルドの長さは、制御フィ−ルド内に格納されている。
本発明において用いられるエミュレ−ションプログラムは、キャッシュメモリ上に上記CKDトラックを仮想CKDトラックとして展開し、図2においては、キャッシュ格納形式として図示されている。
【0013】
図2にキャッシュ格納形式として示された仮想CKDトラックは、固定長のブロックに分割されており、各ブロックの先頭に制御情報200を含んでいる。この制御情報はブロック内の最初のカウントフィールド(CF)のアドレスを格納している。CKDトラックに格納される各CKDレコ−ドは、その開始アドレスがCKDトラック上のバイト変位(INDEXからのバイト変位)と一致するようギャップが埋め込まれている(G1(101)→G(201)、G2’(103)→G(202))。また、仮想CKDトラックにはCKDトラック上に存在したギャップG2 105等が削除されているが、ギャップG3と削除したギャップG2のバイト数からなるギャップを直後のCKDレコ−ドの前に配置する({G2(105)+G3(107)}→G(203))。これにより、HAフィ−ルド、および各CKDレコ−ドの開始アドレスはCKDトラック上のバイト変位と一致する。
仮想CKDトラックを構成する各固定長ブロックが、FBAレコ−ドとしてFBAディスク3に記憶されている。FBAレコ−ド251は、仮想CKDトラックの第1のブロックを記憶するものとして示されており、当該レコ−ドを物理的に識別するためのFBID250が直前に配置されている。
【0014】
〈入出力要求処理〉
次に処理装置1から発行される入出力要求処理の流れについて説明する。
プログラム10は、外部記憶装置のデ−タをアクセスするために処理装置1内の主記憶装置上にチャネルプログラムを用意し、入出力起動命令を実行する。入出力起動命令を契機に処理装置1内のチャネルプロセッサは、主記憶装置上にチャネルプログラムを読出す。
そして、制御装置2に入出力動作の内容を示すコマンドとパラメタを転送する。処理装置1から転送されたコマンドとパラメタはチャネル制御部21を経由してチャネル制御プロセッサ25に送られ、各コマンドに対応する処理が実行される。
【0015】
〈外部記憶装置のデ−タの読出し〉
図3は、外部記憶装置のデ−タを読出すために用いるチャネルプログラムの流れ図である。
まず、処理301によりディスク装置のポジショナ(読み書きヘッドを動かす機構部)を指定されたシリンダに移動させ、読み書きヘッドを選択するための「シ−ク要求」を実行する。これによりシ−クコマンドと、シ−クアドレス(シリンダアドレス(CC)、トラックアドレス(HH))が制御装置2に転送される。
(シ−クコマンド処理)
シ−クコマンドを受け取った制御装置2は、チャネル制御プロセッサ25においてシ−クコマンド処理を実行する。図4にチャネル制御プロセッサ25が実行するシ−クコマンド処理の流れ図を示す。
シ−クコマンドを受け取ったチャネル制御プロセッサ25は、まず処理401を実行し、シ−クパラメタの妥当性のチェックを行なう。この結果、シ−クパラメタが不当であると判断された場合は、処理404に進み、処理装置1に対しコマンドの異常終了を報告し処理を終了する。
また処理401により、シ−クパラメタが妥当であると判断された場合は、処理402に進み、シ−クパラメタであるシリンダアドレス(CC)とトラックアドレス(HH)を制御メモリ27に記録する。
その後、処理403に進み、処理装置1に対し、コマンドの正常終了を報告し処理を終了する。
チャネルプロセッサは、制御装置2よりコマンドの異常終了を受け取ると、チャネルプログラムの実行を中断し、プログラム10に対しチャネルプログラムの異常終了を報告する。
また、制御装置2よりコマンドの正常終了を受け取ると、後続の処理を実行する。つまり、「シ−ク要求」処理の正常終了を制御装置2より受領すると、次に
処理302により、アクセス対象となるCKDレコ−ドが存在する近傍のセクタに読み書きヘッドを位置付ける「セットセクタ要求」302を実行し、制御装置2にセットセクタコマンドとセクタ番号(S)を転送する。
(セットセクタコマンド処理)
セットセクタコマンドを受領したチャネル制御プロセッサ25は、図5に示すセットセクタコマンド処理を実行する。
セットセクタコマンド処理は、シ−クコマンド処理と同様であり、パラメタの妥当性のチェックを行ない(501)、当該パラメタ、つまりセクタ番号(S)
を制御メモリ27に記憶する(502)。
【0016】
チャネルプロセッサは、「セットセクタ要求」に引き続き「レコ−ド探索要求」303を実行する。「レコ−ド探索要求」は、CKDレコ−ドの制御部に記録されている識別子(CCHHR)をパラメタとするサ−チコマンドを制御装置2に転送する。
【0017】
(サ−チコマンド処理)
サ−チコマンドを受領したチャネル制御プロセッサ25は、図6に示すサ−チコマンド処理を実行する。以下サ−チコマンド処理について説明する。
サ−チコマンドを受領すると、チャネル制御プロセッサ25は、サ−チパラメタの妥当性のチェックを処理601にて行なう。この判定においてサ−チパラメタが不当であると判断された場合は、処理610に進みコマンドの異常終了を処理装置1に報告し処理を終了する。
またサ−チパラメタが妥当であると判断された場合は、処理602に進みサ−チパラメタ(CCHHR)を、制御メモリ27に記憶する。その後、処理603において先のシ−クコマンドにおいて指定されたアクセス対象CKDトラックがキャッシュメモリ上に存在するかを判定する(後述のHit/Miss判定テーブルを用いて判定する)。この結果、アクセス対象CKDトラックがキャッシュメモリに存在しない、つまりMissであると判定された場合、処理604において当該CKDトラックをFBAディスク装置3からキャッシュメモリへ格納するロ−ド処理を行ない処理605へ進む。
本実施例では、不揮発キャッシュメモリ22と23の両方のキャッシュメモリにCKDトラックを格納するロ−ド方式であり、詳細については後に記述する。
処理603においてアクセス対象CKDトラックがキャッシュメモリに存在する、つまりHitと判断された場合には、キャッシュメモリへのCKDトラックのロ−ド処理は行なわず処理605へ進む。
処理605では、不揮発キャッシュメモリ22、23のいずれかを選択する処理を行なう。この選択基準は、それぞれのキャッシュメモリの負荷(利用要求数)を測定し、負荷の軽いキャッシュメモリを選択する。
その後、処理606において、処理605で選択したキャッシュメモリ上のデ−タを読出し、サ−チパラメタで指定されたアクセス対象CKDレコ−ドがキャッシュメモリ上に存在するかを判定する。
処理606によりアクセス対象CKDレコ−ドがキャッシュメモリ上に存在しないと判断された場合(CKDレコ−ドMissの場合)、CKDトラック上の全てのCKDレコ−ドを検索し、アクセス対象レコード無しかを判定する処理607を実行する。
この判定は、キャッシュメモリ上にCKDトラック内の全てのCKDレコ−ドを必ずしも格納していないためである。これはキャッシュメモリの有効利用と、ロ−ド処理オ−バヘッドの削減のため、1つのCKDトラック内のレコ−ドであっても、アクセス頻度が低いレコ−ドについては、キャッシュメモリに格納しないことによる。
これにより、当該CKDトラック上にアクセス対象レコ−ドが存在しないと判断された場合、処理610によりコマンドの異常終了を処理装置1に報告し、処理を終了する。
また、CKDトラック上に未検索のCKDレコ−ドが存在する場合は、処理608へ進み、キャッシュメモリ上の格納されていないCKDレコ−ドをFBAディスク装置3からキャッシュメモリ上へ格納し、処理606へ戻る。
処理606によりアクセス対象のCKDレコ−ドがキャッシュメモリ上に存在すると判定された場合は、処理609に進み、処理装置1にコマンドの正常終了を報告して、処理を終了する。
【0018】
(リードコマンド処理)
処理装置1のチャネルプロセッサは、CKDレコ−ドの検索処理の正常終了を制御装置2から受領すると、CKDレコ−ドを主記憶装置上に転送する「デ−タ読出し要求」を実行する。これによりリ−ドコマンドが制御装置2に転送される。
リ−ドコマンドを受領したチャネル制御プロセッサ25は、図7に示すリ−ドコマンド処理を実行する。
リ−ドコマンド処理では、まず処理701により不揮発キャッシュメモリ22、23のいずれかを選択する処理を行い、処理703により選択したキャッシュメモリに対しデ−タ転送をセットアップする。
このセットアップ処理とは、チャネル制御部21にデ−タ転送対象となるCKDレコ−ドの格納アドレスと、転送バイト数を設定することである。CKDレコ−ド格納アドレスは、サ−チコマンド処理において検索したCKDレコ−ド内のフィ−ルドのアドレスを設定する。
制御フィ−ルド、キ−フィ−ルド、またはデ−タフィ−ルドのいずれを選択するかは、リ−ドコマンドの種類による。例えば、デ−タ部の転送要求コマンドである「READ DATAコマンド」の場合は、デ−タフィ−ルドの先頭のアドレスと、制御フィ−ルド内に格納されているデ−タフィ−ルドの長さをチャネル制御部21に設定する。その後、処理703によりチャネル制御部21に対し、デ−タ転送の開始を指示する。
デ−タ転送開始指示を受けたチャネル制御部21は、処理702により設定されたCKDレコ−ド格納アドレスで示されるデ−タをキャッシュメモリから読出し処理装置1に転送する。チャネル制御プロセッサ25は、チャネル制御部21によるデ−タ転送処理の終了を処理704により監視する。
処理704によりデ−タ転送の終了を検知すると、処理705に進み、デ−タ転送が正常に終了したかを判定する。この判定によりデ−タ転送が正常に終了したと判断された場合は、処理706においてリ−ドコマンドの正常終了を処理装置1に報告する。また、デ−タ転送が異常終了したと判断された場合は、処理707において、リ−ドコマンドの異常終了を処理装置1に報告し処理を終了する。
リ−ドコマンドの終了を制御装置2から受領したチャネルプロセッサは、後続の処理が存在しないことからチャネルプログラムの終了と判断し、プログラム10に対し、入出力処理の終了を報告する。
【0019】
(キャッシュメモリへのFBAディスク装置からのロ−ド処理)
以上が、外部記憶装置のデ−タを読出すための処理装置1と制御装置2の動作概要であるが、サ−チコマンド処理の一部であるキャッシュメモリへのFBAディスク装置3からのロ−ド処理について詳細に説明する。
FBAディスク装置3から不揮発キャッシュメモリ22、23へのロ−ド処理は、チャネル制御プロセッサ25の指示によりドライブ制御プロセッサ26が実行する。チャネル制御プロセッサ25からドライブ制御プロセッサ26への処理要求は、制御メモリ27を介して行なわれる。
図8にチャネル制御プロセッサ25からドライブ制御プロセッサ26へ処理要求を行なうリクエストブロック(RB)80の構成を示す。
不揮発キャッシュメモリ22、23へのロ−ド処理要求の場合、チャネル制御プロセッサ25は、RB80内の要求コ−ドに「ロ−ド処理要求」を設定し、ロ−ド対象FBAブロックを規定する「デバイス番号802」、「シリンダ番号803」、「トラック番号804」、および「セクタ番号805」をパラメ−タとして設定する。なお、上記パラメ−タは、エミュレ−ト対象となるCKDディスク装置に関する情報である。
チャネル制御プロセッサ25は、上記RB80を制御メモリ27に設定すると共に、キャッシュメモリ上のデ−タを管理するスロットコントロ−ルブロック(SCB)にどのFBAブロックがロ−ドされた時点で処理を再開するかを示すPOST制御用ビットマップ(後述する)の所望ビット位置にビットを設定し、WAITする。
【0020】
以下にRB80を受け取ったドライブ制御プロセッサ26のロ−ド処理の流れを図9を用いて説明する。
ドライブ制御プロセッサ26は、RB80によりキャッシュメモリへのロ−ド処理要求を受け取ると、処理901によりRB80内の「シリンダ番号803」、「トラック番号804」により示されるCKDトラックがキャッシュメモリ上に存在するかを判定するHit/Miss判定処理901を実行する。
このHit/Miss判定処理は、チャネル制御プロセッサ25のサ−チコマンド処理の流れで説明した処理603と同様の処理を行なう。以下にその詳細を説明する。
図10は、Hit/Miss判定テ−ブルとSCBとの関係図であり、これらは、制御メモリ27上に存在する。不揮発キャッシュメモリ22、23は、2重化されたキャッシュメモリであり、その内容は同一である。
キャッシュメモリは、キャッシュスロットと呼ぶ単位に分割され、各キャッシュスロットは、図11に示すSCB110により管理されている。1キャッシュスロットは、1つ以上のキャッシュセグメントから構成されており、その最大長は、エミュレ−ト対象となるCKDディスク装置の1トラック分のデ−タを格納できる大きさである。
例えば、エミュレ−ト対象のCKDトラックのサイズが60KBで、キャッシュセグメントサイズが16KBの場合、1トラック全てのデ−タを格納するためには、4つのキャッシュセグメントが必要となる。
【0021】
Hit/Miss判定テ−ブルは、デバイス表100、シリンダ表101、およびトラック表102から構成されている。
デバイス表100のエントリは、エミュレ−ト対象となるCKDディスク装置対応に存在し、各エントリには、シリンダ表101のアドレスが設定されている。
シリンダ表101のエントリには、トラック表102のアドレスが格納されており、トラック表102のエントリにはSCB110のアドレスが格納されている。
各エントリにnullが設定されている場合は、以降の情報が存在しないことを意味する。例えば、シリンダ表101の2番目のエントリにnullが設定されている場合には、当該シリンダを構成する全てのトラックのデ−タはキャッシュメモリ上に存在しないことを意味する。図10ではnullの設定をアース記号で示してある。
【0022】
Hit/Miss判定処理は、このHit/Miss判定テ−ブルを検索することにより行なわれる。つまり、エミュレ−ト対象となるCKDディスク装置のデバイス番号、シリンダ番号、およびトラック番号からデバイス表100、シリンダ表101、およびトラック表102を検索することによりアクセス対象となるCKDトラックがキャッシュメモリ上に存在するかを判定できる。
トラック表102からポイントされるSCB110の内、更新デ−タを含まないキャッシュスロットを管理するSCB110は、MRU(Most Recentry Used)ポインタ103、LRU(Least RecentryUsed)ポインタ105、前方向ポインタ1102、および後方向ポインタ1103でチェインされている。このチェインを再利用可能SCBチェインと呼び、このチェインには、処理装置1がアクセスを終了した時点でMRU側に接続される。
前方向ポインタ1102と後方向ポインタ1103は、CKDトラックに割当てられたSCB110をMRU順にチェインするためのポインタである。
MRUポインタ103は、最も現在時刻に近い時刻に処理装置1からの入出力対象となったCKDトラックに対応するSCB110をさし、LRUポインタ105は、最も長い時間入出力対象となっていないCKDトラックに対応するSCB110をさす。
CKDトラックに割当てられていないキャッシュスロットを管理するSCB110は、空きSCBポインタ104、前方向ポインタ1102、および後方向ポインタ1103でチェインする。
空きSCBポインタ104は、CKDトラックに割当てられていないキャッシュスロットを管理するSCB110をチェインするための先頭ポインタでありこれらSCB110のうち、ひとつをポイントする。
残りのCKDトラックに割当てられていないキャッシュスロットを管理するSCB110は、前方向ポインタ1103、および後方向ポインタ1104でチェインする。CKDトラックに割当てられていないキャッシュスロットを管理するSCBが存在しない場合は、空きSCBポインタ104は、nullとなる。
【0023】
処理901におけるHit/Miss判定処理により、Missと判定された場合は、処理902によりCKDトラックにキャッシュスロットを割当てるスロットアロケ−ト処理902を実行する。
このスロットアロケ−ト処理は、空きSCB110が存在する場合は、空きSCBポインタ104からポイントされているSCB110を、空きSCB110が存在しない場合は、LRUポインタ105からポイントされるSCB110を、アクセス対象となったCKDトラックに割当てる。
【0024】
処理901によりCKDトラックがキャッシュメモリ上に存在する、すなわちHitと判定された場合、または処理902実行後、処理903を実行する。処理903では、RB80内の「シリンダ番号803」、「トラック番号804」、および「セクタ番号805」からFBAディスク装置3上の読出し開始FBAブロック番号を以下の式により計算する。
上記計算式において、・・・は、切捨てを意味する。
処理903に続く処理904では、FBAデイスク装置3に対し処理903で求めたFBAブロック番号からのデ−タ読出し要求を発行する。その後、処理905にて不揮発キャッシュメモリ22、23に対しデ−タ転送をセットアップする。このセットアップ処理は、ドライブ制御部24にFBAブロックの格納を開始する不揮発キャッシュメモリ22、23のアドレスと、転送バイト数を設定することである。
FBAブロックの格納開始アドレスは、ロ−ド処理を行なう最初のFBAブロックが対応するCKDトラック上アドレスである。また、転送バイト数は、当該CKDトラックの最終までのバイト数か、あるいは、既に後方のFBAブロックのロ−ド処理が行なわれている場合には、該ロ−ド処理の行なわれている後方のFBAブロックの直前までのバイト数である。
続く処理906によりデ−タ転送を開始すると、ドライブ制御部24は、設定された不揮発キャッシュメモリ22、23上のアドレスにFBAディスク装置3から読出したFBAブロックを格納する。ドライブ制御部24のデ−タ転送は、処理907により監視される。
【0025】
処理907の詳細な流れ図を図12に示す。
ドライブ制御部24は、1つのFBAブロックをキャッシュメモリに転送すると、そのデ−タ転送結果をドライブ制御プロセッサ26へ報告する。
ドライブ制御プロセッサ26は、処理1201によりこのFBAブロックのデ−タ転送終了を監視する。これにより1つのFBAブロックのデ−タ転送終了を検出すると、処理1202により、正常にデ−タ転送が終了したかを判定する。
この結果、デ−タ転送が正常に終了したと判断された場合、処理1203を実行する。処理1203では、SCB110内のロ−ド済みビットマップ1108にデ−タ転送を終了したFBAブロックを登録する。
処理1202によりFBAブロックのデ−タ転送が異常終了したと判断された場合、処理1204により、SCB110内の障害FBAブロックビットマップ1111にデ−タ転送が異常終了したFBAブロックを登録する。
SCB110上のロ−ド済みFBAブロックビットマップ1108、更新FBAブロックビットマップ1109、POST制御用ビットマップ1110、および障害FBAブロックビットマップ1111は、夫々複数ビットからなり、各ビットが1つのFBAブロックに対応している。これを図解したものが図13にSCB110のロード済みFBAブロックビットマップ1108として示されている。
処理1203、または処理1204によりデ−タ転送が終了したFBAブロックに対応するビットマップをSCB110上に登録すると、処理1205によりチャネル制御プロセッサ25に対しPOST処理が必要であるかを(SCB110のPOST制御用ビットマップ1110にビットが設定されているかを)判定する。
この判定は、SCB110内にチャネル制御プロセッサ25がロ−ド要求の際設定したPOST制御用ビットマップ1110と、ロ−ド済みFBAブロックビットマップ1108、または障害FBAブロックビットマップ1111の論理積を行なう。
この結果がゼロでない場合、チャネル制御プロセッサ25に対するPOST処理が必要と判断され、処理1206を実行し、結果がゼロの場合、処理1206をスキップする。
処理1206では、チャネル制御プロセッサ25をPOSTする処理を実行し
、POST制御用ビットマップ1110をクリアする。
その後、処理1207によりチャネル制御プロセッサ25より要求された全てのFBAブロックのロ−ド処理が終了したかを判定する。この判定の結果、ロ−ド処理が必要なFBAブロックが存在する場合は、処理1201に戻る。また、全てのFBAブロックのロ−ド処理が終了した場合は、処理を終了する。
【0026】
以上示した処理装置1からのデ−タ読出し処理をまとめて、図1の制御装置2を図解すると、図13のようになる。
チャネル制御プロセッサ25からのロ−ド要求は、制御メモリ27に設定されたRB80によりドライブ制御プロセッサ26に伝達され、ドライブ制御プロセッサ26は、ドライブ制御部24を制御し、FBAディスク装置3からデ−タを読出し、不揮発キャッシュメモリ22と23に格納する。
ドライブ制御プロセッサ26は、ドライブ制御部24のデ−タ転送の進行状況を監視し、ロ−ド済みFBAブロックビットマップあるいは障害FBAブロックビットマップにビットを立て、SCB110にその結果を反映する。チャネル制御プロセッサ25は、SCB110を参照することにより処理装置1からアクセス対象となったCKDレコ−ドがキャッシュメモリ上にロ−ドされたかを監視する。
この監視によりアクセス対象となったCKDレコ−ドがキャッシュメモリ上にロ−ドされると、いずれか一方の負荷の軽いキャッシュメモリ上のCKDレコ−ドを処理装置1へ転送する。
この結果、FBAディスク装置3からキャッシュメモリへのロ−ド処理と並行して、キャッシュメモリ上のデ−タを処理装置1へ転送できる。
【0027】
(外部記憶装置のデータ更新処理)
次に処理装置1から外部記憶装置上のデ−タを更新する処理について説明する。
図14は、プログラム10が外部記憶装置上のデ−タを更新するために用いるチャネルプログラムの流れ図である。処理301から処理303により外部記憶装置上のアクセス対象CKDレコ−ドに位置付ける処理を行なう。これら処理(301〜303)は、図3の外部記憶装置上のデ−タを読出すためのチャネルプログラムの処理と同様であり、説明を省略する。
チャネルプロセッサは、処理301から303の処理を正常に終了すると、処理1401により主記憶装置上デ−タによりCKDレコ−ドを更新する「デ−タ書き込み要求」を実行する。これによりライトコマンドが制御装置2に転送される。
【0028】
ライトコマンドを受領したチャネル制御プロセッサ25は、図15に示すライトコマンド処理を実行する。
ライトコマンド処理では、まず処理1501により不揮発キャッシュメモリ22、23に対しデ−タ転送をセットアップする。このセットアップ処理とは、チャネル制御部21にデ−タ転送対象となるCKDレコ−ドの格納アドレスと、転送バイト数を設定することである。
CKDレコ−ドの格納アドレスは、サ−チコマンド処理において検索したCKDレコ−ド内のフィ−ルドのアドレスを設定する。制御フィ−ルド、キ−フィ−ルド、またはデ−タフィ−ルドのいずれかを選択するかは、ライトコマンドの種類による。例えば、デ−タ部のデ−タ更新要求コマンドである「WRITE DATAコマンド」の場合、デ−タフィ−ルドの先頭アドレスと、制御フィ−ルド内に格納されているデ−タフィ−ルドの長さをチャネル制御部21に設定する。ただし、CKDトラックの初期設定を行なう形式書き込みコマンド(「WRITE COUNT,KEY,AND DATAコマンド」等)の場合は、当該CKDトラックの指定されたCKDレコ−ド以降のデ−タを削除するための設定を行なう。
その後、処理1502によりチャネル制御部21に対し、デ−タ転送の開始を指示する。デ−タ転送開始指示を受けたチャネル制御部21は、処理1501により設定されたCKDレコ−ド格納アドレスで示されるキャッシュメモリ上の領域に処理装置1から転送されたデ−タを格納する。
チャネル制御プロセッサ25は、チャネル制御部21によるデ−タ転送処理の終了を処理1503により監視する。
【0029】
処理1503のデ−タ転送終了判定処理の詳細を図16に示す。
デ−タ転送終了判定処理では、まず処理1601によりデ−タ転送対象となったFBAブロックに対応するSCB110内の更新FBAブロックビットマップ1109上にデータ転送の開始時に当該FBAブロックが更新されたことを記録する。
その後、処理1602によりチャネルデ−タ転送が終了したかを判定する。この結果、チャネルデ−タ転送が終了していないと判断された場合は、処理1603にてデ−タ転送がFBAブロックの境界に達したかを判定する。この判定の結果、FBAブロック境界に達したと判断された場合、処理1601に戻り、次のデータ転送の開始時に更新FBAブロックビットマップ1109を更新する。また、処理処理1603によりFBAブロックの境界に達していないと判断された場合は、処理1602に戻り、チャネルデ−タ転送の終了を判定する。
処理1602によりチャネルデ−タ転送の終了を検知すると、処理1604により処理装置1からのデ−タ更新要求が形式書き込み系のコマンドであるかを判定する。
処理装置1からのデ−タ更新要求が形式書き込み系コマンドである場合、処理1605によりデ−タ転送を終了したFBAブロックの次のFBAブロックからアクセス対象となったCKDトラックの最後のFBAブロックに対応する更新FBAブロックビットマップ1109を設定する。これは、形式書き込み系のコマンドの場合、アクセス対象となったCKDレコ−ド以降のCKDレコ−ド消去する必要があり、消去対象となるCKDレコ−ドが格納されているFBAブロックを更新する必要があるためである。なお、このCKDレコ−ドの消去処理は、チャネル制御部21により自動的に実行される。
【0030】
以上がライトコマンド処理におけるデ−タ転送監視処理1503の詳細であるが、処理1503によりデ−タ転送の終了を検知すると処理1504によりデ−タ転送が正常に終了したかを判定する。
この結果、デ−タ転送が異常終了したと判断された場合、処理1506によりライトコマンドの異常終了を処理装置1に報告する。また、処理1504によりデ−タ転送が正常終了したと判断された場合は、処理1505によりライトコマンドの正常終了を処理装置1に報告する。
その後、処理1507により処理装置1から要求された入出力要求処理が、形式書き込み系コマンドあるかを判定する。処理1507により、処理装置1から要求された入出力要求が形式書き込みであると判断された場合は、処理1508によりチャネル制御部21の形式書き込み処理の終了を待って処理を終了する。また、形式書き込み以外のデ−タ更新要求の場合は、そのまま処理を終了する。
【0031】
以上示したデ−タ更新処理をまとめて、図1の制御装置2を図解すると、図17のようになる。
処理装置1からの入出力処理対象となったCKDレコ−ドがキャッシュメモリ上に存在しない場合は、デ−タ読出し処理と同様にチャネル制御プロセッサ25からロ−ド要求をRB80によりドライブ制御プロセッサ26に伝達する。
ドライブ制御プロセッサ26は、ドライブ制御部24を制御し、FBAディスク装置3からアクセス対象となったCKDレコ−ドを含むFBAブロックを読出し、不揮発キャッシュメモリ22と23に格納する。
ドライブ制御プロセッサ26は、ドライブ制御部24のデ−タ転送の進行状況を監視し、SCB110内のロ−ド済FBAブロックビットマップ1108にその結果を反映する。チャネル制御プロセッサ25は、SCB110を参照することによりキャッシュメモリへのロ−ド処理の実行状態を監視する。
この監視により、アクセス対象となったCKDレコ−ドがキャッシュメモリ上にロ−ドされると、チャネル制御プロセッサ25は、チャネル制御部21を制御し、処理装置1から転送されたデ−タを不揮発キャッシュメモリ22と23に格納する。
この際、デ−タ更新対象となったFBAブロックをSCB110内の更新FBAブロックビットマップ1109に反映する。この結果、FBAディスク装置3からのロ−ド処理と並行して、処理装置1からの更新デ−タをキャッシュメモリ上に格納できる。
【0032】
(更新デ−タのFBAディスク装置への格納処理)
次に、処理装置1から更新されたデ−タをFBAディスク装置3へ格納する処理について説明する。
本発明では、先のデ−タ更新処理の説明のように、処理装置1からデ−タ更新要求が発行された時点では、FBAディスク装置3にデ−タを書き込まない。これは、ライト系コマンドの応答時間を短縮することを目的としており、制御装置2内の2つのキャッシュメモリと制御メモリ27の不揮発化は、処理装置1にコマンドの終了を報告したライトデ−タをFBAディスク装置3に格納する間の電源障害によりデ−タを消失することを防ぐためである。
【0033】
図18は、FBAデイスク装置3への未反映更新デ−タを含むキャッシュスロットを管理するSCB110(以降、このようなSCBをライトペンディングSCBと呼ぶ)の関係図である。
ライトペンディングSCB110は、ライトペンディングSCBMRUポインタ180、ライトペンディングSCBLRUポインタ181、前方向ポインタ1102、および後方向ポインタ1103でチェインされている。このライトペンディングSCBチェインは、FBAディスク装置毎に存在する。
このチェインへのSCB110の登録処理は、チャネル制御プロセッサ25においてデ−タ更新処理を行なった際に行なわれ、チェインのMRU側に登録される。
ドライブ制御プロセッサ26は、一定時間間隔でライトペンディングSCBチェインを参照し、ライトペンディングSCBが存在する場合、当該SCBが管理するキャッシュスロット上の更新デ−タをFBAデイスク装置3へ格納するデステ−ジ処理を起動する。
複数のライトペンディングSCBがチェイン上に存在する場合は、LRU側のライトペンディングSCBよりデステ−ジ処理を実行する。
【0034】
(デステ−ジ処理)
以下、図19を参照してデステ−ジ処理を説明する。
デステ−ジ処理においては、まず処理1901により不揮発キャッシュメモリ22、23のいずれかを選択し、処理1902により選択したキャッシュメモリに対しデ−タ転送をセットアップする。このセットアップ処理とは、ドライブ制御部24にデ−タ転送対象となるFBAブロックの格納アドレスと転送バイト数を設定することである。
FBAブロックの格納アドレスは、SCB110内の更新FBAブロックビットマップを参照することにより求めることができる。また、転送バイト数は、デステ−ジ対象となるCKDトラック内の最初の更新デ−タを含むFBAブロックから最後の更新デ−タを含むFBAブロック数分だけ設定する。この処理の概要を図20を参照して説明する。
【0035】
CKDトラック内に6つのCKDレコ−ド(121から125)が存在し、CKDレコ−ド122と125が処理装置1から更新されていると、更新FBAブロックビットマップ1109にFBAブロック251、252、および254に更新デ−タが含まれることが表示される。
この更新FBAブロックビットマップを参照し、デステ−ジ範囲をFBAブロック251からFBAブロック254の連続した4つのFBAブロックをデステ−ジ範囲とする。
このように更新デ−タを含まないFBAブロック(253)もデステ−ジ対象とする理由は、FBAディスク装置3のインタフェ−スがSCSIの場合、1回のライトコマンドでは連続した領域のデ−タ格納処理のみである。したがって、上記例において更新デ−タを含むFBAブロックのみをFBAデイスク装置に書き込むためには、2回のライトコマンドを発行しなければならないためである。
【0036】
処理1902によりドライブ制御部24に対しデ−タ転送をセットアップした後、処理1903によりデステ−ジを開始するFBAブロック番号を、SCB110内のシリンダ番号1105、トラック番号1106、および更新FBAブロックビットマップ1109から計算する。
続く処理1904によりFBAディスク装置3に対し、処理1903で求めたFBAブロックのライト要求を発行する。その後、処理1905によりデ−タ転送の開始を指示し、処理1906によりデ−タ転送の終了を監視する。
処理1906によりデ−タ転送の終了を検出すると、処理1907において、FBAデイスク装置3のデ−タ格納処理の終了を監視する。処理1907によりFBAディスク装置3のデ−タ格納処理の終了を検知すると、処理1908によりFBAディスク装置3へのデ−タ格納処理を終了したFBAブロックに対応する更新FBAブロックビットマップ1109をクリアする。
【0037】
以上示したデステ−ジ処理をまとめて、図1の制御装置2を図解すると、図21のようになる。ドライブ制御プロセッサ26は、制御メモリ27上のライトペンディングSCB110を検索し、更新FBAブロックビットマップ1109を参照してデステ−ジ範囲を決定する。その後、いずれかのキャッシュメモリからデステ−ジ範囲のFBAブロックをFBAデイスク装置3に格納する。
【0038】
本発明によれば、処理装置1からアクセス要求のあったCKDレコ−ドを含むFBAブロックの全てが2つの不揮発キャッシュメモリ22、23に格納される。
デステ−ジ処理中に一方の不揮発キャッシュメモリに障害が発生しても、他の不揮発キャッシュメモリからデステ−ジ処理が再開できる。このため、FBAディスク装置において、CKDディスク装置をエミュレ−トしても、処理装置1からのアクセス対象以外のレコ−ドを破壊するという問題が解決できる。
これにより、FBAディスク装置においてCKDディスク装置をエミュレ−トする場合にも、処理装置1からのデ−タ更新要求とは非同期にFBAディスク装置へのデ−タ格納処理を実行するライトアフタキャッシュ方式が適応できる。
また、FBAデイスク装置3とキャッシュメモリ間のデ−タ転送と、キャッシュメモリと処理装置1とのデ−タ転送を並行して実行でき、かつその排他単位がFBAブロックであるため、処理装置1から入出力要求を受け取ってから、実際にデ−タ転送を開始するまでの時間を短縮できる。
【0039】
〈第2実施例〉
次に、第2の実施例について説明する。
本実施例の構成図は、第1の実施例と同一であり説明を省略する。第1の実施例は、処理装置1からアクセス対象となったCKDレコ−ドを2つの不揮発キャッシュメモリ22、23に常に格納する方式であった。
この方式では、更新デ−タを含まないキャッシュスロットであっても、2つの不揮発キャッシュメモリ22、23に格納されている。本来、更新デ−タを含まないキャッシュスロットは、どちらか一方のキャッシュメモリに存在すれば良い。
このように、第1の実施例では、キャッシュメモリの有効利用という観点からは問題があり、本実施例では、この問題を解決する。
【0040】
本実施例では、キャッシュメモリ上のキャッシュスロットを管理するSCBを各々のキャッシュメモリ毎に設ける。これにより、SCBは、図22に示すような構成となる。
第1の実施例との違いは、当該SCBが管理するキャッシュスロットが属するキャッシュメモリ番号を示すエントリ1112が追加されている。このキャッシュメモリ番号は、制御装置2内を構成している複数の不揮発キャッシュメモリに対して割当てた一連の番号であり、不揮発キャッシュメモリ22をキャッシュメモリ0、不揮発キャッシュメモリ23をキャッシュメモリ1とする。
ただし、これによりキャッシュメモリ上のデ−タ格納形式が変更されることはなく、第1の実施例の図2で示したデ−タ格納形式と同様である。
【0041】
処理装置1からアクセスされたCKDトラックがキャッシュメモリ上に存在するかを判定するHIT/MISS判定テ−ブルとSCB110の関係図を図23に示す。
この図より分かるように、各キャッシュメモリ毎にHit/Miss判定テ−ブルを設ける。
つまり、キャッシュメモリ0上のキャッシュスロットを管理するSCB110は、デバイス表100−0、シリンダ表101−0、およびトラック表102−0からなるHit/Miss判定テ−ブルにより管理され、キャッシュメモリ1上のキャッシュスロットを管理するSCB110は、デバイス表100−1、シリンダ表101−1、およびトラック表102−1からなるHit/Miss判定テ−ブルにより管理されている。
トラック表102−0、および102−1からポイントされる更新デ−タを含まないキャッシュスロットを管理するSCB110は、再利用可能SCBチェインに接続されている。
この再利用可能SCBチェインは、MRUポインタ103、LRUポインタ105、前方向ポインタ1102、および後方向ポインタ1103で管理されている。このチェインは、キャッシュメモリ0、1に関係なく一本のチェインである。また、このSCB110のチェインの中心のSCB110を中央ポインタ106によりポイントしている。
処理装置1からのアクセスが終了した時点で、アクセス対象となったキャッシュスロットが、キャッシュメモリ0と、キャッシュメモリ1の両方に存在する場合は、どちらか一方のキャッシュスロットを管理するSCB110を再利用可能SCBチェインのMRU側に接続し、他のキャッシュスロットを管理するSCB110を中央ポインタ106が示すチェインの位置に接続する。
【0042】
CKDトラックに割当てられていないキャッシュスロットを管理するSCB110は、図24のように各キャッシュメモリ毎にチェインされている。
キャッシュメモリ0上の空きキャッシュスロットを管理するSCB110は、空きSCBポインタ104−0、前方向ポインタ1102、および後方向ポインタ1103でチェインする。
また、キャッシュメモリ1上の空きキャッシュスロットを管理するSCB110は、空きSCBポインタ104−1、前方向ポインタ1102、および後方向ポインタ1103でチェインする。
空きSCBポインタ104−0と104−1は、CKDトラックに割当てられていないキャッシュスロットを管理するSCB110をチェインするための先頭ポインタであり、これらSCB110のうち、ひとつをポイントする。残りのCKDトラックに割当てられていないキャッシュスロットを管理するSCB110は、前方向ポインタ1102、および後方向ポインタ1103でチェインする。
CKDトラックに割当てられていないキャッシュスロットが存在しない場合は、空きSCBポインタ104−0、104−1は、nullとなる。
処理装置1からの入出力要求により新たなキャッシュスロットが必要となった場合、空きSCBが存在する場合は、そのSCBを利用するが、存在しない場合は、再利用可能SCBチェインに登録されている、LRU側のSCB110を利用する。
【0043】
(第1実施例と異なる処理)
以下に第1の実施例と異なる処理を説明する。
本実施例では、2つの不揮発キャッシュメモリ22,23上のキャッシュスロットをそれぞれ独立のSCB110により管理する。したがって、図25に示すように、図3に示すサ−チコマンド処理におけるCKDトラックのHit/Miss判定処理603は、CKDトラックがいずれかのキャッシュメモリに存在する場合、Hit状態とするよう制御する。
つまり、処理2501によりキャッシュメモリ0上に、処理装置1からアクセス対象となったCKDトラックが存在するかを判定する。この結果、当該CKDトラックがキャッシュメモリ0上に存在しないと判断された場合、処理2502によりキャッシュメモリ1上に当該CKDトラックが存在するかを判定する。
この判定の結果、いずれのキャッシュメモリにも当CKDトラックが存在しないと判断された場合、処理2503によりHit/Miss判定結果をMissとする。
また、処理2501、または処理2502によりキャッシュメモリ0、またはキャッシュメモリ1のいずれかに当該CKDトラックが存在すると判断された場合、処理2504によりHit/Miss判定結果をHitとする。
また、処理605におけるキャッシュメモリの選択処理は、アクセス対象となったCKDトラックが存在するキャッシュメモリを選択する。
【0044】
なお、図25に示したHit/Miss判定処理では、キャッシュメモリ0とキャッシュメモリ1の両方のキャッシュメモリにアクセス対象となったCKDトラックが存在すると、必ずキャッシュメモリ0、すなわち不揮発キャッシュメモリ22を選択してしまう。これにより、2つのキャッシュメモリ間で負荷の不均衡が発生してしまう。
これの対策として、シリンダ番号の偶数、奇数によりキャッシュメモリ0とキャッシュメモリ1のHit/Miss判定順序を入れ替える方法等がある。
また、図7に示すリ−ドコマンド処理においては、処理701のキャッシュメモリの選択処理が、先に説明したサ−チコマンド処理におけるキャッシュメモリ選択処理同様、アクセス対象となったCKDレコ−ドが存在するキャッシュメモリを選択する。
【0045】
(ライトコマンド処理)
次にライトコマンド処理について説明する。
第1の実施例の場合、更新対象となるCKDレコ−ドを含むキャッシュスロットは、必ず2つの不揮発キャッシュメモリに存在した。
しかし、本実施例では、上記に示したようなキャッシュ管理方式を採用しているため更新対象となったキャッシュスロットが一つのキャッシュメモリにのみに存在する場合がある。この場合、新たに他方のキャッシュメモリ上にキャッシュスロットを割当て、更新対象となったCKDレコ−ドが格納されているFBAブロックが2つのキャッシュメモリに存在するよう制御する。
【0046】
図26にライトコマンド処理の流れ図を、図27にライトコマンド処理におけるデ−タの流れを示す。
チャネル制御プロセッサ25は、処理装置1よりライトコマンドを受領すると、処理2601により更新対象となるCKDレコ−ドが格納されている最初のFBAブロックがキャッシュメモリ0と、キャッシュメモリ1の両方に格納されているかを確認する。
図27の例では、処理装置からの更新対象は、CKDレコ−ド125(R5)のデ−タフィ−ルドであり、R5 125は、FBAブロック254とFBAブロック255にまたがって格納されている。
処理2601の判定では、FBAブロック254がキャッシュメモリ1とキャッシュメモリ2の両方に存在するかを判定する。
この判定により、FBAブロック254が一方のキャッシュメモリにのみ存在すると判断された場合、処理2602により不揮発キャッシュメモリ22、23に対し、コピ−転送をセットアップする。このセットアップ処理は、以下の2つの処理からなる。
第1の処理は、転送先のキャッシュメモリ上にアクセス対象となったCKDトラックに対応するキャッシュスロットが確保されていない場合、転送元のキャッシュスロットと同じ容量のキャッシュスロットを確保する処理である。
第2の処理は、転送元のキャッシュメモリとそのアドレス、転送先のキャッシュメモリとそのアドレス、およびコピ−転送バイト数をチャネル制御部21に設定する処理である。
図27の例では、不揮発キャッシュメモリ23上に不揮発キャッシュメモリ22上のキャッシュスロット275と同じ容量を持つキャッシュスロット276を割当てる。その後、キャッシュスロット275内のFBAブロック254−0の先頭アドレスをコピ−元アドレスとして設定する。
またコピ−先アドレスとしてキャッシュスロット276内のFBAブロック254−1の先頭アドレスを設定し、転送バイト数としてFBAブロック254−0の先頭からR5 125のデ−タフィ−ルドまでのバイト数を設定する。
以上によりコピ−転送のセットアップ処理が終了し、続く処理2603によりコピ−転送の開始をチャネル制御部21に指示する。これによりコピ−転送271(図27)が開始される。なお、上記の転送バイト数としては、FBAブロック254−0の先頭からR5 125のカウントフィ−ルド(C)までのバイト数を設定するようにしてもよいし、FBAブロック255−0の最終アドレスまでのバイト数を設定するようにしてもよい。
キャッシュメモリ間のコピ−転送処理は、チャネル制御部21に実行され、チャネル制御プロセッサは、処理2604によりコピ−処理の実行状態を監視する
。
処理2604によりコピ−転送処理の終了を検知すると処理2605によりコピ−転送が正常に終了したかを判定する。この判定によりコピ−処理が異常終了したと判断された場合、処理1506によりライトコマンドの異常終了を処理装置1に報告し処理を終了する。
処理2605によりコピ−処理が正常終了したと判断された場合、もしくは処理2601により処理装置1から更新デ−タを受領する前のコピ−処理が不要であると判断された場合は、処理1501を実行する。処理1501から処理1508までの処理は、第1の実施例の図15と同じであるため説明を省略する。
【0047】
処理1507により処理装置1からのライトコマンドが形式書き込み系のコマンドでないと判断された場合、処理2606により転送を終了したFBAブロックの残りのデ−タをキャッシュメモリ間でコピ−が必要であるかを判定する。
図27の例では、処理装置1からのデ−タ転送は、FBAブロック255の途中で終わっている。この状態では、FBAブロックとして完全に2つのキャッシュメモリ上に存在することにならない。したがって、FBAブロック255−0のR5以降のデ−タをFBAブロック255−1にコピ−する必要がある。処理2606から処理2609においてこのコピ−処理273(図27)を実行する。コピ−手順については先に説明したFBAブロック254−0のコピ−手順と同様であるため説明を省略する。
以上のライトコマンド処理により処理装置1より更新対象となったCKDレコ−ドを格納するFBAブロックは、必ず2つの不揮発キャッシュメモリ上に存在することになる。
【0048】
(デステ−ジ処理)
次に、処理装置1から更新されたデ−タをFBAディスク装置3へ格納するデステ−ジ処理について説明する。
本実施例においても第1の実施例同様、FBAディスク装置3へのデ−タ格納処理は、処理装置1からのデ−タ更新要求とは非同期に実行する。
ライトペンディングSCB110の管理方式は、第1の実施例と同様の管理であるが、本実施例では、2重化されたキャッシュスロットを、それぞれ独立したライトペンディングSCB110により管理するが、図18に示すライトペンディングSCBチェインには、いずれか一方のライトペンディングSCB110を登録する。
ライトペンディングSCB110が存在する場合、ドライブ制御プロセッサ26は、ライトペンディングSCBLRUポインタによりポイントされるSCBを確保して図28に示すデステ−ジ処理を実行する。
【0049】
デステ−ジ処理では、まず処理2801によりキャッシュスロット内のFBAブロックのキャッシュメモリ間コピ−処理が必要であるかを判定する。
この判定は、1回のFBAディスク装置へのライト要求により一つのCKDトラック内の更新デ−タを一括して書き込みを行なっても、障害によりデ−タを消失させないようにするためである。具体的な例を、図29を参照して説明する。
あるCKDトラックに対応するキャッシュスロットが4つのFBAブロックから構成されていて、第3のFBAブロック253を除く3つのFBAブロックに更新デ−タが含まれると仮定する。この場合、キャッシュスロット内の更新デ−タを含むFBAブロックを1回のFBAディスク装置へのライト要求により書き込みを行なうためには、上記4つのFBAブロックを一括して書き込む必要がある。
FBAブロック253は、更新デ−タを含んでいないため、一つのキャッシュメモリにしか存在しない場合がある。このような状態において、FBAブロック253をFBAディスク装置3へ書き込み中にキャッシュメモリに障害が発生すると、FBAブロック253を消失してしまう。
したがって、FBAブロック253を含めてFBAディスク装置3への書き込み要求範囲のFBAブロックの全てを2つのキャッシュメモリに2重化することにより上記問題を解決する。
【0050】
処理2801により、キャッシュメモリ間コピ−が必要であると判断された場合、処理2802により不揮発キャッシュメモリ22、23に対し、コピ−転送をセットアップする。このセットアップ処理は、転送元のキャッシュメモリとそのアドレス、転送先のキャッシュメモリとそのアドレス、およびコピ−転送バイト数をチャネル制御部21に設定する処理である。
図29の例では、FBAブロック253−0の先頭アドレスをコピ−元アドレスとして設定する。またコピ−先アドレスとしてFBAブロック253−1の先頭アドレスを設定し、転送バイト数として一FBAブロック分のバイト数を設定する。以上によりコピ−転送のセットアップ処理が終了し、続く処理2803によりコピ−転送を開始をドライブ制御部24に指示する。これによりコピ−転送291(図29)が開始される。
【0051】
キャッシュメモリ間のコピ−転送処理は、ドライブ制御部24に実行され、ドライブ制御プロセッサ26は、処理2804によりコピ−処理の実行状態を監視する。処理2804によりコピ−転送処理の終了を検知すると、処理1901により不揮発キャッシュメモリ22、23のいずれかを選択し、処理2805を実行する。
処理2805では、処理1901で選択したキャッシュメモリ以外のキャッシュメモリ上のデステ−ジ対象となったCKDトラックに対応するキャッシュスロットを管理するSCB110−1内のSCB状態フラグ1101にリ−ド属性フラグを設定する。
これは、FBAディスク装置3へのデステ−ジ処理中にデステ−ジ対象となったCKDトラックに対し、処理装置1からアクセス要求があった場合、処理装置1からのアクセス要求がデ−タ読出し要求ならば、デステ−ジ処理に利用していないキャッシュスロットにより当該アクセス要求を実行させるためである。
なお、処理装置1からのアクセス要求がデ−タ更新要求の場合、またはアクセス対象CKDレコ−ドがデステ−ジ処理に利用していないキャッシュスロットに存在しない場合は、デステ−ジ処理が終了するまで処理装置からのアクセス要求は待ち状態となる。
処理2805に続く処理1902から、処理1907までの処理は、キャッシュスロット上の更新デ−タを含むFBAブロックのFBAディスク装置3への書き込み処理であり、第1の実施例の図19と同じため説明を省略する。
FBAディスク装置3への書き込み処理が終了すると、処理2806により書き込みを終了したキャッシュスロットを管理するSCB110内の更新FBAブロックビットマップ1109を消去する。
この消去処理は、2重化されたキャッシュスロットを管理する2つのSCB110に対し実行され、続く処理2807により処理2805により設定したSCBのリ−ド属性を解除し、処理を終了する。
【0052】
なお、デステ−ジ処理が終了したキャッシュスロットを管理するSCB110は、再利用可能SCBチェインに登録される。この登録処理は、2重化された一方のキャッシュスロットを管理するSCB110を再利用可能SCBチェインのMRU側に登録し、他のキャッシュスロットを管理するSCB110を再利用可能SCBチェインの中央に登録する。
【0053】
本発明によれば、FBAディスク装置から読出された直後のキャッシュスロットは、2つの不揮発キャッシュメモリ22、23上に2重化されて格納される。
当該キャッシュスロットに更新デ−タが存在せず、処理装置1からのアクセス頻度が低い場合、一方のキャッシュメモリ上のキャッシュスロットが削除され1重化され、さらにアクセス頻度が低いキャッシュスロットは、いずれのキャッシュメモリにも存在しなくなる。
これにより、キャッシュメモリの有効利用が図れ、処理装置1からアクセス対象となるデ−タがキャッシュメモリ上に存在する確率が高くなり、高性能なディスクキャッシュ装置が提供できる。
【0054】
また、1重化状態となったキャッシュスロットに対して処理装置1からデ−タ更新要求が発行された場合、更新デ−タを含むFBAブロックは2つの不揮発キャッシュメモリ22、23に2重化される。
これにより、FBAデイスク装置においてCKDディスク装置をエミュレ−トする際にも、ライトアフタキャッシュ制御が適応できる。
さらに、FBAディスク装置3へのライトコマンド発行回数を削減するため、一つのキャッシュスロット上の更新デ−タを含むFBAブロックは一括書き込みを行なう。この際、更新デ−タを含まないFBAブロックもFBAデイスク装置に書き込むことがあるが、このようなFBAブロックも2つの不揮発キャッシュメモリに2重化されて格納されているため、FBAディスク装置3への書き込み中に障害が発生してもデ−タを消失することはない。
【0055】
【発明の効果】
本発明は、以上説明したように構成されているので以下に記載されるような効果を奏する。
(1)処理装置からアクセス要求のあったCKDレコ−ドを含むFBAブロックの全てが複数のキャッシュメモリにFBAディスク装置から読出され格納される。キャッシュメモリ上の更新デ−タを含むFBAブロックのFBAデイスク装置への書き込み処理、すなわちデステ−ジ処理中に一方のキャッシュメモリに障害が発生しても、他のキャッシュメモリからデステ−ジ処理が再開できる。
このため、FBAディスク装置において、CKDディスク装置をエミュレ−トしても、処理装置からのアクセス対象以外のレコ−ドを破壊することがないという効果が得られる。
また、FBAディスク装置においてCKDディスク装置をエミュレ−トする場合にも、処理装置1からのデ−タ更新要求とは非同期にFBAディスク装置へのデ−タ格納処理を実行するライトアフタキャッシュ方式が適応できるという効果、また、処理装置からのデ−タ更新処理の際、ディスク装置の機械的動作時間を削減できるという効果が得られる。
また、FBAデイスク装置3とキャッシュメモリ間のデ−タ転送と、キャッシュメモリと処理装置1とのデ−タ転送を並行して実行でき、かつその排他単位がFBAブロックであるため、処理装置から入出力要求を受け取ってから、実際にデ−タ転送を開始するまでの時間を短縮できるという効果が得られる。
(2)FBAディスク装置から読出された直後のキャッシュスロットは、2つのキャッシュメモリ22、23上に2重化されて格納される。当該キャッシュスロットに更新デ−タが存在せず、処理装置1からのアクセス頻度が低い場合、一方のキャッシュメモリ上のキャッシュスロットが削除され1重化され、さらにアクセス頻度が低いキャッシュスロットは、いずれのキャッシュメモリにも存在しなくなる。
これにより、キャッシュメモリの有効利用が図れ、処理装置からアクセス対象となるデ−タがキャッシュメモリ上に存在する確率が高くなり、高性能なディスクキャッシュ装置を提供できるという効果が得られる。
(3)1重化状態となったキャッシュスロットに対して処理装置からデ−タ更新要求が発行された場合、更新デ−タを含むFBAブロックは2つのキャッシュメモリに2重化される。
これにより、1重化状態となったキャッシュスロットに対してもライトアフタキャッシュ方式が適応でき、処理装置からのデ−タ更新処理の応答時間を短縮できるという効果が得られる。
(4)更新デ−タを含むFBAブロックaとcの間に更新デ−タを含まないFBAブロックbが存在しても、更新デ−タを含まないFBAブロックbを2つのキャッシュメモリに2重化する。
これにより、FBAブロックaからcを一括してFBAディスク装置に格納してもディスク装置への書き込み中に障害が発生してもデ−タを消失することはなく、デステ−ジ処理の際のFBAディスク装置へのライト要求発行回数を削減できるという効果が得られる。
(5)キャッシュメモリを不揮発キャッシュメモリとすることにより、電源障害が発生してもキャッシュメモリ中の更新レコードを保持できるという効果が得られる。
【図面の簡単な説明】
【図1】本発明の一実施例を示す制御構成を示すブロック図である。
【図2】CKDディスク装置をFBAディスク装置においてエミュレ−トする際のデ−タ格納形式である。
【図3】デ−タ読出し用チャネルプログラムの流れ図である。
【図4】シ−クコマンド処理の流れ図である。
【図5】セットセクタコマンドの処理の流れ図である。
【図6】サ−チコマンド処理の流れ図である。
【図7】リ−ドコマンド処理の流れ図である。
【図8】ドライブ制御プロセッサへのリクエストブロック(RB)の構成図である。
【図9】キャッシュメモリへのロ−ド処理の流れ図である。
【図10】Hit/Miss判定テ−ブルとSCBとの関係図である。
【図11】スロットコントロ−ルブロック(SCB)の構成図である。
【図12】図9の処理907の詳細な流れ図である。
【図13】デ−タ読出し処理を説明する概略図である。
【図14】デ−タ書き込み用チャネルプログラムの流れ図である。
【図15】ライトコマンド処理の流れ図である。
【図16】図15の処理1503の詳細な流れ図である。
【図17】デ−タ更新処理を説明する概略図である。
【図18】更新デ−タを含むキャッシュスロットを管理するSCBの関係図である。
【図19】デステ−ジ処理の流れ図である。
【図20】デステ−ジ対象FBAブロックの範囲を示す図である。
【図21】デステ−ジ処理を説明する概略図である。
【図22】第2の実施例におけるスロットコントロ−ルブロック(SCB)の構成図である。
【図23】第2の実施例におけるHit/Miss判定テ−ブルとSCBの関係図である。
【図24】第2の実施例における空きSCBの関係図である。
【図25】第2の実施例におけるHit/Miss判定処理の流れ図である。
【図26】第2の実施例におけるライトコマンド処理の流れ図である。
【図27】第2の実施例のライトコマンド処理におけるデ−タの流れを示す図である。
【図28】第2の実施例におけるデステ−ジ処理の流れ図である。
【図29】第2の実施例のデステ−ジ処理におけるデ−タの流れを示す図である。
【符号の説明】
1 処理装置
2 制御装置
21 チャネル制御
21 ドライブ制御
22、23 不揮発キャッシュメモリ
25 チャネル制御プロセッサ
26 ドライブ制御プロセッサ
27 制御メモリ
3 固定長記録形式のディスク装置
Claims (9)
- 処理装置と接続される記憶装置であって、
固定長ブロック形式のデータを格納するディスク装置と、
前記ディスク装置に接続され、複数のキャッシュメモリと、
前記キャッシュメモリ毎に前記キャッシュメモリを管理する管理手段とを有する制御装置とを有し、
前記制御装置は、前記処理装置からライトデータを受信して前記キャッシュメモリに格納し、
前記処理装置に応答を送信し、
前記ライトデータが前記ディスク装置内の第一の記憶領域に書き込まれるデータ及び第二の記憶領域に書き込まれるデータを含み、前記第一の記憶領域が前記第二の記憶領域とは連続しない記憶領域である場合に、前記ディスク装置内の、前記第一の記憶領域及び前記第二の記憶領域を含む連続した第三の記憶領域に格納されるデータを、前記キャッシュメモリから読み出して前記ディスク装置に書き込み、
前記処理装置からのアクセスが終了し、前記アクセス対象となったデータが前記複数のキャッシュメモリに存在する場合、前記制御装置は、前記複数のキャッシュメモリの1つに存在する前記データがキャッシュメモリから追い出される優先順位と、前記複数のキャッシュメモリのうち、前記1つとは異なる他のキャッシュメモリに存在する前記データがキャッシュメモリから追い出される優先順位を、互いに異なるように設定することを特徴とする記憶装置。 - 請求項1記載の記憶装置において、
前記制御装置は更に、前記ライトデータを前記キャッシュメモリに格納する前に、前記ディスク装置内の、前記第三の記憶領域に格納されているデータが前記キャッシュメモリに格納されているかを確認し、該データが前記キャッシュメモリに格納されていない場合には、前記ディスク装置から該データを読み出して前記キャッシュメモリに格納することを特徴とする記憶装置。 - 請求項2記載の記憶装置において、
前記制御装置は更に、
前記第三の記憶領域に格納されているデータが二以上のキャッシュメモリ各々に格納されているかを確認し、該データが二以上のキャッシュメモリに格納されていない場合には、該データを前記ディスク装置から読み出して二以上のキャッシュメモリに格納し、
前記ライトデータを前記二以上のキャッシュメモリ各々に格納し、
前記二以上のキャッシュメモリのいずれかから、前記第三の記憶領域に格納されるデータを読み出して、前記ディスク装置に書き込むことを特徴とする記憶装置。 - 請求項1記載の記憶装置において、
前記制御装置は更に、
前記第三の記憶領域に格納されているデータが一つのキャッシュメモリにのみ格納されている場合に、該キャッシュメモリから前記第三の記憶領域に格納されているデータを他のキャッシュメモリに複写し、
前記第三の記憶領域に格納されているデータを格納している複数のキャッシュメモリ各々に前記ライトデータを格納し、
前記複数のキャッシュメモリのいずれかから、前記第三の記憶領域に格納されるデータを読み出して前記ディスク装置に書き込むことを特徴とする記憶装置。 - 請求項2記載の記憶装置において、
前記ディスク装置は、前記制御装置と接続するためのSCSIインタフェースを有することを特徴とする記憶装置。 - 請求項5記載の記憶装置において、
前記制御装置は、前記処理装置からCKDデータ形式のライトデータを受信し、該ライトデータを固定長データに変換して前記ディスク装置に書き込むことを特徴とする記憶装置。 - 記憶装置が、処理装置から受信したデータを格納するか、記憶装置が、処理装置からのアクセスに対して処理を行う、方法であって、
処理装置によって送信されたデータを受信する受信ステップと、
前記処理装置から受信したデータをキャッシュメモリに格納するキャッシュ格納ステップと、
前記処理装置に応答を送信する応答ステップと、
前記データが、前記記憶装置が有する固定長ブロック形式に従うディスク装置内の、複数の離れた記憶領域に記憶されるデータである場合に、前記データが記憶される複数の離れた記憶領域と、該複数の離れた記憶領域の間に存在する記憶領域とを含む連続な記憶領域に格納されるデータを、前記キャッシュメモリから読み出して前記ディスク装置に格納するディスク格納ステップと、
前記処理装置からのアクセスが終了し、前記アクセス対象となったデータが複数のキャッシュメモリに存在する場合、前記複数のキャッシュメモリの何れかに存在する前記データがキャッシュメモリから追い出される優先順位と、前記複数のキャッシュメモリのうち、前記何れかとは異なる他のキャッシュメモリに存在する前記データがキャッシュメモリから追い出される優先順位を、互いに異なるように設定する設定ステップとを有することを特徴とする方法。 - 請求項7記載の方法において、
更に、前記キャッシュ格納ステップの前に、前記連続な記憶領域に格納されているデータが前記キャッシュメモリに格納されているか否か判断し、該データが前記キャッシュメモリに格納されていない場合には、該データを前記ディスク装置から読み出して前記キャッシュメモリに格納するステップを有することを特徴とする方法。 - 請求項7記載の方法において、
更に、前記キャッシュ格納ステップの前に、前記連続な記憶領域に格納されているデータが複数のキャッシュメモリに格納されているか否かを判断し、該データが一つのキャッシュメモリのみに格納されている場合には、該データを他のキャッシュメモリに複写する複写ステップを有し、
前記キャッシュ格納ステップは、前記連続な記憶領域に格納されているデータが格納されている二以上のキャッシュメモリ各々に、前記処理装置から受信したデータを格納するステップを有し、
前記ディスク格納ステップは、前記処理装置から受信したデータを格納している二以上のキャッシュメモリのいずれかから、前記連続な記憶領域に格納されるデータを前記ディスク装置に格納するステップを有することを特徴とする方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003037601A JP3861061B2 (ja) | 2003-02-17 | 2003-02-17 | ディスクキャッシュ制御装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003037601A JP3861061B2 (ja) | 2003-02-17 | 2003-02-17 | ディスクキャッシュ制御装置 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP35364892A Division JP3422370B2 (ja) | 1992-12-14 | 1992-12-14 | ディスクキャッシュ制御装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2003271315A JP2003271315A (ja) | 2003-09-26 |
JP3861061B2 true JP3861061B2 (ja) | 2006-12-20 |
Family
ID=29208449
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2003037601A Expired - Lifetime JP3861061B2 (ja) | 2003-02-17 | 2003-02-17 | ディスクキャッシュ制御装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3861061B2 (ja) |
-
2003
- 2003-02-17 JP JP2003037601A patent/JP3861061B2/ja not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
JP2003271315A (ja) | 2003-09-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3422370B2 (ja) | ディスクキャッシュ制御装置 | |
US7769952B2 (en) | Storage system for controlling disk cache | |
US7831764B2 (en) | Storage system having plural flash memory drives and method for controlling data storage | |
US7412585B2 (en) | Method for controlling disk drive using an address translation table | |
JP3697149B2 (ja) | キャッシュ・メモリを管理する方法 | |
US20030236944A1 (en) | System and method for reorganizing data in a raid storage system | |
US6009498A (en) | Disk control unit for holding track data in cache memory | |
US20150347310A1 (en) | Storage Controller and Method for Managing Metadata in a Cache Store | |
TWI531963B (zh) | Data storage systems and their specific instruction enforcement methods | |
JPH0775011B2 (ja) | 予測性トラックテーブルを用いたレコード更新方法 | |
US6101574A (en) | Disk control unit for holding track data in non-volatile cache memory | |
JPH06236322A (ja) | ディスクアレイ用キャッシュシステム | |
JP2013156977A (ja) | 冗長キャッシュデータのエラスティックキャッシュ | |
US5671390A (en) | Log structured array storage subsystem using LSA directory and LSA sub-directory stored in different storage media | |
JP6011153B2 (ja) | ストレージシステム、ストレージ制御方法およびストレージ制御プログラム | |
US20180307440A1 (en) | Storage control apparatus and storage control method | |
JP7472341B2 (ja) | ストレージシステム及びストレージシステムの制御方法 | |
JP3260999B2 (ja) | ディスク制御装置の制御方法 | |
JP3270959B2 (ja) | ディスクアレイ装置におけるパリティ格納方法およびディスクアレイ装置 | |
JP4252102B2 (ja) | 計算機システムおよび二次記憶装置 | |
JPH07152498A (ja) | 情報処理システム | |
JP6451770B2 (ja) | ストレージ制御装置およびストレージ制御プログラム | |
JP3260998B2 (ja) | ディスク制御装置 | |
JP3861061B2 (ja) | ディスクキャッシュ制御装置 | |
JP4128206B2 (ja) | 計算機システムおよび二次記憶装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20051108 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20060228 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20060426 |
|
RD02 | Notification of acceptance of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7422 Effective date: 20060426 |
|
RD04 | Notification of resignation of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7424 Effective date: 20060426 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20060516 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20060714 |
|
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: 20060919 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20060925 |
|
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: 20090929 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100929 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100929 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110929 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120929 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120929 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130929 Year of fee payment: 7 |
|
EXPY | Cancellation because of completion of term | ||
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130929 Year of fee payment: 7 |