説明

データ記憶装置及び同装置におけるキャッシュ制御方法

【課題】ライトアクセスの性能を低下させることなく、キャッシュメモリへのデータ転送の途中での電源遮断に対してセクタデータを保証可能とする。
【解決手段】実施形態によれば、データ記憶装置のコントローラは、キャッシュメモリと、キャッシュ管理手段と、データ転送制御手段とを具備する。キャッシュ管理手段は、ライトデータが格納されるべきキャッシュメモリ内のマスター用キャッシュブロックにディスク装置に未保存の旧ライトデータが存在する場合、マスタ用キャッシュブロックとは別のキャッシュブロックをワーク用として取得し、取得されたワーク用キャッシュブロックへのデータ転送制御手段によるライトデータの転送が完了した場合、マスター用キャッシュブロックをワーク用に、取得されたワーク用キャッシュブロックをマスター用にそれぞれ切り替え、ワーク用に切り替えられたキャッシュブロックを開放する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明の実施形態は、データ記憶装置及び同装置におけるキャッシュ制御方法に関する。
【背景技術】
【0002】
一般に、データ記憶装置の1つとして知られているディスクアレイ装置は、ディスクアレイと当該ディスクアレイへのアクセスを制御するコントローラとから構成される。ディスクアレイは、1つ以上のディスク装置の記憶領域を用いて構成される。ディスクアレイ装置において、ホストコンピュータから認識可能な論理ディスクは、ディスクアレイの記憶領域を用いて実現される。このような論理ディスクへのホストコンピュータからの例えばライトアクセスは、コントローラ上に実装されているバッファを介して実施される。通常このバッファにはキャッシュメモリが使用されるのが一般的である。キャッシュメモリは、キャッシュブロックを単位に管理される。
【0003】
コントローラは、ホストコンピュータからのライトデータをキャッシュメモリ内のキャッシュブロックに一時的に格納した時点で、ホストコンピュータにライト完了を応答する。その後、コントローラは、キャッシュブロック上のライトデータを論理ディスクに書き込む(保存する)。この方式は、一般にライトバックキャッシュ(WBC)と呼ばれている。このWBCの適用により、高速なアクセスを実現することが可能となる。通常、キャッシュメモリは、WBCに対応するため、電源遮断が発生した場合でもライトデータを保持できるようにバッテリバックアップ機構を備えている。
【0004】
ここで、ホストコンピュータからのライトアクセス時に、そのライトアクセス範囲に対応する論理アドレスのデータが既にキャッシュメモリ内のキャッシュブロック上に存在する場合を想定する。このような状態で、ホストコンピュータからのライトデータを、上記キャッシュブロックに転送する場合、コントローラのDMA機能によりデータ転送が行われる。このデータ転送(DMA転送)の途中、例えば、ライトアクセス範囲に対応する上記キャッシュブロック内の複数のデータセクタのうちの或る1セクタのデータの転送の途中で、ディスクアレイ装置の電源遮断が発生したものとする。
【0005】
このような場合、ライトアクセス範囲に対応する、以前に上記キャッシュブロックに格納されたデータ(旧ライトデータ)のうち、電源遮断が発生した時点に対応する位置以降のデータが、新たなライトデータ(新ライトデータ)に書き換えられずに、当該キャッシュブロックに残ってしまう。つまり、旧ライトデータの一部のみが、新ライトデータの該当部分で上書きされた状態が発生する。この場合、電源遮断が発生した際に新ライトデータの書き込みが行われていたキャッシュブロック内のセクタのデータ(セクタデータ)は、一部が書き換えられたデータ(新データ)、残りが書き換え前のデータ(旧データ)となり、新旧いずれでもないセクタデータとなる。
【0006】
コントローラのDMA機能により、バスの転送幅単位でのデータ書き込みは保証される。しかし、1セクタに満たないデータのDMA転送途中で電源遮断が発生した場合、該当するセクタデータは保証されない。
【0007】
そこで、DMA転送途中で電源遮断が発生した場合においてライトデータを保証するために、コントローラ内にキャッシュメモリとは別のバッファを設け、当該バッファにライトデータを一度転送してから、当該ライトデータをキャッシュメモリ内の対応するキャッシュブロックに格納する方式が知られている。このように、ホストコンピュータからのライトデータをバッファに格納した場合、そのデータをキャッシュブロックに格納するまでは電源遮断に対するライトデータの保証は可能である。
【先行技術文献】
【特許文献】
【0008】
【特許文献1】特開平5−151094号公報
【特許文献2】特開2005−25371号公報
【特許文献3】特開2001−166993号公報
【発明の概要】
【発明が解決しようとする課題】
【0009】
しかしながら、ライトデータをキャッシュブロックに格納する前に、当該ライトデータをバッファに一時格納する方式では、ホストコンピュータからの次のライトデータの転送が待たされてしまい、ライトアクセスの性能が低下する。また、バッファに一時格納されたライトデータをキャッシュブロックに格納する際にも、電源遮断に対してライトデータ(セクタデータ)を保証するための仕組みが必要となる。
【0010】
そこで、ディスクアレイ装置のようなデータ記憶装置において、ホストコンピュータからのライトデータが格納されるべきキャッシュブロックに、ディスク装置に未保存のデータが存在する場合でも、ライトアクセスの性能を低下させることなく、キャッシュメモリへのデータ転送の途中での電源遮断に対してセクタデータを保証可能とすることが望まれている。
【課題を解決するための手段】
【0011】
実施形態によれば、データ記憶装置は、論理ディスクの記憶領域に割り当て可能な1つ以上のディスク装置と、ホストコンピュータからの前記論理ディスクへのアクセスを制御するコントローラとを具備する。前記コントローラは、キャッシュメモリと、前記キャッシュメモリを管理するキャッシュ管理手段と、前記ホストコンピュータと前記キャッシュメモリとの間のデータ転送及び前記キャッシュメモリと前記ディスク装置との間のデータ転送を制御するデータ転送制御手段とを具備する。前記キャッシュメモリは、前記ホストコンピュータと前記コントローラとの間の転送データ及び前記コントローラと前記ディスク装置との間の転送データをキャッシュブロック単位に一時格納する。前記キャッシュ管理手段は、前記ホストコンピュータから転送されるライトデータが格納されるべきキャッシュブロックであるマスター用キャッシュブロックに、前記ディスク装置に未保存の旧ライトデータが存在する場合に、前記マスタ用キャッシュブロックとは別のキャッシュブロックをワーク用キャッシュブロックとして前記キャッシュメモリから取得し、前記取得されたワーク用キャッシュブロックへの前記ライトデータの転送が完了した場合に、前記マスター用キャッシュブロックをワーク用に、前記取得されたワーク用キャッシュブロックをマスター用にそれぞれ切り替え、前記ワーク用に切り替えられたキャッシュブロックを開放する。前記データ転送制御手段は、前記ライトデータを前記取得されたワーク用キャッシュブロックに転送する。
【図面の簡単な説明】
【0012】
【図1】実施形態に係るディスクアレイ装置の構成を示すブロック図。
【図2】同実施形態で適用される、キャッシュメモリの構造例を示す図。
【図3】同実施形態で適用されるキャッシュブロックの構造例を示す図。
【図4】同実施形態で適用される、キャッシュブロック管理テーブルのデータ構造例を示す図。
【図5】キャッシュブロックに有効なリードキャッシュデータが格納されている場合における、当該キャッシュブロックと、当該キャッシュブロックを管理するためのキャッシュブロック管理テーブル内のエントリのマスタデータフィールド及びワークデータフィールドの例を示す図。
【図6】キャッシュブロックに有効なライトバックキャッシュデータが格納されている場合における、当該キャッシュブロックと、当該キャッシュブロックを管理するためのキャッシュブロック管理テーブル内のエントリのマスタデータフィールド及びワークデータフィールドの例を示す図。
【図7】キャッシュブロックに有効なリードキャッシュデータ及びライトバックキャッシュデータが格納されている場合における、当該キャッシュブロックと、当該キャッシュブロックを管理するためのキャッシュブロック管理テーブル内のエントリのマスタデータフィールド及びワークデータフィールドの例を示す図。
【図8】ライト転送中のデータ管理を説明するために、マスタ用及びワーク用の両キャッシュブロックの状態と、キャッシュブロック管理テーブル内のエントリのマスタデータフィールド及びワークデータフィールドの状態の例を示す図。
【図9】ライト転送後のデータ管理を説明するために、マスタ用及びワーク用の両キャッシュブロックの状態と、キャッシュブロック管理テーブル内のエントリのマスタデータフィールド及びワークデータフィールドの状態の例を示す図。
【図10】ライトアクセス完了後のデータ管理を説明するために、マスタ用に切り替えられたキャッシュブロックの状態と、キャッシュブロック管理テーブル内のエントリのマスタデータフィールド及びワークデータフィールドの状態の例を示す図。
【図11】ライトアクセス範囲が旧ライトデータの範囲の一部となるライトアクセス時のデータ管理を説明するために、マスタ用及びワーク用の両キャッシュブロックの状態と、キャッシュブロック管理テーブル内のエントリのマスタデータフィールド及びワークデータフィールドの状態の例を示す図。
【図12】図11に示す状態でホストコンピュータに応答が返された後に行われるライトデータ移動の期間におけるデータ管理を説明するために、マスタ用及びワーク用の両キャッシュブロックの状態と、キャッシュブロック管理テーブル内のエントリのマスタデータフィールド及びワークデータフィールドの状態の例を示す図。
【図13】ライトデータ移動後のデータ管理を説明するために、マスタ用キャッシュブロックの状態と、キャッシュブロック管理テーブル内のエントリのマスタデータフィールド及びワークデータフィールドの状態の例を示す図。
【図14】同実施形態で適用されるライトアクセスの処理手順を説明するためのフローチャートの第1の部分を示す図。
【図15】同実施形態で適用されるライトアクセスの処理手順を説明するためのフローチャートの第2の部分を示す図。
【図16】同実施形態で適用されるリードアクセスの処理手順を説明するためのフローチャートの第1の部分を示す図。
【図17】同実施形態で適用されるリードアクセスの処理手順を説明するためのフローチャートの第2の部分を示す図。
【図18】同実施形態で適用されるワーク用ライトデータ移動処理を説明するためのフローチャート。
【図19】同実施形態で適用されるバックグラウンド処理を説明するためのフローチャート。
【図20】同実施形態で適用される電源復帰時処理を説明するためのフローチャート。
【発明を実施するための形態】
【0013】
以下、実施の形態につき図面を参照して説明する。
図1は実施形態に係るディスクアレイ装置の構成を示すブロック図である。
【0014】
図1に示されるディスクアレイ装置10は、コントローラ11と、1つ以上のディスクドライブ(ディスク装置)、例えば3つのディスクドライブ12a〜12cとから構成されるデータ記憶装置である。ディスクドライブ12a〜12cは、例えば磁気ディスクドライブ(HDD)である。そこで以下の説明では、ディスクドライブ12a〜12cを、HDD12a〜12cと称する。HDD12a〜12cの記憶領域は、1つ以上のディスクアレイを構成するのに用いられ、ディスクアレイの記憶領域は、1つ以上の論理ディスクを構成するのに用いられる。
【0015】
ディスクアレイ装置10(より詳細には、ディスクアレイ装置10内のコントローラ11)は、データ通信路20を介して、ディスクアレイ装置10のホストとなるコンピュータ(ホストコンピュータ)またはその集合体と接続されている。ディスクアレイ装置10が、データ通信路20を介して、他のディスクアレイ装置と接続されていても構わない。
【0016】
コントローラ11は、ホストインタフェース部(ホストI/F)111、マイクロプロセッサ112、メモリ113、キャッシュメモリ114及びディスクインタフェース部(ディスクI/F)115を備えている。
【0017】
ホストインタフェース部111及びディスクインタフェース部115は、それぞれ外部接続される装置との間の通信を制御する。ホストインタフェース部111はデータ通信路20側の通信を司る。ディスクインタフェース部115はHDD12a〜12c側の通信を司る。
【0018】
マイクロプロセッサ112は、コントローラ11における必要処理を実行するものであり、メモリ113の一部の記憶領域には、そのための各種プログラムが格納されている。メモリ113の他の一部の記憶領域は、マイクロプロセッサ112が利用するデータ等を格納するのに用いられる。メモリ113には、キャッシュメモリ114を管理するのに用いられるキャッシュブロック管理テーブル116も格納される。
【0019】
本実施形態で適用されるキャッシュメモリ114の管理(キャッシュ管理)は、メモリ113(コンピュータ読み取り可能な記憶媒体)に格納されているプログラムをマイクロプロセッサ112が読み取って実行することによって実現されるものとする。つまりマイクロプロセッサ112は、機能モジュールとしてのキャッシュ管理部117を有する。マイクロプロセッサ112はまた、機能モジュールとしてのデータ転送制御部118を有する。データ転送制御部118は、キャッシュ管理部117の管理の下で、外部装置とキャッシュメモリ114との間のデータ転送及びキャッシュメモリ114とHDD12a〜12cとの間のデータ転送を制御する。なお、データ転送制御部118が、ハードウェアによって構成されていても構わない。
【0020】
キャッシュメモリ114は、データ通信路20を介して接続される外部装置からディスクアレイ装置10内のHDD12i(i=a,b,c)(より詳細には、HDD12iの少なくとも一部の領域が割り当てられた論理ディスク)に対して発行される入出力要求(IO要求)に対するバッファの役目を提供する。つまりキャッシュメモリ114は、HDD12i(論理ディスク)に対して読み出しまたは書き込みされるデータを格納する。キャッシュメモリ114は電源遮断が発生した場合でもライトデータを保持できるように例えばバッテリバックアップ機構を備えている。外部装置は、ホストコンピュータ、或いは他のディスクアレイ装置である。以下、説明の簡略化のために、外部装置がホストコンピュータであるものとする。
【0021】
ホストコンピュータからの入出力要求に従ってHDD12iにデータを書き込む書き込み処理は、コントローラ11において次のように行われる。まず、ライトデータがキャッシュメモリ114にエントリされ、しかる後に入出力要求を発行したホストコンピュータ(要求ホストコンピュータ)に対して書き込み完了が返される。その後、キャッシュメモリ114に格納されたデータをHDD12iに実際に書き込むための書き込み処理が行われる。キャッシュメモリ114にエントリされたライトデータはライトバックキャッシュ(WBC)データと呼ばれる。
【0022】
また、ホストコンピュータからの入出力要求に従ってHDD12iからデータを読み出す読み出し処理は、次のように行われる。まず、目的のデータがキャッシュメモリ114にエントリされているか否かが判定される。目的のデータがキャッシュメモリ114にエントリされている場合、そのエントリされているデータが要求ホストコンピュータに返される。一方、目的のデータがキャッシュメモリ114にエントリされていない場合、当該目的のデータがHDD12iからキャッシュメモリ114に読み出される。そして、読み出されたデータが、要求ホストコンピュータにデータ通信路20を介して返される。キャッシュメモリ114に読み出されたデータ(リードデータ)はリードキャッシュ(RDC)データと呼ばれる。
【0023】
キャッシュメモリ114は、ある論理的な単位に分割されて管理される。この分割された単位で自由にHDD12i(論理ディスク)内の記憶位置に対応させて、その記憶位置のデータをキャッシュメモリ114に格納することができる。この分割された1つの単位をキャッシュブロックと呼ぶ。
【0024】
図2は、キャッシュメモリ114の構造例を示す。図2に示されるキャッシュメモリ114は、例えば16KB(キロバイト)単位のキャッシュブロックに分割されている。キャッシュメモリ114において、キャッシュブロックは、図2に示されているように、論理的に縦横の配列に配置される。キャッシュブロックは、キャッシュ管理部117により、例えばセットアソシアティブ方式によるメモリマッピングで管理される。図2の例では、論理ディスク200上の論理アドレスがkの位置が、キャッシュメモリ114内のカラム(column)n、ロウ(row)mで示される位置のキャッシュブロックにマッピングされている状態が示されている。
【0025】
キャッシュメモリ114上では、リードキャッシュ(RDC)データとライトバックキャッシュ(WBC)データの2種類のデータが、キャッシュ管理部117によって管理される。ホストコンピュータからのリード/ライトアクセスに応じてキャッシュメモリ114の各エントリがサーチされ、対象となるキャッシュブロックとホストコンピュータまたはHDD12iとの間でデータ転送が行われる。
【0026】
また本実施形態では、1つのキャッシュブロックは、1セクタ(512バイト)のメモリ領域が32セクタ分の連続したメモリ領域として、キャッシュ管理部117によって管理される。RDC/WBCの有効なデータの格納は、この1セクタ単位で管理される。本実施形態で適用されるキャッシュブロックの構造を図3に示す。
【0027】
キャッシュ管理部117は、キャッシュカラム単位に割り当てられているキャッシュブロックと対象となるHDD12i(論理ディスク)の領域とをマッピングし、ホストコンピュータからライトされたデータまたはHDD12i(論理ディスク)からリードされたデータの格納状態を管理する。このキャッシュ管理部117によるデータの格納状態の管理には、メモリ113に格納されているキャッシュブロック管理テーブル116が用いられる。つまりキャッシュブロック管理テーブル116は、キャッシュブロックに割り当てられている論理ディスク内のデータのアドレス、及びそのキャッシュメモリ上の有効なデータの格納状態を管理するのに用いられる。
【0028】
図4はキャッシュブロック管理テーブル116のデータ構造例を示す。キャッシュブロック管理テーブル116の各エントリは、キャッシュ管理テーブルエントリ番号フィールド(以下、エントリ番号フィールドと称する)401、論理アドレスフィールド402、マスタデータフィールド403及びワークデータフィールド404を備えている。キャッシュブロック管理テーブル116の各エントリに登録されるエントリ情報を、キャッシュブロック管理情報と称する。
【0029】
エントリ番号フィールド401は、対応するキャッシュブロック管理テーブル116のエントリの番号を保持するのに用いられる。論理アドレスフィールド402は、対応するキャッシュブロック管理テーブル116のエントリで管理されるキャッシュブロックに割り当てられている論理アドレス(論理ディスクのアドレス)を登録するのに用いられる。
【0030】
キャッシュブロック管理テーブル116のエントリで管理されるキャッシュブロックのタイプは2つある。1つは、マスタデータを格納するのに用いられるキャッシュブロック(マスタ用キャッシュブロック)である。もう1つは、ワークデータを格納するのに用いられるキャッシュブロック(ワーク用キャッシュブロック)である。
【0031】
マスタ用キャッシュブロック及びマスタデータは、ホストコンピュータからキャッシュメモリ114へのライトデータの転送またはHDD12iからキャッシュメモリ114へのリードデータの転送が完了している状態において、それぞれ、転送が完了しているキャッシュブロック及び当該キャッシュブロックに格納されている有効なデータを指す。ワーク用キャッシュブロックは、ホストコンピュータからキャッシュメモリ114へ転送されるライトデータまたはHDD12iからキャッシュメモリ114へ転送されるリードデータが仮に格納されるキャッシュブロックを指し、ワークデータは、ワーク用キャッシュブロックに格納されているデータを指す。
【0032】
マスタデータフィールド403は、バリッド(Valid)フラグ、ダーティ(Dirty)フラグ及びアドレス(Address)を保持する。バリッドフラグは、対応するマスタ用キャッシュブロックのセクタ毎に、有効なデータであるかを示す。ダーティフラグは、対応するマスタ用キャッシュブロックのセクタ毎に、そのセクタのデータがHDD12iの本来の格納位置に書かれる(ライトバックされる)べきであるかを示す。アドレス(マスタデータフィールド403に保持されているアドレス)は、対応するマスタ用キャッシュブロックのキャッシュメモリ114における位置(メモリアドレス)を示す。
【0033】
ワークデータフィールド404は、ダーティ(Dirty)フラグ及びアドレス(Address)を保持する。ダーティフラグは、対応するワーク用キャッシュブロックのセクタ毎に、そのセクタのデータがHDD12iの本来の格納位置に未保存であるか(つまり書かれるべきか)を示す。アドレス(ワークデータフィールド404に保持されているアドレス)は、対応するワーク用キャッシュブロックのキャッシュメモリ114における位置(メモリアドレス)を示す。
【0034】
本実施形態において1キャッシュブロックは、図3を参照して説明したように、32セクタから構成される。この32セクタをそれぞれセクタ0〜31と呼ぶものとする。また、バリッドフラグ及びダーティフラグは、いずれも32ビットで構成される。この32ビットのビット位置31(最上位)〜0(最下位)は、それぞれキャッシュブロックのセクタ0〜31と対応付けられている。
【0035】
次に、本実施形態で適用される、キャッシュブロック管理テーブル116を用いたキャッシュメモリ114の管理、特にキャッシュメモリ114内のキャッシュブロックの管理について、図5乃至図7を参照して説明する。
【0036】
図5は、アドレスが“Addr1”のキャッシュブロック500に有効なRDCデータが格納されている場合における、当該キャッシュブロック500と、当該キャッシュブロック500を管理するためのキャッシュブロック管理テーブル116内のエントリのマスタデータフィールド403及びワークデータフィールド404の例を示す。
【0037】
図5の例では、キャッシュブロック500はマスタ用キャッシュブロックであり、当該キャッシュブロック500のセクタ0〜29に有効なRDCデータが格納されている。この場合、マスタデータフィールド403内のバリッドフラグは、“0xFFFFFFFC”(0xは16進表現であることを示す)であり、マスタデータフィールド403内のアドレス“Addr1”で指定されるキャッシュブロック500のセクタ0〜29のデータは有効で、当該キャッシュブロック500のセクタ30,31のデータは無効であることを示す。またマスタデータフィールド403内のダーティフラグは“0x00000000”であり、キャッシュブロック500内のデータはHDD12iに保存されており、当該データをHDD12iに書く必要がないことを示す。
【0038】
また図5の例では、ワークデータフィールド404内のアドレスは無効を示す“0xFFFFFFFF”であり、キャッシュブロック(マスタ用キャッシュブロック)500に対応するワーク用キャッシュブロックが存在しないことを示す。
【0039】
図6は、アドレスが“Addr1”のキャッシュブロック600に有効なWBCデータが格納されている場合における、当該キャッシュブロック600と、当該キャッシュブロック600を管理するためのキャッシュブロック管理テーブル116内のエントリのマスタデータフィールド403及びワークデータフィールド404の例を示す。
【0040】
図6の例では、キャッシュブロック600のセクタ0〜29に有効なWBCデータが格納されている。この場合、マスタデータフィールド403内のバリッドフラグは、“0xFFFFFFFC”であり、マスタデータフィールド403内のアドレス“Addr1”で指定されるキャッシュブロック600のセクタ0〜29のデータが有効であることを示す。またマスタデータフィールド403内のダーティフラグは“0xFFFFFFFC”であり、このダーティフラグのビット位置31〜2に対応する、キャッシュブロック600内の有効なWBCデータ(セクタ0〜29のデータ)はHDD12iに保存されておらず、当該WBCデータをHDD12iに書く必要があることを示す。
【0041】
また図6の例では、ワークデータフィールド404内のアドレスは無効を示す“0xFFFFFFFF”であり、キャッシュブロック(マスタ用キャッシュブロック)600に対応するワーク用キャッシュブロックが存在しないことを示す。
【0042】
図7は、アドレスが“Addr1”のキャッシュブロック700に有効なRDCデータ及びWBCデータが共に格納されている場合における、当該キャッシュブロック700と、当該キャッシュブロック700を管理するためのキャッシュブロック管理テーブル116内のエントリのマスタデータフィールド403及びワークデータフィールド404の例を示す。
【0043】
図7の例では、キャッシュブロック700のセクタ0,1に有効なWBCデータが格納され、セクタ2〜29に有効なRDCデータが格納されている。この場合、マスタデータフィールド403内のバリッドフラグは、“0xFFFFFFFC”であり、マスタデータフィールド403内のアドレス“Addr1”で指定されるキャッシュブロック700のセクタ0〜29のデータが有効であることを示す。またマスタデータフィールド403内のダーティフラグは“0xC0000000”であり、キャッシュブロック700内のセクタ0,1のデータ(WBCデータ)はHDD12iに存在せず、当該データをHDD12iに書く必要があることを示す。
【0044】
また図7の例では、ワークデータフィールド404内のアドレスは無効を示す“0xFFFFFFFF”であり、キャッシュブロック(マスタ用キャッシュブロック)700に対応するワーク用キャッシュブロックが存在しないことを示す。
【0045】
次に、本実施形態で適用される、キャッシュブロック管理テーブル116を用いたキャッシュメモリ114への第1のライトアクセスの制御について、図7を援用しながら、図8乃至図10を参照して説明する。
【0046】
まず、ホストコンピュータからの入出力要求に従い、キャッシュメモリ114上に既に存在するWBCデータを含む論理アドレスの範囲へのライトアクセスが実施されるものとする。このWBCデータが、図7に示すように、アドレスが“Addr1”のキャッシュブロック(マスタ用キャッシュブロック)700のセクタ0,1に格納されており、上記論理アドレスの範囲に対応するライトアクセス範囲が、図8に示すように、WBCデータを含む有効なデータが格納されているキャッシュブロック700内の領域を含むものとする。図8の例では、ライトアクセス範囲が、WBCデータを含む有効なデータが格納されているキャッシュブロック700内のセクタ0〜29の領域に一致する。この場合、従来技術であれば、ホストコンピュータから転送されるライトデータ(新ライトデータ)は、キャッシュブロック700のセクタ0〜29に書き込まれる。つまり、キャッシュブロック700内のWBCデータ(旧ライトデータ)を含むセクタ0〜29の有効なデータ(旧データ)が、新ライトデータで上書きされる。
【0047】
しかし本実施形態では、新ライトデータは、以下に述べるように空きのキャッシュブロックに書き込まれる。まずキャッシュ管理部117は、キャッシュメモリ114内の空きのキャッシュブロックをワーク用キャッシュブロックとして取得する。もし、空きのキャッシュブロックがない場合には、例えば周知のLRU(Least Recently Used)ルールに従ってキャッシュブロックが取得される。ここでは、図8に示されるキャッシュブロック800がワーク用キャッシュブロックとして取得され、当該キャッシュブロック800のアドレスが“Addr2”であるものとする。
【0048】
キャッシュ管理部117がキャッシュブロック800を取得すると、データ転送制御部118は、ホストコンピュータから転送される新ライトデータを、当該キャッシュブロック(ワーク用キャッシュブロック)800に転送して書き込むためのライトデータ転送(以下、ライト転送と称する)を行う。このように本実施形態では、キャッシュブロック(マスタ用キャッシュブロック)700内の旧ライトデータを含むライトアクセス範囲の旧データが、新ライトデータで上書きされない点、つまり旧データがキャッシュブロック700に保存されている点に注意されたい。
【0049】
キャッシュブロック800にライトデータを転送するライト転送の開始時には、キャッシュ管理部117は、キャッシュブロック600の管理に用いられているキャッシュブロック管理テーブル116内のエントリのワークデータフィールド403のアドレスを、無効を示す“0xFFFFFFFF”から“Addr2”に更新する。
【0050】
キャッシュ管理部117はライト転送が完了すると、上記ワークデータフィールド403のダーティフラグを、図8に示される“0x00000000”から、図9に示すように“0xFFFFFFFC”に更新する。これにより、キャッシュブロック800のセクタ0〜29のデータ(新ライトデータ)がHDD12iに存在せず、当該データをHDD12iに書く必要があることが示される。
【0051】
ライト転送が正常に終了すると、キャッシュ管理部117はマスタデータフィールド403及びワークデータフィールド404を操作して、マスタデータフィールド403に保持されているアドレス“Addr1”とワークデータフィールド404に保持されているアドレス“Addr2”とを入れ替える。つまりキャッシュ管理部117は、マスタ用キャッシュブロックをワーク用キャッシュブロックに切り替えると共に、ワーク用キャッシュブロックをマスタ用キャッシュブロックに切り替える。またキャッシュ管理部117は、マスタデータフィールド403のバリッドフラグ及びダーティフラグを、ワークデータフィールド404のダーティフラグに基づいて更新する。このフラグの更新の具体的な手法については後述する。
【0052】
その後、キャッシュ管理部117は、アドレスが“Addr1”のキャッシュブロックを開放する。するとデータ転送制御部118は、ホストコンピュータにライトアクセスの完了を応答する。図10は、このライトアクセス完了後の、キャッシュブロック800と、当該キャッシュブロック800を管理するためのキャッシュブロック管理テーブル116内のエントリのマスタデータフィールド403及びワークデータフィールド404の例を示す。
【0053】
もし、ライト転送が正常に終了した後、上述の入れ替えが完了する前に、つまりホストにライトアクセス完了を応答していない状態で、例えばディスクアレイ装置10の電源遮断が発生した場合、キャッシュ管理部117は、アドレスが“Addr2”のキャッシュブロックに転送されたライトデータを無効として扱う。この状態では、アドレスが“Addr1”のキャッシュブロックに、旧データが残されている。このため、キャッシュメモリ114へのデータ転送の途中での電源遮断に対して当該キャッシュメモリ114上のセクタデータを保証することができる。
【0054】
次に、ホストコンピュータによって指定された論理アドレスの範囲に対応するマスタ用キャッシュブロックのライトアクセス範囲が、当該マスタ用キャッシュブロック内の有効なデータが格納されている範囲の一部である場合における、キャッシュブロック管理テーブル116を用いたキャッシュメモリ114への第2のライトアクセスの制御について、図11乃至図13を参照して説明する。
【0055】
図11に示すように、アドレスが“Addr1”のキャッシュブロック(マスタ用キャッシュブロック)1110のセクタ0〜29には、WBCデータ(旧ライトデータ)を含む有効なデータが格納されている。ここでは、セクタ0〜27に旧ライトデータが格納されており、当該旧ライトデータは未だHDD12iに未保存のデータである。
【0056】
このような状態で、ホストコンピュータからの入出力要求に従い、キャッシュブロック(マスタ用キャッシュブロック)1110のセクタ1〜3に格納されている旧ライトデータの一部を含む論理アドレスの範囲へのライトアクセスが実施されるものとする。図11において、この論理アドレスの範囲に対応するライトアクセス範囲は、キャッシュブロック1110内の旧ライトデータが格納されているセクタ0〜27のうちの一部、例えばセクタ1〜3である。この場合、従来技術であれば、ホストコンピュータから転送されるライトデータ(新ライトデータ)は、キャッシュブロック700のセクタ1〜3に書き込まれる。つまり、キャッシュブロック700内の旧ライトデータの一部(セクタ1〜3のデータ)が、新ライトデータで上書きされる。
【0057】
しかし本実施形態では、新ライトデータは、図11に示されるように、キャッシュブロック1110のワーク用キャッシュブロックとして用いられるキャッシュブロック1120のセクタ1〜3(ライトアクセス範囲)に書かれる。ワーク用キャッシュブロックに書かれた新ライトデータを、ワーク用ライトデータと呼ぶこともある。キャッシュブロック1120のアドレスは“Addr2”である。新ライトデータの書き込み(転送)が完了すると、キャッシュブロック1110,1120を管理するためのキャッシュブロック管理テーブル116内のエントリにおけるワーク用ダーティフラグは、“0x70000000”に更新される。つまり、ワーク用ダーティフラグのセクタ1〜3に対応するビットはオンされる。
【0058】
第2のライトアクセスでは、新ライトデータの転送が正常に終了しても、第1のライトアクセスと異なって、マスタデータフィールド403に保持されているアドレス“Addr1”とワークデータフィールド404に保持されているアドレス“Addr2”との入れ替えは行われない。もし、図11に示される状態、つまりワーク用のダーティフラグの上記ライトアクセス範囲のビットがオンしている状態で、ホストコンピュータから上記新ライトデータの一部または全部に対応する論理アドレスの範囲のデータのリードアクセスが実施された場合、データ転送制御部118は、アドレスが“Addr2”のキャッシュブロック1120に格納されている新ライトデータ(ワーク用ライトデータ)のうち、指定された論理アドレスの範囲に対応するリードアクセス範囲のデータをホストコンピュータに応答する。
【0059】
新ライトデータの転送が正常に終了すると、データ転送制御部118は、アドレスが“Addr2”のキャッシュブロック(ワーク用キャッシュブロック)1120のセクタ1〜3に格納されている新ライトデータ(ワーク用ライトデータ)を、図12に示すように、アドレスが“Addr1”のキャッシュブロック1120の相対位置が同一の領域、つまりセクタ1〜3に移動(転送)する。このライトデータ移動中、キャッシュブロック1110,1120を管理するためのキャッシュブロック管理テーブル116内のエントリにおけるマスタデータフィールド403及びワークデータフィールド404は、新ライトデータの転送が正常に終了した際の状態を保持する。
【0060】
ライトデータ移動が完了すると、キャッシュ管理部117は、アドレスが“Addr2”のキャッシュブロック1120を開放する。図13は、このキャッシュブロック1120を開放した後の、キャッシュブロック管理テーブル116内の対応するエントリ内のマスタデータフィールド403及びワークデータフィールド404の例を示す。
【0061】
以上に述べた第2のライトアクセスの制御によれば、キャッシュブロック1120への新ライトデータの書き込み(転送)の途中で電源遮断が発生しても、旧ライトデータはキャッシュブロック1110に残されており、失われない。また、キャッシュブロック1110への新ライトデータの移動(転送)の途中で電源遮断が発生しても、新ライトデータはキャッシュブロック1120に残されており、失われない。
【0062】
次に、上述のライトアクセスの処理手順について、図14及び図15のフローチャートを参照して説明する。
まずキャッシュ管理部117は、ホストコンピュータからの入出力要求で指定されたライトアクセス先を示す論理アドレス(ライト論理アドレス)に基づき、キャッシュブロック管理テーブル116内の当該ライト論理アドレスに対応する論理アドレスフィールド402を持つエントリ(目的のエントリ)をサーチする(ステップS1)。もし、目的のエントリがサーチできなかったならば(ステップS2のNo)、キャッシュ管理部117は、キャッシュブロック管理テーブル116内の空きのエントリを確保して、当該確保したエントリの論理アドレスフィールド402に上記ライト論理アドレスを登録する(ステップS3)。またキャッシュ管理部117は、キャッシュメモリ114内の空きのキャッシュブロックをマスタ用キャッシュブロックとして取得して、当該マスタ用キャッシュブロックのアドレスを上記確保したエントリのマスタデータフィールド403に登録する(ステップS4)。
【0063】
するとデータ転送制御部118は、ホストコンピュータからの入出力要求で指定されたライトデータを、上記マスタ用キャッシュブロックの該当する領域(ライトアクセス範囲)にホストコンピュータから転送させる(ステップS5)。このライト転送が完了すると、キャッシュ管理部117は、上記確保したエントリのマスタデータフィールド403に保持されているバリッドフラグ(マスタ用バリッドフラグ)及びダーティフラグ(マスタ用ダーティフラグ)のライトアクセス範囲の各ビットをオンする(ステップS6)。するとデータ転送制御部118は、ホストコンピュータにライトアクセス完了を応答する(ステップS7)。
【0064】
一方、目的のエントリがサーチできたならば(ステップS2のYes)、キャッシュ管理部117は、当該エントリに登録されているマスタ用ダーティフラグの少なくとも1ビットがオンしているかにより、当該エントリにより管理されるマスタ用キャッシュブロックの該当セクタ位置のデータがHDD12iに未保存であるかを判定する(ステップS8)。
【0065】
もし、ステップS8の判定がNoであるならば、上記ステップS5以降の処理が行われる。これに対し、ステップS8の判定がYesであるならば、キャッシュ管理部117はステップS9に進む。ステップS9においてキャッシュ管理部117は、上記ステップS5と同様にマスタ用キャッシュブロックのライトアクセス範囲へのライト転送を行うならば、HDD12iに未保存のデータが、ホストコンピュータから転送されるライトデータで上書きされるかを判定する。この判定は、マスタ用ダーティフラグのライトアクセス範囲の少なくとも1ビットがオンしているかをチェックすることによって行われる。もし、ステップS9の判定がNoであるならば、上記ステップS5以降の処理が行われる。
【0066】
これに対し、ステップS9の判定がYesであるならば、キャッシュ管理部117は、HDD12iに未保存のデータが、ホストコンピュータから転送されるライトデータで上書きされるのを回避するために、データ転送制御部118と協働して以下に述べる処理を実行する。
【0067】
まずキャッシュ管理部117は、マスタ用キャッシュブロックに対応するワーク用キャッシュブロックが既に取得されているかを判定する(ステップS10)。この判定は、ステップ1でサーチされたキャッシュブロック管理テーブル116内のエントリのワークデータフィールド404に有効なアドレスが登録されているかをチェックすることによって行われる。
【0068】
もし、ワーク用キャッシュブロックが取得されていないならば(ステップS10のNo)、キャッシュ管理部117は、空きのキャッシュブロックをワーク用キャッシュブロックとして取得する(ステップS11)。そしてキャッシュブロック管理テーブル116は、取得されたワーク用キャッシュブロックのアドレスを、上記サーチされたキャッシュブロック管理テーブル116内のエントリのワークデータフィールド404に登録する(ステップS12)。
【0069】
するとデータ転送制御部118は、ホストコンピュータからの入出力要求で指定されたライトデータ(新ライトデータ)を、上記ワーク用キャッシュブロックの該当する領域(ライトアクセス範囲)にホストコンピュータから転送させる(ステップS13)。この転送(ライト転送)が完了すると、キャッシュ管理部117は、上記サーチされたエントリのワークデータフィールド404に保持されているワーク用ダーティフラグのライトアクセス範囲の各ビットをオンする(ステップS14)。
【0070】
次にキャッシュ管理部117は、上記サーチされたエントリのマスタデータフィールド403に保持されているマスタ用バリッドフラグによって有効なデータとして示されている範囲(バリッド範囲)が、ライトアクセス範囲に含まれているかを判定する(ステップS15)。もし、バリッド範囲がライトアクセス範囲に含まれているならば(ステップS15のYes)、キャッシュ管理部117は上記サーチされたエントリのマスタデータフィールド403及びワークデータフィールド404を操作して、マスタ用キャッシュブロックのアドレスとワーク用キャッシュブロックのアドレスとを入れ替える(ステップS16)
次にキャッシュ管理部117は、上記サーチされたエントリのマスタデータフィールド403に保持されているマスタ用バリッドフラグ及びマスタ用ダーティフラグを、上記サーチされたエントリのワークデータフィールド404に保持されているワーク用ダーティフラグに基づいて更新する(ステップS17)。具体的には、キャッシュ管理部117は、ワーク用ダーティフラグを、マスタ用バリッドフラグ及びマスタ用ダーティフラグに、それぞれOR設定する。即ちキャッシュ管理部117は、ワーク用ダーティフラグと、マスタ用バリッドフラグ及びマスタ用ダーティフラグとの間で、それぞれ対応するビット同士で論理和演算し、その論理和演算結果で、マスタ用バリッドフラグ及びマスタ用ダーティフラグを置き換える。
【0071】
次にキャッシュ管理部117は、ワーク用ダーティフラグを0クリアすると共に、アドレス入れ替えによってワーク用キャッシュブロックに切り替えられたキャッシュブロックを開放し、ワークデータフィールド404に登録されている切り替え後のアドレスを無効化する(ステップS18)。ここでは、アドレスを0xFFFFFFFFに書き換えることによって、当該アドレスが無効化される。
【0072】
このように本実施形態では、ワークデータフィールド404に登録されているアドレスが無効化されることによって、当該ワークデータフィールド404によって管理されるべきワーク用キャッシュブロックが取得されていないことが示される。つまり、ワークデータフィールド404に登録されているアドレスは、当該ワークデータフィールド404によって管理されるべきワーク用キャッシュブロックが取得されているか否か(取得状態)をも表す。なお、このアドレスとは別に、ワーク用キャッシュブロックが取得されているか否か(取得状態)を示す情報を、ワークデータフィールド404に持たせることも可能である。
【0073】
キャッシュ管理部117によって上記ステップS18が実行されると、データ転送制御部118は、ホストコンピュータにライトアクセス完了を応答する(ステップS7)。
これに対し、バリッド範囲がライトアクセス範囲に含まれていないならば(ステップS15のNo)、キャッシュ管理部117による上記ステップS16乃至S18が実行されずに、データ転送制御部118により、ホストコンピュータにライトアクセス完了が応答される(ステップS7)。
【0074】
一方、ワーク用キャッシュブロックが既に取得されているならば(ステップS10のYes)、キャッシュ管理部117はデータ転送制御部118と協働して、図12及び図13を参照して説明したようなライトデータ移動処理(以下、ワーク用ライトデータ移動処理)を実行する(ステップS19)。このワーク用ライトデータ移動処理では、ワーク用ライトデータの移動後に、ワーク用キャッシュブロックが開放される。このワーク用ライトデータライトデータ移動処理の手順については後述する。
【0075】
ワーク用ライトデータ移動処理(ステップS19)が終了すると、マスタ用キャッシュブロックに対応するワーク用キャッシュブロックが取得されていない場合と同様に、上記ステップS11以降の処理が行われる。
【0076】
次に、本実施形態で適用される、ホストコンピュータからの入出力要求で指定されたリードアクセスの処理手順について、図16及び図17のフローチャートを参照して説明する。
【0077】
まずキャッシュ管理部117は、ホストコンピュータからの入出力要求で指定されたリードアクセス先を示す論理アドレス(リード論理アドレス)に基づき、キャッシュブロック管理テーブル116内の当該リード論理アドレスに対応する論理アドレスフィールド402を持つエントリ(目的のエントリ)をサーチする(ステップS21)。もし、目的のエントリがサーチできなかったならば(ステップS22のNo)、キャッシュ管理部117は、キャッシュブロック管理テーブル116内の空きのエントリを確保して、当該確保したエントリの論理アドレスフィールド402に上記リード論理アドレスを登録する(ステップS23)。またキャッシュ管理部117は、キャッシュメモリ114内の空きのキャッシュブロックをマスタ用キャッシュブロックとして取得して、当該マスタ用キャッシュブロックのアドレスを上記確保したエントリのマスタデータフィールド403に登録する(ステップS24)。
【0078】
するとデータ転送制御部118は、ホストコンピュータにより指定されたデータ(リードデータ)を、取得されたマスタ用キャッシュブロックの該当する領域(リードアクセス範囲)にHDD12iから転送するためのリードデータ転送(以下、リード転送と称する)を行う(ステップS25)。リード転送が完了すると、キャッシュ管理部117は、上記確保したエントリのマスタ用バリッドフラグのリードアクセス範囲の各ビットをオンする(ステップS26)。するとデータ転送制御部118は、上記リードデータをホストコンピュータに転送し(ステップS27)、しかる後に当該ホストコンピュータにリードアクセス完了を応答する(ステップS28)。これによりリードアクセス処理は終了する。
【0079】
一方、目的のエントリ(つまり、リード論理アドレスに対応する論理アドレスフィールド402を持つエントリ)がサーチできたならば(ステップS22のYes)、キャッシュ管理部117は、当該エントリに登録されているマスタ用バリッドフラグの少なくとも1ビットがオンしているかにより、当該エントリにより管理されるマスタ用キャッシュブロックの該当セクタ位置に有効なデータが登録されているかを判定する(ステップS29)。
【0080】
もし、ステップS29の判定がYesであるならば、キャッシュ管理部117は、マスタ用バリッドフラグの中のオン状態にあるビットの範囲に対応するマスタ用キャッシュブロックの領域を、リード転送範囲(リードアクセス範囲)に含める(ステップS30)。
【0081】
ステップS30を実行すると、キャッシュ管理部117は、サーチされたエントリ中のワークデータフィールド404に設定されているワーク用ダーティフラグの少なくとも1ビットがオンしているかを判定する(ステップS31)。キャッシュ管理部117は、ステップS29の判定がNoの場合には、ステップ30をスキップしてステップS31の判定を行う。
【0082】
もし、ステップS31の判定がYesであるならば、キャッシュ管理部117は、ワーク用バリッドフラグの中のオン状態にあるビットの範囲に対応するワーク用キャッシュブロックの領域を、リード転送範囲に含める(ステップS32)。
【0083】
ステップS32を実行すると、キャッシュ管理部117は、サーチされたエントリによって管理されているマスタ用キャッシュブロックに有効なデータが未登録の領域があるかを判定する(ステップ33)。この未登録の領域があるかは、対応するマスタ用バリッドフラグにオフ状態にあるビットが含まれているかによって判定される。キャッシュ管理部117は、ステップS31の判定がNoの場合には、ステップ32をスキップしてステップS33の判定を行う。
【0084】
もし、ステップS33の判定がYesであるならば、データ転送制御部118は、マスタ用キャッシュブロック内の未登録の領域に対応するデータ(未登録のデータ)を、HDD12iから当該マスタ用キャッシュブロック内の未登録の領域に転送(リード転送)する(ステップS34)。するとキャッシュ管理部117は、マスタ用バリッドフラグ中の上記未登録の領域に対応するビットを全てオンする(ステップS35)。
【0085】
ステップS35が実行されると、上記ステップS27に進む。ステップS33の判定がNoの場合には、ステップS34及びS35をスキップしてステップS27に進む。ステップS27においてデータ転送制御部118は、マスタ用キャッシュブロック内の現在のリード転送範囲のリードデータを、ホストコンピュータに転送し(ステップS27)、しかる後に当該ホストコンピュータにリードアクセス完了を応答する(ステップS28)。これによりリードアクセス処理は終了する。
【0086】
次に、上記ワーク用ライトデータ移動処理の手順について図18のフローチャートを参照して説明する。 。
【0087】
まずデータ転送制御部118が、ワーク用キャッシュブロックに格納されている、対応するワーク用ダーティフラグ中のオン状態にあるビットの範囲(以下、ワーク用ダーティフラグの設定範囲と称する)に相当するデータを、図12を参照して説明したように、当該ワーク用キャッシュブロックからマスタ用キャッシュブロックに転送する(ステップS41)。
【0088】
するとキャッシュ管理部117は、上記ステップS17と同様に、ワーク用ダーティフラグを、マスタ用バリッドフラグ及びマスタ用ダーティフラグに、それぞれOR設定する(ステップS42)。次にキャッシュ管理部117は、ワーク用ダーティフラグを0クリアすると共に、ワーク用キャッシュブロックを開放し、当該ワーク用キャッシュブロックを管理するワークデータフィールド404に登録されているアドレスを無効化する(ステップS43)。これによりワーク用ライトデータ移動処理は終了する。
【0089】
本実施形態において、ディスクアレイ装置10のコントローラ11では、ホストコンピュータからの入出力要求とは無関係の処理(以下、バックグラウンド処理と称する)が自律的に行われる。以下、このバックグラウンド処理の手順について、図19のフローチャートを参照して説明する。本実施形態では、バックグラウンド処理が定期的に行われるものとするが、不定期で行われても構わない。
【0090】
キャッシュ管理部117は、バックグラウンド処理の定期起動時刻が到来したかを、例えばバックグラウンド処理の実行周期よりも短い周期で判定する(ステップS51)。もし、定期起動時刻が到来したならば(ステップS51のYes)、キャッシュ管理部117はキャッシュブロック管理テーブル116内のエントリのワークデータフィールド404を参照することにより、当該エントリによって管理されるマスタ用キャッシュブロックに対応するワーク用キャッシュブロックが取得されているかを判定する(ステップS52)。
【0091】
もし、ワーク用キャッシュブロックが取得されているならば(ステップS52のYes)、キャッシュ管理部117は、当該ワーク用キャッシュブロックから対応するマスタ用キャッシュブロックにワーク用ライトデータを移動するためのワーク用ライトデータ移動処理を、図18のフローチャートに示される手順でデータ転送制御部118と協働して実行する(ステップS53)。
【0092】
ワーク用ライトデータ移動処理(ステップS53)が終了すると、ステップS54に進む。ステップS54においてキャッシュ管理部117は、ワーク用ライトデータの移動先のマスタ用キャッシュブロックに対応するマスタ用ダーティフラグの少なくとも1ビットがオンしているかにより、当該マスタ用キャッシュブロックの該当セクタ位置のデータがHDD12iに未保存であるかを判定する。一方、ステップS52の判定がNoの場合、キャッシュ管理部117はステップS53をスキップしてステップS54の判定を実行する。
【0093】
ステップS54の判定がYesの場合、データ転送制御部118は、マスタ用キャッシュブロックに格納されている、対応するマスタ用ダーティフラグの設定範囲に相当するデータを、当該マスタ用キャッシュブロックからHDD12iに転送する(ステップS55)。ここでマスタ用キャッシュブロックからのデータの転送先は、当該マスタ用キャッシュブロックを管理する、キャッシュブロック管理テーブル116内のエントリ中の論理アドレスフィールド402に設定されている論理アドレスに基づいて決定される。
【0094】
キャッシュ管理部117は、ステップS55が終了すると、対応するマスタ用ダーティフラグを0クリアする(ステップS56)。これにより、バックグラウンド処理は終了する。また、ステップS54の判定がNoの場合、そのままバックグラウンド処理は終了する。
【0095】
本実施形態では、ディスクアレイ装置10の電源が遮断したならば、当該電源が復帰した際に、電源復帰時処理が行われる。以下、この電源復帰時処理の手順について、図20のフローチャートを参照して説明する。
【0096】
キャッシュ管理部117は、電源遮断状態から復帰した場合(ステップS61のYes)、キャッシュブロック管理テーブル116の全エントリを先頭から順次サーチするための処理を実行する(ステップS62)。既に最後のエントリまで処理済みでないならば(ステップ63のNo)、キャッシュ管理部117は、サーチされたエントリ中のワークデータフィールド404に基づき、当該エントリによって管理されるマスタ用キャッシュブロックに対応するワーク用キャッシュブロックが取得されているかを判定する(ステップS64)。
【0097】
もし、ワーク用キャッシュブロックが取得されているならば(ステップS64のYes)、キャッシュ管理部117は、当該ワーク用キャッシュブロックに対応するワーク用ダーティフラグの少なくとも1ビットがオンしているかを判定する(ステップS65)。ステップS65の判定がYesの場合、キャッシュ管理部117は、対応するワーク用キャッシュブロックからマスタ用キャッシュブロックにワーク用ライトデータを移動するためのワーク用ライトデータ移動処理を、図18のフローチャートに示される手順でデータ転送制御部118と協働して実行する(ステップS66)。これに対し、ステップS65の判定がNoの場合、キャッシュ管理部117は、対応するワーク用キャッシュブロックを開放し、当該ワーク用キャッシュブロックの管理に用いられていたワークデータフィールド404に登録されているアドレスを0xFFFFFFFFに書き換えることによって、当該アドレスを無効化する(ステップS67)。
【0098】
キャッシュ管理部117は、ステップS66またはS67が終了すると、サーチされたエントリ中のマスタデータフィールド403に設定されているマスタ用バリッドフラグの少なくとも1ビットがオンしているかを判定する(ステップS68)。キャッシュ管理部117は、ステップS64の判定がNoの場合には、ステップS65〜S67をスキップしてステップS68の判定を行う。
【0099】
ステップS68の判定がNoの場合、キャッシュ管理部117は、対応するマスタ用キャッシュブロックを開放し(ステップS69)、しかる後に当該開放されたマスタ用キャッシュブロックを管理するのに用いられていた、キャッシュブロック管理テーブル116内のエントリを開放する(ステップS70)。ステップS70が実行されると、ステップS62に戻る。また、ステップS68の判定がYesの場合には、そのままステップS62に戻る。また、最後のエントリまで処理済みであったならば(ステップ63のYes)、つまりキャッシュブロック管理テーブル116の全エントリに基づいて対応する処理が既に行われているならば、電源復帰時処理は終了する。
なお、上記実施形態では、データ記憶装置がディスクアレイ装置である場合を想定している。しかし、データ記憶装置がディスクアレイ装置である必要はない。
【0100】
上述の実施形態によれば、ホストコンピュータからのライトデータが格納されるべきキャッシュブロック(マスタ用キャッシュブロック)に、ディスク装置に未保存のデータが存在する場合でも、当該キャッシュブロックとは別のキャッシュブロックがワーク用キャッシュブロックとして取得されて、当該取得されたワーク用キャッシュブロックに、上記ライトデータが転送(格納)される。そして、取得されたワーク用キャッシュブロックへの上記ライトデータの転送が完了した場合に、マスター用キャッシュブロックがワーク用に、取得されたワーク用キャッシュブロックがマスター用にそれぞれ切り替えられ、ワーク用に切り替えられたキャッシュブロックが開放される。これにより、ホストコンピュータからのライトデータが格納されるべきキャッシュブロック(マスタ用キャッシュブロック)に、ディスク装置に未保存のデータが存在する場合でも、ライトアクセスの性能を低下させることなく、キャッシュメモリへのデータ転送の途中での電源遮断に対してセクタデータを保証することが可能となる。
【0101】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【0102】
10…ディスクアレイ装置(データ記憶装置)、11…コントローラ、12a〜12c…HDD(ディスク装置)、20…データ通信路、111…ホストインタフェース部、112…マイクロプロセッサ、113…メモリ、114…キャッシュメモリ、115…ディスクインタフェース部、116…キャッシュブロック管理テーブル、117…キャッシュ管理部、401…エントリ番号フィールド、402…論理アドレスフィールド、403…マスタデータフィール、404…ワークデータフィールド。

