JP2007188409A - 記憶装置コントローラ及びキャッシュ制御方法 - Google Patents
記憶装置コントローラ及びキャッシュ制御方法 Download PDFInfo
- Publication number
- JP2007188409A JP2007188409A JP2006007450A JP2006007450A JP2007188409A JP 2007188409 A JP2007188409 A JP 2007188409A JP 2006007450 A JP2006007450 A JP 2006007450A JP 2006007450 A JP2006007450 A JP 2006007450A JP 2007188409 A JP2007188409 A JP 2007188409A
- Authority
- JP
- Japan
- Prior art keywords
- cache
- storage device
- access
- controller
- device controller
- 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.)
- Withdrawn
Links
Images
Landscapes
- Memory System Of A Hierarchy Structure (AREA)
Abstract
【課題】各コントローラに分散されたアクセス要求が、各コントローラのキャッシュブロック取得による排他で競合する場合、一方のアクセスのみがキャッシュブロックの全領域を占有してデータ転送を行っていたため、待ち時間が生じていた。
【解決手段】データ転送の領域が重ならない限り同一キャッシュブロックであっても両コントローラが同一キャッシュブロックにデータ転送を可能とする排他制御を行うため、各コントローラからアクセス可能な共有メモリを使用して、キャッシュブロックの使用状況を管理する。
【選択図】図1
【解決手段】データ転送の領域が重ならない限り同一キャッシュブロックであっても両コントローラが同一キャッシュブロックにデータ転送を可能とする排他制御を行うため、各コントローラからアクセス可能な共有メモリを使用して、キャッシュブロックの使用状況を管理する。
【選択図】図1
Description
本発明は、ディスクアレイ装置における二重化されたディスクコントローラおよび同装置に適用されるキャッシュ排他制御を行う記憶装置コントローラ及びキャッシュ制御方法に関する。
ホストとディスクアレイ装置とは、ファイバチャネルインタフェースによる接続、またはSCSI(Small Computer System Interface)により接続され、ホストからの入出力要求をディスクアレイ装置が受け取り、その要求に従ったデータを転送することでアクセスを行う。システムの構成にもよるが、通常これらのインタフェースはホストとディスクアレイ装置との間で一対一に接続される。ホストとディスクアレイ装置とを接続するインタフェースが1本の場合、アクセス性能は接続するインタフェースの種類に依存する。また、接続するインタフェースに障害が発生すると、代替パスを別に設けない限りアクセス不可の状態となる。
これらを改善する考えの一つとして、二重化されたコントローラを用い、アクセスパスを2本のインタフェースで接続し、入出力要求を2本のアクセスパスに分散させることで性能向上を図ると同時に、1本が使用不可となっても残りの1本でアクセスを継続させる冗長化の考え方がある。
ホストからディスクアレイ装置内の論理ディスクにアクセスを行う場合、該当する領域をアクセスする入出力要求を二つに分割して、それぞれのコントローラに対して発行する。コントローラは、キャッシュメモリ上にデータを格納するバッファを確保し、ホストと論理ディスクとの間のデータ転送を仲介すると同時に、ディスクキャッシュとして一時的にデータを保持することで、同一領域へのアクセスに対する高速なデータ転送を制御する。
それぞれのコントローラにて管理されるキャッシュメモリは、一つの論理ディスクに対して透過なキャッシュメモリとして制御する。例えば、ホストから論理ディスクへのライトアクセスを第一のコントローラを経由して発行し、続けて同一領域のリードアクセスを第二のコントローラを経由して発行する場合、ライトデータは第一のコントローラのキャッシュメモリ上に格納されるが、同時に第二のコントローラのキャッシュメモリ上にも格納しデータの一致化を行う。続けてホストから第二のコントローラに対して発行したリードアクセスは、キャッシュメモリ上に既に格納(キャッシュヒット)されているため、論理ディスクからデータを読み出すことなく、キャッシュメモリ上のデータをホストに転送することができる。このように、二重化されたコントローラ上で透過なディスクキャッシュを提供することにより、ホストから論理ディスクへのアクセスを各コントローラに対して発行することで入出力を負荷分散しつつ、アクセスパスの冗長化が実現可能となる。
キャッシュメモリは、ある論理的な単位に分割し管理する。この分割された単位で、自由に論理ディスク上の位置に対応させることで、そのデータを格納することができる。この分割された一つの単位をキャッシュブロックと呼ぶ。ホストからのアクセスは、この取得したキャッシュブロックのメモリ領域を使用してデータ転送を行う。
図16は、従来のコントローラにおけるキャッシュ排他制御のフローチャートである。図16に示すように、コントローラ上のキャッシュブロックを取得するためには、コントローラ間で同一領域に対するキャッシュブロックの排他が必要となる。例えば第一のコントローラが処理を開始し、ホスト入出力要求を受信したとする。すると、コントローラ間通信で領域排他をし、キャッシュブロックを取得し、ホストとのデータ転送を行い、キャッシュブロック解放をし、コントローラ間通信で領域解放をするという一連の処理をする。
一方、第二のコントローラが処理を開始し、ホスト入出力を受信したとき、先ほど述べたように第一のコントローラがコントローラ間通信で領域排他をしていると、第二のコントローラはコントローラ間通信により割り込まれ、次に第一のコントローラがコントローラ間通信で領域解放するまでの間、処理が待たされる。その後に、第二のコントローラが自らコントローラ間通信で領域排他を行うことになる。すなわち、ここまでの間の待ち時間1601のために、複数のコントローラが同時にホストとのデータ転送をすることはできない。
第二のコントローラは、自らコントローラ間通信で領域排他をした後に、キャッシュブロックを取得し、ホストとのデータ転送を行い、キャッシュブロック解放をし、コントローラ間通信で領域解放をするという一連の処理をする。なお、前記したように第二のコントローラが自らコントローラ間通信で領域排他をしてコントローラ間通信で領域解放するまでの間は、第一のコントローラはコントローラ間通信で割り込まれるが、第一のコントローラとしてはすでにホストとのデータ転送は終わっているから、待ち時間ではない。
このように、従来の記憶装置コントローラおよびキャッシュ制御方法では、両コントローラでキャッシュブロックを取得するため、各コントローラのマイクロプロセッサにより通信制御部を通してコントローラ間通信を行い、該当する論理ディスクのアクセス領域を排他することで、同時にキャッシュブロックの排他を行う。
アクセス領域の排他は、キャッシュブロック単位で行う。図17は、キャッシュブロック単位のアクセス要求の説明図である。A1は第一のコントローラに発行されたアクセス領域であり、A2は第二のコントローラに発行されたアクセス領域である。図17に示すように、ホストからのアクセスがキャッシュブロックのアラインに一致する転送の場合は、同時に二つの転送が要求されても同時に転送可能である。すなわち、第一のコントローラはキャッシュブロック1701にデータ転送を行い、第二のコントローラはキャッシュブロック1702にデータ転送を行うというように、両コントローラ共に同時にデータ転送が可能である。
キャッシュブロックサイズよりも小さい転送の場合は、データ転送が待たされるときがある。図18は、同一キャッシュブロックへのアクセス要求の説明図である。A1は第一のコントローラに発行されたアクセス領域であり、A2は第二のコントローラに発行されたアクセス領域である。図18に示すように、一つのキャッシュブロック1801に二つの転送が同時に要求されることになるため、キャッシュブロック単位の排他では、必ずどちらか一方の転送が待たされる。すなわち、第一のコントローラのデータ転送が終了するまで、キャッシュブロック1801は排他された状態となるため、第二のコントローラのデータ転送は待たされる。
また、キャッシュブロックのアラインからずれた転送の場合も、データ転送が待たされるときがある。図19は、同一キャッシュブロックへのアクセス要求であって、キャッシュブロックのアラインからずれた要求の説明図である。A1は第一のコントローラに発行されたアクセス領域であり、A2は第二のコントローラに発行されたアクセス領域である。図19に示すように、一つのキャッシュブロック1902に二つの転送が同時に要求されることになるため、キャッシュブロック単位の排他では、必ずどちらか一方の転送が待たされる。すなわち、第一のコントローラのデータ転送が終了するまで、キャッシュブロック1901とキャッシュブロック1902は排他された状態となるため、第二のコントローラのデータ転送は待たされる。なお、キャッシュブロック1903は排他されていない。
従来の記憶装置コントローラおよびキャッシュ制御方法としては、キャッシュメモリ分割管理の技術として、キャッシュメモリをセグメントに分割し、セグメント内でLRU(Least Recently Used)を管理し追い出し制御を行う技術がある(例えば、特許文献1参照)。また、外部と内部のプロトコル変換を行い、キャッシュアクセスを分散させる技術もある(例えば、特許文献2参照)。また、キャッシュメモリの格納サイズをパーティション単位で動的に変更可能とし、ホストからのアクセスパターンに応じて最適な性能を得る技術もある(例えば、特許文献3参照)。また、構成情報の保存を停電時でも保障する技術もある(例えば、特許文献4参照)。
特開2004−139349号公報
特開2004−240949号公報
特開2004−030090号公報
特開2003−345528号公報
しかし、上記した従来技術においては、キャッシュブロックサイズよりも小さい転送の場合や、キャッシュブロックのアラインからずれた転送の場合は、一つのキャッシュブロックに二つの転送が同時に要求されるため、キャッシュブロック単位の排他では、必ずどちらか一方の転送が待たされるので、データ転送が遅れるという問題点があった。
すなわち、各コントローラに分散されたアクセス要求が、各コントローラのキャッシュブロック取得による排他で競合する場合、どちらか一方のアクセスのみがキャッシュブロックの全領域を占有してデータ転送を行うので、他方のアクセスの転送処理が待たされる。
そこで、本発明の目的は、コントローラ間の通信によるキャッシュブロック単位の排他に必要な待ち時間をなくし、分散されたホスト入出力要求を高速に処理できる記憶装置コントローラ及びキャッシュ制御方法を提供することである。
本発明に係る記憶装置コントローラは、計算機と記憶装置と接続する記憶装置コントローラであって、前記記憶装置に関するキャッシュ管理情報を備え、前記キャッシュ管理情報として、前記記憶装置のキャッシュ単位領域の識別情報とともに、前記計算機が前記記憶装置に対して指定可能なアクセス範囲を管理し、前記アクセス範囲は前記キャッシュ単位領域よりも粒度の細かいデータ単位で管理することを特徴とする。
本発明に係るキャッシュ制御方法は、計算機と記憶装置と接続する記憶装置コントローラにおいて、前記記憶装置に関するキャッシュ管理情報をもつステップと、前記キャッシュ管理情報として、前記記憶装置のキャッシュ単位領域の識別情報とともに、前記計算機が前記記憶装置に対して指定可能なアクセス範囲を管理するステップと、前記アクセス範囲は前記キャッシュ単位領域よりも粒度の細かいデータ単位で管理するステップとを含むことを特徴とする。
本発明によれば、データ転送の領域すなわちアクセス範囲についてキャッシュブロック単位よりも細かいデータ単位で管理するので、データ転送においてキャッシュの排他をしなければならない場合が格段に減り、無駄な待ち時間が大幅に短縮される。
また、複数のコントローラにおけるアクセス要求が、同一のキャッシュブロックに対するものであっても、データ転送の領域すなわちアクセス範囲が重ならない限り、待たされることなく処理されるので、この待ち時間が減ることで、多重化されたコントローラによるディスクへのアクセス性能について、総合的なデータ転送能力が大幅に向上する。
また、複数のコントローラにおけるアクセス要求が、同一のキャッシュブロックに対するものであって、しかも、各々がキャッシュブロックのアラインからずれた要求であっても、データ転送の領域すなわちアクセス範囲が重ならない限り、待たされることなく処理されるので、この待ち時間が減ることで、多重化されたコントローラによるディスクへのアクセス性能について、総合的なデータ転送能力が大幅に向上する。
また、共有メモリにおけるサブエントリテーブルにより各々のコントローラのキャッシュテーブルのエントリの有無を管理し、また、サブエントリテーブルを参照すればエントリの有無が即座にわかるようになるので、従来のようなコントローラ間の通信による方式よりも、排他制御に必要な処理時間が格段に短縮される。
本発明は、データ転送の領域が重ならない限り同一キャッシュブロックであっても両コントローラが同一キャッシュブロックにデータ転送を可能とする排他制御を行うことに着目してなされたものである。従来はキャッシュブロック単位でしかキャッシュ排他制御ができなかったが、データ転送の領域すなわちアクセス範囲についてキャッシュ単位領域よりも粒度の細かいデータ単位で管理することにより、データ転送においてキャッシュの排他をしなければならない場合が格段に減り、無駄な待ち時間が大幅に短縮される。
また、複数のコントローラにおけるアクセス要求が、同一のキャッシュブロックに対するものであっても、データ転送の領域すなわちアクセス範囲が重ならない限り、待たされることなく処理するので、この待ち時間が減ることで、多重化されたコントローラによるディスクへのアクセス性能について、総合的なデータ転送能力が大幅に向上する。
また、共有メモリにおけるサブエントリテーブルにより各々のコントローラのキャッシュテーブルのエントリの有無を管理し、また、サブエントリテーブルを参照すればエントリの有無が即座にわかるようにしたので、従来のようなコントローラ間の通信による方式よりも、排他制御に必要な処理時間が格段に短縮される。
図1は、本発明の実施の形態を示すブロック図である。ホスト101は、接続線102 を介して、第一のコントローラ103a および第二のコントローラ103b に、それぞれホストインタフェース104a、104b により接続される。
各コントローラ103a、103bは、記憶装置コントローラであって、それぞれディスクインタフェース105a、105b をもち、データ記憶装置106に接続される。各コントローラ103a、103bは、それぞれ、キャッシュブロック107a、107bをもち、これらはキャッシュテーブル108a、108b によって管理される。各キャッシュテーブル108a、108bは、そのエントリにおいて、ブロック番号、自側アクセス範囲、他側アクセス範囲を管理する。詳細は後述する。
各コントローラ103a、103bは、バス109 によって互いに接続され、バス109には共有メモリ110が接続される。共有メモリ110には、各キャッシュテーブル108a、108bに所望のエントリが有るかどうかを調べるためのサブエントリテーブル111が格納される。キャッシュテーブル108a、108b、およびサブエントリテーブル111は、バス109 によって接続されており、両コントローラ103a、103bからアクセス可能である。
図2は、コントローラの内部構成を示すブロック図である。コントローラ200は、記憶装置コントローラであって、ホストインタフェース201、マイクロプロセッサ202と、メモリ203と、キャッシュメモリ204と、ディスクインタフェース205とを備える。
ホストインタフェース201は、ホスト208を接続路206によりコントローラ200に接続し、ホスト208からのアクセスを制御するためのものである。ホストインタフェース201に接続されるものは、通常はホスト208 のようなコンピュータであるが、コンピュータの集合体や、もしくはデータ記憶装置207以外の図示しないデータ記憶装置であってもよい(以下、ホスト等という)。
マイクロプロセッサ202は、コントローラ200においてデータ記憶装置に関する必要処理を実行するためのものである。メモリ203は、マイクロプロセッサ202のプログラムとデータ領域とを格納するためのものであり、コントローラ200内に実装される。
キャッシュメモリ204は、接続路206を介してホスト等からデータ記憶装置207に対する入出力(データ転送)要求のバッファの役目を提供するためのものである。例えば、ホスト等からのデータ記憶装置207への書き込み処理では、一旦キャッシュメモリ204にエントリ(後述)を登録して、要求ホスト等に対して書き込み完了の旨を返却し、その後に、キャッシュメモリ204からデータ記憶媒体207に対して、実際に書き込みが行われる。これはライトバックキャッシュ方式である。
また、ホスト等からのデータ記憶装置207に対する読み込み処理では、キャッシュメモリ204にエントリが登録されているか否かを判定し、キャッシュメモリ204に該当エントリが登録されていれば、そのエントリが保持しているデータを返却し、キャッシュメモリ204にエントリが登録されていない場合は、データ記憶装置207からキャッシュメモリ204にデータを読み出して、その後にホスト等に前記読み出しデータを接続路206を介して返却する。これはリードキャッシュ方式である。
ディスクインタフェース205は、データ記憶装置へのアクセスを制御するためのものである。データ記憶装置207は、図示したように複数接続してよく、ディスクアレイとしても機能する。その場合、コントローラ200はディスクアレイコントローラとして機能する。
図3は、図2におけるコントローラを二重化した構成を示すブロック図である。コントローラ300a、300bは、コントローラ200と同様の機能をもつ。すなわち、各コントローラ300a、300bの内部構成は図2で示したものと同様となっており、それぞれ、ホストインタフェース301a、301b、マイクロプロセッサ302a、302b、メモリ303a、303b、キャッシュメモリ304a、304b、ディスクインタフェース305a、305b、接続路306a、306b、をもつ。
バス307は、二重化されたコントローラを結合するためのものであり、各コントローラ300a、300b内部のバスが延長されたものである。バス307を介して、コントローラ300aのマイクロプロセッサ302aは、コントローラ300a自身がもつメモリ303a、キャッシュメモリ304aにアクセス可能なだけでなく、バス307を介して、他方のコントローラ300bがもつメモリ303b、キャッシュメモリ304bにもアクセス可能である。同様に、コントローラ300bのマイクロプロセッサ302bは、コントローラ300b自身がもつメモリ303b、キャッシュメモリ304bにアクセス可能なだけでなく、バス307を介して、他方のコントローラ300aがもつメモリ303a、キャッシュメモリ304aにもアクセス可能である。
共有メモリ308は、バス307に接続され、ハードウェアの機能により、各コントローラ300a、300bのマイクロプロセッサ302a、302b からアクセス可能であり、各々から共有された一つのメモリとして使用される。
図4は、図3で示した各コントローラ300a、300bにおけるマイクロプロセッサ302a、302bから見たメモリマップの説明図である。メモリマップ400a、400bは、それぞれ、図3で示した一方のコントローラ300aと他方のコントローラ300bから見たメモリマップである。
メモリ401a、401bは、各々のコントローラのマイクロプロセッサを動作させるプログラムとデータとを格納する領域である。これらの領域には、キャッシュテーブルを高速に検索するためのエントリ情報も格納される(後述)。キャッシュメモリ402a、402bは、それぞれ、ホストとデータ記憶装置とのデータ転送を仲介するキャッシュメモリである。
共有メモリ403は、両コントローラから共有された一つのメモリとして使用できるメモリ領域であり、例えばハードウェアの機能により実現される。この共有メモリ403に、後述するように、本発明ではキャッシュブロック使用領域を管理するテーブルを格納する。
図5は、図4のメモリマップ400a、400bにおける各種テーブルの説明図である。メモリマップ400a 、400b は、図4で示したものと同じものであり、図5ではより詳細に図示している。メモリ401aには、ハッシュテーブル501a、第一のキャッシュテーブル502a、および第二のキャッシュテーブル503a が格納される。メモリ401bには、ハッシュテーブル501b、第二のキャッシュテーブル502b、および第一のキャッシュテーブル503b が格納される。
ハッシュテーブル501aは、第一のキャッシュテーブル502a と第二のキャッシュテーブル503a を高速に検索するためのものである。ハッシュテーブル501b は、第二のキャッシュテーブル502b と第一のキャッシュテーブル503b を高速に検索するためのものである。
個々のキャッシュテーブルは、それぞれ、キャッシュブロックを管理するためのものである。具体的には、第一のキャッシュテーブル502a は第一のキャッシュブロック領域505a を管理し、第二のキャッシュテーブル503a は第二のキャッシュブロック領域の写し 506a を管理し、第二のキャッシュテーブル502b は第二のキャッシュブロック領域506b を管理し、第一のキャッシュテーブル503b は第一のキャッシュブロック領域の写し 505b を管理する。
第一のディレクトリ情報504a と第二のディレクトリ情報504b は、リードキャッシュおよびライトバックキャッシュの管理情報を格納する領域であり、キャッシュブロックの有効なデータ位置を示す。
第一のキャッシュブロック領域505a および第二のキャッシュブロック領域506bは、ホストとデータ記憶装置との転送データを格納するキャッシュブロックが格納される領域であり、それぞれ、キャッシュメモリ402a、402bの半分の領域を割当てる。第二のキャッシュブロック領域の写し 506a および第一のキャッシュブロック領域の写し505bは、それぞれ、反対側(他側)のコントローラが持つ第二のキャッシュブロック領域の写し、および第一のキャッシュブロック領域の写しを格納する領域である。第一のサブエントリテーブル507a、第二のサブエントリテーブル507bは、各コントローラにて使用しているキャッシュブロックの取得状態を他のコントローラと共有し、同一キャッシュブロックに関する高速な検索開始位置を示すためのものである。
図6は、キャッシュメモリと論理ディスクとの対応関係の説明図である。キャッシュメモリ上におけるキャッシュブロック領域600は、16kB(キロバイト)単位のキャッシュブロック(例えばキャッシュブロック602 等)に分割され、縦m 個×横n 個のキャッシュブロックが配置される。本実施例の形態では、列(レベル)の数は32(0番目から31番目)としており、行(カラム)の数は j(0番目からj-1番目)としている。例えばカラムn のキャッシュブロックの集合601において、キャッシュブロック602は、カラム値が n、レベル値が m として指定される。
論理ディスク603 は、1つまたは複数のデータ記憶装置をまとめて一括的にアクセスされる論理的なディスクをあらわしたものである。論理ディスク603内の論理的なブロックの位置は、ブロック番号で指定される。当該ブロック番号は0番から始まり、ブロック604 については k番目である。なお、図示していないが論理ディスク自体を複数取り扱うことも可能であり、その場合、個々の論理ディスクは論理ディスク番号にて識別される。
キャッシュメモリ内のあるキャッシュブロックは、論理ディスク内のあるブロックと対応付けられる。図6では、キャッシュブロック602が、論理ディスク603内におけるブロック番号k のブロック604と対応付けられている。このように、キャッシュメモリは、セットアソシアティブ方式によるメモリマッピングで管理される。
キャッシュメモリ上のキャッシュブロックでは、論理ディスク上のデータに関し、リードキャッシュとライトバックキャッシュの2種類のデータが保持され、管理される。すなわち、ホスト等からのリードアクセスまたはライトアクセスによりキャッシュブロック領域を検索し、対象となるキャッシュブロックとホストまたはディスクとの間でデータ転送を行う。
図7は、キャッシュテーブルとハッシュテーブルとの構造の説明図である。キャッシュテーブル701は、図6で示したキャッシュブロックを高速に検索するためのものであり、複数のエントリからなる。エントリ702は、キャッシュブロックを高速に検索するためものであり、キャッシュブロックがどの論理ディスクのどの領域と対応付けられているかを管理する情報と、さらに、コントローラによる論理ディスクのアクセス範囲を管理する情報とを含むものである。
キャッシュテーブル701は、好ましくはLRU(Least Recently Used)方式によるキュー構造として管理される。キューの長さは、図6で示したキャッシュブロックの配置でいう列(レベル)の数に相当する。つまり本実施例の形態では一つのキューにLRU#0のエントリからLRU#31のエントリまでの32個のエントリが連なる。
キューのエントリは、図6で示したキャッシュブロックにおいて同じカラム番号とレベル番号とを持つキャッシュブロックの一つと対応づけられる。例えばエントリ702は、カラム番号n 、レベル番号 m であり、図6で示した同じカラム番号とレベル番号とを持つキャッシュブロック602と対応づけられる。なお、キャッシュテーブル701 におけるエントリの並びと、図6で示したカラムn のキャッシュブロックの並びとは、必ずしも並び方は一致しない。キャッシュテーブル701の方はLRU方式により順次並び替えられる。キャッシュテーブル701全体としては、ハッシュテーブル703における0番目からj-1番目の要素のいずれか(例えばn 番目)に繋がる。
ハッシュテーブル703の大きさは、図6で示したキャッシュブロックの配置でいう行(カラム)の数j に相当する。j の値は、キャッシュメモリ全体のサイズに依存し、好ましくは素数を採用する。
図8は、キャッシュテーブルのエントリの内容の説明図である。キャッシュテーブルのエントリ702の内容には、LRUキューポインタ801と、ブロック番号802と、論理ディスク番号803と、レベル番号804と、カラム番号805と、サブエントリ番号806と、自側アクセス範囲807と、他側アクセス範囲808と、が含まれる。
LRUキューポインタ801は、LRUキュー内において前後するエントリ同士を結ぶものであり、p であらわされる。ブロック番号802は、論理ディスク番号803で識別される論理ディスクにおける論理的なブロック番号であり、k であらわされる。なお、1ブロックは通常512バイトに相当する。論理ディスク番号803は、論理ディスクが複数あるときの論理ディスクの識別番号であり、l であらわされる。レベル番号804は、図7に示したように、キャッシュブロックの配置の行を特定するものであり、m であらわされる。カラム番号805は、図7に示したように、キャッシュブロックの配置の列を特定するものであり、n であらわされる。上記したレベル番号とカラム番号とにより、本エントリに対応するキャッシュブロックが特定される。サブエントリ番号806は、後述するように、本エントリを指しているサブエントリの番号を示すものであり、i であらわされる。自側アクセス範囲807は、本エントリに対応付けられる論理ディスクの当該位置に対し、自側のコントローラにアクセス要求をしたホスト等によるアクセス範囲を示すものであり、hs であらわされる。他側アクセス範囲808は、本エントリに対応付けられる論理ディスクの当該位置に対し、他側のコントローラにアクセス要求をしたホスト等によるアクセス範囲を示すものであり、ha であらわされる。
ところで、ホスト等から論理ディスクに対してアクセスされるとき、論理ディスク番号l と前記論理ディスク内のブロック番号k とが指定される。これらを用いて、ホスト等からアクセスされた方(自側)のコントローラは、ハッシュテーブル内の位置であるカラム番号nを、式(1)に示すハッシュ関数で算出する。
[数1]
n = b mod j ・・・ (1)
式(1)において、b mod j とあるのは、b を整数 j で割った余りである。図9に示すように、b は、”論理ディスク番号l ”と”ブロック番号k のキャッシュアライン単位”とを結合した値である。ブロック番号のキャッシュアライン単位とは、ブロック番号をキャッシュアライン値(例えば32)で割った値である。値 j は、すでに述べたように、ハッシュテーブルのカラム番号の最大値であり、好ましくは素数が使用される。このように、ハッシュテーブルは、キャッシュブロックの検索を高速に行うための検索開始位置を示すためのものとして構成される。
n = b mod j ・・・ (1)
式(1)において、b mod j とあるのは、b を整数 j で割った余りである。図9に示すように、b は、”論理ディスク番号l ”と”ブロック番号k のキャッシュアライン単位”とを結合した値である。ブロック番号のキャッシュアライン単位とは、ブロック番号をキャッシュアライン値(例えば32)で割った値である。値 j は、すでに述べたように、ハッシュテーブルのカラム番号の最大値であり、好ましくは素数が使用される。このように、ハッシュテーブルは、キャッシュブロックの検索を高速に行うための検索開始位置を示すためのものとして構成される。
論理ディスク上の任意の位置は、キャッシュメモリに対応付ける際、ハッシュテーブルにおいて、アクセス対象位置に関して均等に対応付けられる。
図10は、サブエントリテーブルとハッシュテーブルとの構造の説明図である。サブエントリテーブル1001は、ハッシュテーブル703とは別個のハッシュテーブルであり、ハッシュテーブル703の各要素につながっている。ハッシュテーブル703のカラムn を基点とし、キャッシュテーブル701とサブエントリテーブル1001とがそれぞれつながっており、そのことで両者は対応付けられている。なお、サブエントリテーブル1001は、図示していないが、論理ディスク番号毎にも存在する。
このサブエントリテーブル1001に関して、ホスト等からアクセスされた方(自側)のコントローラは、指定されたブロック番号k を使用して、(式1)で算出したカラム番号n とともに、前記カラム番号n におけるサブエントリテーブル1001内の位置 i を式(2)に示すハッシュ関数で算出する。
[数2]
i = (k / 32) mod 511 ・・・ (2)
式(2)において 511 という値は、サブエントリテーブル1001の大きさであり、好ましくは素数が使用されるところ、好適な値として 511 となっている。
i = (k / 32) mod 511 ・・・ (2)
式(2)において 511 という値は、サブエントリテーブル1001の大きさであり、好ましくは素数が使用されるところ、好適な値として 511 となっている。
サブエントリ1002は、後述するように、キャッシュテーブル701のエントリ702を即座に参照可能とするか、または、ディレクトリ情報からキャッシュブロックを検索すべきとするかを判断するための各種情報を含むものである。上記したサブエントリテーブル1001を共有メモリ上に置くことで、各マイクロプロセッサから同一のサブエントリテーブルを使用してキャッシュ管理を行うことができる。
図11は、サブエントリテーブルのサブエントリの内容の説明図である。サブエントリテーブルのサブエントリ1002の内容には、エントリ情報1101と、ブロック番号1102と、が含まれる。サブエントリのエントリ情報1101は、数値 e であらわされ、その値に応じて以下のような意味をもち、値が格納される。
(I) 0 の場合:
初期状態、すなわち、本サブエントリに対応付けられるキャッシュテーブルのエントリが無い状態である。
初期状態、すなわち、本サブエントリに対応付けられるキャッシュテーブルのエントリが無い状態である。
(II) 1〜32 の場合:
異なる複数のブロック番号k に対し、(式2)により同一のサブエントリ番号 i が重複している状態であり、そのときの重複数、すなわち、そのようなエントリがカラムn のキャッシュテーブルに存在する数を示す。
異なる複数のブロック番号k に対し、(式2)により同一のサブエントリ番号 i が重複している状態であり、そのときの重複数、すなわち、そのようなエントリがカラムn のキャッシュテーブルに存在する数を示す。
(III) 80 + m の場合:
(式2)により算出されるサブエントリ番号i として、唯一つのブロックがキャッシュされている状態であり、キャッシュテーブルのレベル番号 m にこれに対応するエントリが存在する。
(式2)により算出されるサブエントリ番号i として、唯一つのブロックがキャッシュされている状態であり、キャッシュテーブルのレベル番号 m にこれに対応するエントリが存在する。
ブロック番号1102は、サブエントリテーブルが属する論理ディスクにおける論理的なブロック番号であり、k であらわされる。なお、1ブロックは通常512バイトに相当する。
図12は、サブエントリテーブルとキャッシュテーブルとキャッシュブロックとの対応関係の説明図である。ホスト等からのアクセス要求により、指定された論理ディスクのブロック番号から、カラム番号n と、カラムnのサブエントリテーブル1001におけるサブエントリ番号 iが定まる。このサブエントリ(i) 1002 の内容をみて、エントリ情報e の値が 80 以上(すなわち 80 + m)であれば、前記 m の値(すなわち e - 80)をカラムnのキャッシュテーブル701のレベル番号として、対応するエントリ702が存在することがわかる。このときのキャッシュデータはカラムn のキャッシュブロック601 におけるレベル番号m のキャッシュブロック602 に格納される。
サブエントリテーブルのサブエントリ(i)の値は、ハッシュによる分散により、通常はほとんど、初期状態の0であるか、または 80 + m であって相当するエントリm がキャッシュテーブルに存在する状態となる。サブエントリ(i)の値が 1 〜 32 である場合は、複数のエントリが存在することになり、高速な検索ではなくディレクトリ情報からキャッシュブロックを検索する。このサブエントリの情報をキャッシュサーチ時に参照することにより、他コントローラ側のキャッシュテーブルのどこにエントリがあるか、キャッシュブロックのどの領域を使用しているのかが自コントローラ側から即座に判断することができる。
図13は、ホスト等からのアクセス要求により、キャッシュの使用を開始する場合のコントローラの処理のフローチャートである。ホスト等からのアクセス要求により、要求された側のコントローラにおいて本処理が開始される(S1301)。まず、ハッシュテーブルのカラム番号n が(式1)により算出される(S1302)。次に、前記カラム番号n におけるサブエントリテーブル内の位置 i が(式2)により算出される(S1303)。そして、他側のサブエントリテーブルのサブエントリi について、エントリ情報e の値、すなわち”他(i).e”が0 かどうかを調べる(S1304)。これは、同サブエントリi の内容を参照することで即座にわかる。
他(i).eが0の場合は(S1304:YES)、対応するエントリがキャッシュテーブルに無く、他側のコントローラは当該キャッシュブロックを使用していないことがわかるので、自側のキャッシュテーブルのカラムn においてエントリの検索、すなわちカラムサーチを行う(S1305)。ここでは、自側のキャッシュテーブルのカラムn の中から、アクセスの対象となるキャッシュブロックに該当するエントリ(すなわち”自エントリ”)が有るかどうか検索する(S1306)。すなわち、カラムn の中から、指定された論理ディスク番号と論理ディスク内のブロック番号のキャッシュアライン単位とをもとに、該当するエントリが有るかどうか検索する。
自エントリが無い場合は(S1306:NO)、当該ブロック番号がキャッシュされていないので、新たにキャッシュブロックを取得する(S1307)。そこで、自側のサブエントリテーブルのサブエントリi について、エントリ情報eの値、すなわち”自(i).e”が0 かどうかを調べる(S1308)。
自(i).eが0の場合は(S1308:YES)、対応するエントリがキャッシュテーブルに無いので、自(i).eに80+mを代入し、また自(i).k にk を代入する(S1309)。ここで、自(i).eに80+m を代入するとは、自側のサブエントリテーブルのサブエントリi のエントリ情報e として、80+m を代入することである。mは、カラムn のLRUキューにおいて、最後に参照されてから最も長い時間が経過したエントリのレベル番号である。また、自(i).kにk を代入するとは、自側のサブエントリテーブルのサブエントリi のブロック番号k の値に、ホスト等から指定されたブロック番号k の値を代入することである。これにより、当該ブロックがキャッシュされていることが即座にわかるようになる。そして、自側のキャッシュテーブルのレベル番号m のエントリにおける自側アクセス範囲すなわち”自(m).hs”に h を代入する(S1310)。つまり、アクセス範囲h は自側コントローラによって使用されていることを示すために、同エントリの内容を今回のアクセスによって置き換える。そして、本処理を終了する(S1311)。
ステップS1304で、他(i).eが0でない場合は(S1304:NO)、対応するエントリがキャッシュテーブルにあるので、当該サブエントリのブロック番号すなわち”他(i).k”がkであるかどうかを調べる(S1312)。これらは、当該サブエントリi の内容を参照すれば即座にわかる。
他(i).kがkでない場合は(S1312:NO)、他側のサブエントリテーブルには該当情報がないので、ディレクトリ情報から該当するキャッシュブロックがあるかどうかの検索、すなわちディレクトリサーチをする(S1313)。ここでは、他側のディレクトリ情報から、アクセスの対象となるキャッシュブロックに該当する有効なデータ位置が示されているエントリ(すなわち”他エントリ”)が有るかどうか検索する(S1314)。
ディレクトリ内に他エントリが無い場合は(S1314:NO)、他側のコントローラは当該キャッシュブロックを使用していないので、自側のキャッシュテーブルのカラムn においてエントリの検索、すなわちカラムサーチを行う(すでに述べたS1305)。
ディレクトリ内に他エントリが有る場合は(S1314:YES)、当該キャッシュブロックがキャッシュされているので、他側のキャッシュテーブルからの検索、すなわちリストサーチ(S1321)を行う(後述)。
ステップS1306で、自エントリが有る場合は(S1306:YES)、当該ブロック番号がキャッシュされているので、自側のキャッシュテーブルのレベル番号m のエントリにおける他側アクセス範囲すなわち”自(m).ha”が h であるかどうかを調べる(S1315)。これは、同エントリm の内容を参照することで即座にわかる。
自(m).ha が h でない場合は(S1315:NO)、アクセス範囲h が他側コントローラによって使用されていないので、自側アクセス範囲すなわち”自(m).hs”にh を代入する(S1310)。つまり、アクセス範囲h は自側コントローラによって使用されていることを示すために、同エントリの内容を今回のアクセスによって置き換える。
自(m).ha が h である場合は(S1315:YES)、アクセス範囲h が他側コントローラによって使用されているので、今回のアクセスはデータ転送開始待ちの状態となる(S1316)。これらは、同エントリm の内容を参照することで即座にわかる。
ステップS1308で、自(i).eが0でない場合は(S1308:NO)、サブエントリi に対応するエントリがキャッシュテーブルに有るので、さらに、自(i).eが80以上かどうかを調べる
(S1317)。
(S1317)。
自(i).eが80以上でない場合は(S1317:NO)、自(i).eに自(i).e + 1 を代入する(S1318)。つまり、同サブエントリi に対応するエントリの数が1増加するために、そのエントリ数を新たに記憶させる。
自(i).eが80以上である場合は(S1317:YES)、自(i).eに2 を代入する(S1319)。つまり、同サブエントリi に対応するエントリが2個となる(すなわち一つだけでなくなる)ことになるためにそのエントリ数として2を記憶させる。上記の代入の後、自側のキャッシュテーブルのレベル番号m のエントリにおける自側アクセス範囲すなわち”自(m).hs”に h を代入する(S1310)。つまり、アクセス範囲h は自側コントローラによって使用されていることを示すために、同エントリの内容を今回のアクセスによって置き換える。
ステップS1312で、他(i).kがkである場合は(S1312:YES)、他側のサブエントリテーブルに該当情報があるので、さらに、他(i).eが80以上かどうかを調べる(S1320)。
他(i).eが80以上でない場合は(S1320:NO)、同サブエントリi に対応するエントリが複数あることになるので、他側のキャッシュテーブルのカラムn においてエントリの検索、すなわちリストサーチを行うことにより、該当するレベル番号m を取得する(S1321)。
他(i).eが80以上である場合は(S1320:YES)、同サブエントリi に対応するエントリは一つだけであり、その値を 80 + m としたとき m がキャッシュリストのレベル番号であるので、レベル番号m の値として他(i).e - 80 を代入する(S1322)。そして、他側のキャッシュテーブルのレベル番号m のエントリにおける自側アクセス範囲すなわち”他(m).hs”が h であるかどうかを調べる(S1323)。これは、同エントリm の内容を参照することで即座にわかる。
他(m).hs が h である場合は(S1323:YES)、アクセス範囲h が自側コントローラによって使用されているので、今回のアクセスはデータ転送開始待ちの状態となる(S1316)。他(m).hs が h でない場合は(S1323:NO)、アクセス範囲h が自側コントローラによって使用されていないので、自側アクセス範囲すなわち”他(m).ha”にh を代入する(S1324)。これらは、同エントリm の内容を参照することで即座にわかる。上記の後、本処理を終了する(S1311)。
図14は、ホスト等からのアクセス要求に関する処理の終了により、キャッシュの使用を終了する場合のコントローラの処理のフローチャートである。ホスト等からのアクセス要求に関する処理の終了により、要求された側のコントローラにおいて本処理が開始される(S1401)。まず、自側のキャッシュテーブルに要求対象のエントリが有るかどうかを調べる(S1402)。
該当するエントリが有る場合(S1402:YES)、転送待ちであるかどうかを調べる(S1403)。
転送待ちでない場合は(S1403:NO)、キャッシュの使用を終了してよいので、自側のキャッシュテーブルのレベル番号m のエントリにおける自側アクセス範囲が未使用であることを示すために、”自(m).hs”に 0 を代入する(S1404)。そして、自ディレクトリ情報を更新し(S1405)、上記を反映するようにLRUを変更する(S1406)。そして、本処理を終了する(S1407)。
ステップ(S1402)で、該当するエントリが無い場合は(S1402:NO)、転送待ちであるかどうかを調べる(S1408)。
転送待ちでない場合は(S1408:NO)、キャッシュの使用を終了してよいので、他側のキャッシュテーブルのレベル番号m のエントリにおける他側アクセス範囲が未使用であることを示すために、”他(m).ha”に 0 を代入する(S1409)。そして、他ディレクトリ情報を更新する(1510)。そして、本処理を終了する(S1407)。
ステップ(S1403)で、転送待ちである場合は(S1403:YES)、データ転送再発行を行う(S1411)。
ステップ(S1408)で、転送待ちである場合は(S1408:YES)、データ転送再発行を行う(S1412)。
図15は、キャッシュブロックを別のキャッシュブロックに割当て直す等により、キャッシュエントリを削除する場合のコントローラの処理のフローチャートである。ホスト等からのアクセス要求により、既存のキャッシュエントリを削除し、新たなアクセス要求で割り当て直す場合に、要求された側のコントローラにおいて本処理が開始される(S1501)。まず、自(i).eが80以上かどうかを調べる(S1502)。 自(i).eが80以上である場合は(S1502:YES)、自(i).eに0 を代入する(S1503)。つまり、同サブエントリi に対応するエントリが無いことを示すために0 を記憶させる。
自(i).eが80以上でない場合は(S1502:NO)、自(i).eに自(i).e - 1 を代入する(S1505)。つまり、同サブエントリi に対応するエントリの数が1減少するために、そのエントリ数を新たに記憶させる。上記の後、本処理を終了する(S1504)。
以上、本発明の実施の形態について、添付図面を参照しながら説明したが、本発明はかかる構成に限定されない。
なお、上記した本発明の実施の形態においてはコントローラを二重化したものについて説明したが、コントローラを三重化以上に多重化したものについても、当然に実施可能である。
101…ホスト、102…接続線、103a…第一コントローラ、103b…第二コントローラ、104…ホストインタフェース、105…ディスクインタフェース、106…データ記憶装置、107…キャッシュブロック、108…キャッシュテーブル、109…バス、110…共有メモリ、111…サブエントリテーブル
Claims (10)
- 計算機と記憶装置とを接続する記憶装置コントローラであって、前記記憶装置に関するキャッシュ管理情報を備え、前記キャッシュ管理情報として、前記記憶装置のキャッシュ単位領域の識別情報とともに、前記計算機が前記記憶装置に対して指定可能なアクセス範囲を管理し、前記アクセス範囲は前記キャッシュ単位領域よりも粒度の細かいデータ単位で管理することを特徴とする記憶装置コントローラ。
- 請求項1に記載の記憶装置コントローラにおいて、複数の前記記憶装置コントローラを互いにバスで接続することにより多重化し、第一の記憶装置コントローラは、前記記憶装置に関するキャッシュ管理情報として、自身が計算機から要求されたアクセスのアクセス範囲とともに、同一キャッシュ単位領域について他方の記憶装置コントローラが計算機から要求されたアクセスのアクセス範囲を管理することを特徴とする記憶装置コントローラ。
- 請求項2に記載の記憶装置コントローラにおいて、複数の前記記憶装置コントローラを互いに接続したバス上に共有メモリを備え、前記共有メモリには、各々の記憶装置コントローラがもつキャッシュ管理情報のための検索テーブルを格納し、前記検索テーブルは、アクセス対象のキャッシュ単位領域について前記キャッシュ管理情報の中に該当情報があるかどうかを示す参照情報をもたせることを特徴とする記憶装置コントローラ。
- 請求項3に記載の記憶装置コントローラにおいて、前記記憶装置に対するアクセスの際には、前記共有メモリ上の前記検索テーブルを検索し、前記アクセスに該当するキャッシュ単位領域に関して、他方の記憶装置コントローラがもつキャッシュ管理情報の中で該当情報があるかどうかを確認することを特徴とする記憶装置コントローラ。
- 請求項4に記載の記憶装置コントローラにおいて、前記該当情報があることを確認した場合に、前記アクセスに該当するキャッシュ単位領域に関して、前記アクセス範囲が、前記他方の記憶装置コントローラによるアクセス範囲と重複しているときは、前記計算機と前記記憶装置とのデータ転送の開始を待ち、重複していないときには、前記他方の記憶装置コントローラがもつキャッシュ管理情報において、前記アクセスに該当するキャッシュ単位領域に関して、第一の記憶装置コントローラが計算機から要求されたアクセスについてのアクセス範囲を記憶させ、前記計算機と前記記憶装置とのデータ転送の開始を待たないことを特徴とする記憶装置コントローラ。
- 計算機と記憶装置とを接続する記憶装置コントローラにおいて、前記記憶装置に関するキャッシュ管理情報として、前記記憶装置のキャッシュ単位領域の識別情報とともに、前記計算機が前記記憶装置に対して指定可能なアクセス範囲を管理するステップと、前記アクセス範囲は前記キャッシュ単位領域よりも粒度の細かいデータ単位で管理するステップとを含むことを特徴とするキャッシュ制御方法。
- 請求項6に記載のキャッシュ制御方法において、複数の前記記憶装置コントローラを互いにバスで接続することにより多重化するステップと、第一の記憶装置コントローラは、前記記憶装置に関するキャッシュ管理情報として、自身が計算機から要求されたアクセスのアクセス範囲とともに、同一キャッシュ単位領域について他方の記憶装置コントローラが計算機から要求されたアクセスのアクセス範囲を管理するステップとをさらに含むことを特徴とするキャッシュ制御方法。
- 請求項7に記載のキャッシュ制御方法において、複数の前記記憶装置コントローラを互いに接続したバス上の共有メモリに、各々の前記記憶装置コントローラがもつキャッシュ管理情報のための検索テーブルを格納するステップと、前記検索テーブルは、アクセス対象のキャッシュ単位領域について前記キャッシュ管理情報の中に該当情報があるかどうかを示す参照情報をもたせるステップとをさらに含むことを特徴とするキャッシュ制御方法。
- 請求項8に記載のキャッシュ制御方法において、前記記憶装置に対するアクセスの際には、前記共有メモリ上の前記検索テーブルを検索するステップと、前記アクセスに該当するキャッシュ単位領域に関して、他方の記憶装置コントローラがもつキャッシュ管理情報の中で該当情報があるかどうかを確認するステップをさらに含むことを特徴とするキャッシュ制御方法。
- 請求項9に記載のキャッシュ制御方法において、前記該当情報があることを確認した場合に、前記アクセスに該当するキャッシュ単位領域に関して、前記アクセス範囲が、前記他方の記憶装置コントローラによるアクセス範囲と重複しているときは、前記計算機と前記記憶装置とのデータ転送の開始を待つステップと、重複していないときには、前記他方の記憶装置コントローラがもつキャッシュ管理情報において、前記アクセスに該当するキャッシュ単位領域に関して、第一の記憶装置コントローラが計算機から要求されたアクセスについてのアクセス範囲を記憶させ、前記計算機と前記記憶装置とのデータ転送の開始を待たないステップとをさらに含むことを特徴とするキャッシュ制御方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2006007450A JP2007188409A (ja) | 2006-01-16 | 2006-01-16 | 記憶装置コントローラ及びキャッシュ制御方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2006007450A JP2007188409A (ja) | 2006-01-16 | 2006-01-16 | 記憶装置コントローラ及びキャッシュ制御方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2007188409A true JP2007188409A (ja) | 2007-07-26 |
Family
ID=38343520
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2006007450A Withdrawn JP2007188409A (ja) | 2006-01-16 | 2006-01-16 | 記憶装置コントローラ及びキャッシュ制御方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2007188409A (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2013501272A (ja) * | 2009-07-31 | 2013-01-10 | イーエムシー コーポレイション | キャッシング記憶制御装置間でストレージコマンドのキャッシュアウェア・マルチパス分散を用いたデータ処理システム |
-
2006
- 2006-01-16 JP JP2006007450A patent/JP2007188409A/ja not_active Withdrawn
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2013501272A (ja) * | 2009-07-31 | 2013-01-10 | イーエムシー コーポレイション | キャッシング記憶制御装置間でストレージコマンドのキャッシュアウェア・マルチパス分散を用いたデータ処理システム |
US8627015B2 (en) | 2009-07-31 | 2014-01-07 | Emc Corporation | Data processing system using cache-aware multipath distribution of storage commands among caching storage controllers |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10126964B2 (en) | Hardware based map acceleration using forward and reverse cache tables | |
JP3431972B2 (ja) | 仮想ディスクシステム | |
US8463981B2 (en) | Storage apparatus having deduplication unit | |
US6848034B2 (en) | Dense server environment that shares an IDE drive | |
US6363385B1 (en) | Method and apparatus for making independent data copies in a data processing system | |
US8185716B2 (en) | Memory system and method for using a memory system with virtual address translation capabilities | |
US6505273B2 (en) | Disk control device and method processing variable-block and fixed-block accesses from host devices | |
US6347358B1 (en) | Disk control unit and disk control method | |
US5504888A (en) | File updating system employing the temporary connection and disconnection of buffer storage to extended storage | |
CN102713828B (zh) | 提供多设备镜像和条带功能的磁盘缓存方法、设备和系统 | |
JP2004199420A (ja) | 計算機システム、磁気ディスク装置、および、ディスクキャッシュ制御方法 | |
US7558937B2 (en) | Disk array device memory having areas dynamically adjustable in size | |
JP2005157815A (ja) | ストレージシステム及同システムにおけるデータキャッシング方法 | |
US7437511B1 (en) | Secondary level cache for storage area networks | |
JPH07319627A (ja) | 外部記憶装置 | |
JP2007188409A (ja) | 記憶装置コントローラ及びキャッシュ制御方法 | |
US20120254531A1 (en) | Storage apparatus and storage control device | |
US20050038958A1 (en) | Disk-array controller with host-controlled NVRAM | |
US11455105B2 (en) | Storage system and data management method of switching access authority | |
JP2008192020A (ja) | Raid制御装置及びその制御方法 | |
US6862659B1 (en) | Utilizing disk cache as part of distributed cache | |
US6928524B2 (en) | Data processing system with naked cache line write operations | |
JPH10240695A (ja) | Sciシステムにおける複数の未処理要求の局所記憶装置を用いた操作 | |
US11875152B2 (en) | Methods and systems for optimizing file system usage | |
WO2015111135A1 (ja) | ストレージシステムおよび処理方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A300 | Withdrawal of application because of no request for examination |
Free format text: JAPANESE INTERMEDIATE CODE: A300 Effective date: 20090407 |