【特許請求の範囲】
【請求項1】
論理ディスクの記憶領域に割り当て可能な1つ以上のディスク装置と、
ホストコンピュータからの前記論理ディスクへのアクセスを制御するコントローラとを具備し、
前記コントローラは、
前記ホストコンピュータと前記コントローラとの間の転送データ及び前記コントローラと前記ディスク装置との間の転送データをキャッシュブロック単位に一時格納するキャッシュメモリと、
前記キャッシュメモリを管理するキャッシュメモリ管理手段であって、前記ホストコンピュータから転送されるライトデータが格納されるべきキャッシュブロックであるマスター用キャッシュブロックのライトアクセス範囲内に、前記ディスク装置に未保存の旧ライトデータが存在する場合に、前記マスタ用キャッシュブロックとは別のキャッシュブロックをワーク用キャッシュブロックとして前記キャッシュメモリから取得し、前記取得されたワーク用キャッシュブロックへの前記ライトデータの転送が完了した場合に、前記マスター用キャッシュブロックをワーク用に、前記取得されたワーク用キャッシュブロックをマスター用にそれぞれ切り替え、前記ワーク用に切り替えられたキャッシュブロックを開放するキャッシュメモリ管理手段と、
前記ホストコンピュータと前記キャッシュメモリとの間のデータ転送及び前記キャッシュメモリと前記ディスク装置との間のデータ転送を制御するデータ転送制御手段であって、前記ライトデータを前記取得されたワーク用キャッシュブロックに転送するデータ転送制御手段とを具備する
ことを特徴とするデータ記憶装置。
【請求項2】
前記コントローラは、前記キャッシュメモリ内のマスター用キャッシュブロック毎に、当該マスター用キャッシュブロックのメモリアドレス、当該マスター用キャッシュブロックに対応するワーク用キャッシュブロックの取得状態及び当該対応するワーク用キャッシュブロックのメモリアドレスを保持するキャッシュブロック管理テーブルを更に具備し、
前記キャッシュメモリ管理手段は、前記キャッシュブロック管理テーブルに保持されている、前記マスター用キャッシュブロックのアドレス及び当該マスター用キャッシュブロックに対応する前記取得されたワーク用キャッシュブロックのメモリアドレスを入れ替えることにより、前記マスター用キャッシュブロックを前記ワーク用に、前記取得されたワーク用キャッシュブロックをマスター用にそれぞれ切り替える
ことを特徴とする請求項1記載のデータ記憶装置。
【請求項3】
前記キャッシュブロック管理テーブルは、前記キャッシュメモリ内のマスター用キャッシュブロック毎に、当該マスター用キャッシュブロック及び前記ワーク用キャッシュブロックにおけるライトデータの格納状態を示すフラグ情報を保持しており、
前記メモリ管理手段は、前記マスタ用キャッシュブロックの前記ライトアクセス範囲が、当該マスタ用キャッシュブロックに既に格納されている前記ディスク装置に未保存の旧ライトデータの領域の範囲の一部である特定状態を前記キャッシュブロック管理テーブルに基づいて検出し、前記特定状態において前記メモリアドレスを入れ替える代わりに、当該マスタ用キャッシュブロックに対応する前記取得されたワーク用キャッシュブロックに格納されたライトデータを、当該マスター用キャッシュブロックに前記データ転送制御手段によって移動させ、この移動の後、前記取得されたワーク用キャッシュブロックにライトデータが格納されていないことを示すように、前記キャッシュブロック管理テーブルに保持されている対応する前記フラグ情報を書き換えると共に前記取得されたワーク用キャッシュブロックを開放する
ことを特徴とする請求項2記載のデータ記憶装置。
【請求項4】
キャッシュ管理手段は、前記データ記憶装置の電源の復帰時に、前記キャッシュブロック管理テーブルを参照して、マスター用キャッシュブロックに対応し、且つライトデータが格納されている状態にあるワーク用キャッシュブロックを検出し、検出されたワーク用キャッシュブロックに格納されているライトデータを、当該検出されたワーク用キャッシュブロックに対応する前記マスター用キャッシュブロックに前記データ転送制御手段によって移動させ、この移動の後、前記検出されたワーク用キャッシュブロックにライトデータが格納されていないことを示すように、前記キャッシュブロック管理テーブルに保持されている対応する前記フラグ情報を書き換えると共に前記検出されたワーク用キャッシュブロックを開放する
ことを特徴とする請求項3記載のデータ記憶装置。
【請求項5】
前記キャッシュ管理手段は、前記データ記憶装置の電源の復帰時に、前記キャッシュブロック管理テーブルを参照して、マスター用キャッシュブロックに対応し、且つライトデータが格納されていない状態にあるワーク用キャッシュブロックを検出し、検出されたワーク用キャッシュブロックを開放する
ことを特徴とする請求項4記載のデータ記憶装置。
【請求項6】
論理ディスクの記憶領域に割り当て可能な1つ以上のディスク装置と、ホストコンピュータからの前記論理ディスクへのアクセスを制御するコントローラであって、前記ホストコンピュータと前記コントローラとの間の転送データ及び前記コントローラと前記ディスク装置との間の転送データをキャッシュブロック単位に一時格納するキャッシュメモリ、キャッシュメモリ管理手段及びデータ転送制御手段を備えたコントローラとを具備するデータ記憶装置におけるキャッシュメモリ制御方法であって、
前記ホストコンピュータから転送されるライトデータが格納されるべきキャッシュブロックであるマスター用キャッシュブロックのライトアクセス範囲内に、前記ディスク装置に未保存の旧ライトデータが存在する場合に、前記キャッシュ管理手段が、前記マスタ用キャッシュブロックとは別のキャッシュブロックをワーク用キャッシュブロックとして前記キャッシュメモリから取得するステップと、
前記取得されたワーク用キャッシュブロックへ、前記データ転送制御手段が前記ライトデータを転送するステップと、
前記取得されたワーク用キャッシュブロックへの前記ライトデータの転送が完了した場合に、前記キャッシュメモリ管理手段が、前記マスター用キャッシュブロックをワーク用に、前記取得されたワーク用キャッシュブロックをマスター用にそれぞれ切り替え、前記ワーク用に切り替えられたキャッシュブロックを開放するステップと
を具備することを特徴とするキャッシュメモリ制御方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate

【図19】
image rotate

【図20】
image rotate


【公開番号】特開2012−14285(P2012−14285A)
【公開日】平成24年1月19日(2012.1.19)
【国際特許分類】
【出願番号】特願2010−148231(P2010−148231)
【出願日】平成22年6月29日(2010.6.29)
【出願人】(000003078)株式会社東芝 (54,554)
【出願人】(301063496)東芝ソリューション株式会社 (1,478)
【Fターム(参考)】