(57)【要約】【課題】１台以上のＨＤＤを備えてなるディスクシステム等のレスポンス性能を大幅なコストアップを招くことなく向上させることを実現したデータ記憶システムを提供する。【解決手段】本ディスクサブシステムは、制御部２１が、ホストシステム１から論理ＨＤＤ２２に格納されたデータの読み出しを要求された際、読み出し対象のデータが（論理ＨＤＤ２２よりも読み出し速度の速い）ＳＳＤ２３に格納されている場合、このＳＳＤ２３に格納されているデータを読み出してホストシステム１に転送し、読み出し対象のデータがＳＳＤ２３に格納されていない場合、当該読み出し対象のデータを論理ＨＤＤ２２から読み出してホストシステム１に転送すると共に、当該読み出したデータをＳＳＤ２３に格納しておくリード制御手段を備える。【選択図】図１
2010191672.tif 000002
【特許請求の範囲】
【請求項１】
１台以上の第１の記憶装置と、
第２の記憶装置と、
前記第１の記憶装置および前記第２の記憶装置を制御する制御装置と、
を具備し、
前記制御装置は、
前記第１の記憶装置に格納されたデータの読み出しを要求された際、読み出し対象のデータが前記第２の記憶装置に格納されている場合、前記第２の記憶装置に格納されているデータを読み出して要求元に転送し、読み出し対象のデータが前記第２の記憶装置に格納されていない場合、当該読み出し対象のデータを前記第１の記憶装置から読み出して要求元に転送すると共に、当該読み出したデータを前記第２の記憶装置に格納するリード制御手段を有する、
ことを特徴とするデータ記憶システム。
【請求項２】
前記制御装置は、前記第１の記憶装置に格納されたデータの読み出し時に指定されるアドレスを示すビット列中の所定の範囲に位置するビット列の値が一致するアドレスを１グループとして、各グループ毎に、読み出しを要求された時が時間的に近い順に所定数ずつ読み出し対象のデータが前記第２の記憶装置に格納されるように、前記第２の記憶装置内におけるデータの入れ替えを実行するデータ管理手段をさらに有することを特徴とする請求項１記載のデータ記憶システム。
【請求項３】
前記制御装置は、前記第１の記憶装置へのデータの書き込みを要求された際、この書き込み時に指定されるアドレスに対応するデータが前記第２の記憶装置に格納されていた場合、当該データの書き込みを前記第２の記憶装置に対して実行するライト制御手段をさらに有することを特徴とする請求項２記載のデータ記憶システム。
【請求項４】
前記制御装置の前記ライト制御手段は、前記書き込み時に指定されるアドレスに対応するデータが前記第２の記憶装置に格納されていない場合、当該書き込み時に指定されるアドレスから特定されるグループに属するデータの前記第２の記憶装置への格納数が所定数に達していなければ、当該書き込み対象データの書き込みを前記第２の記憶装置に対して実行することを特徴とする請求項３記載のデータ記憶システム。
【請求項５】
前記制御装置の前記ライト制御手段は、前記書き込み時に指定されるアドレスに対応するデータが前記第２の記憶装置に格納されておらず、かつ、当該書き込み時に指定されるアドレスから特定されるグループに属するデータの前記第２の記憶装置への格納数が所定数に達していた場合、当該グループに属するデータ内で読み出しを要求された時が時間的に最も遠いデータについて、書き込みデータを含んでいないかを調べ、書き込みデータを含んでいなければ、このデータと入れ替えるべく、当該書き込み対象データの書き込みを前記第２の記憶装置に対して実行することを特徴とする請求項３記載のデータ記憶システム。
【請求項６】
前記制御装置は、
前記第１の記憶装置内における記憶領域の使用単位である第１の単位を複数個まとめた第２の単位で前記第１の記憶装置へのデータの書き込みおよび前記第１の記憶装置からのデータの読み出しを実行し、
第２の記憶装置上に存在する前記第１の記憶装置上のデータについて、前記第２の単位ごとに、前記ライト制御手段によるデータの書き込み有無を前記第１の単位で示すビットマップ情報を管理するビットマップ管理手段をさらに有することを特徴とする請求項３、４または５記載のデータ記憶システム。
【請求項７】
前記リード制御手段は、読み出し時に指定されるアドレスに基づき前記第２の単位で読み出されるデータの一部が前記ライト制御手段によって前記第２の記憶装置に書き込まれている旨を前記ビットマップ管理手段が管理するビットマップ情報が示している場合、当該前記第２の記憶装置に書き込まれている一部のデータと前記第１の記憶装置に格納されているその他の部分のデータとを併合して要求元に転送することを特徴とする請求項６記載のデータ記憶システム。
【請求項８】
前記制御装置は、
前記ビットマップ情報の一部を格納可能なメモリをさらに有し、
前記ビットマップ管理手段は、前記ビットマップ情報全体を前記第２の記憶装置に格納し、かつ、読み出し時または書き込み時に指定されるアドレスを示すビット列中の所定の範囲に位置するビット列の値が一致するアドレスを１グループとして、各グループ毎に、読み出しを要求された時が時間的に近い順に所定数ずつ読み出し対象のデータに関するビットマップ情報の各部分が前記メモリに格納されるように、前記メモリ内におけるビットマップ情報の入れ替えを実行する、
ことを特徴とする請求項６記載のデータ記憶システム。
【請求項９】
前記制御装置は、前記第１の記憶装置からのデータの読み出しおよび前記第１の記憶装置へのデータの書き込みのいずれもが一定時間以上要求されなかった時、前記ライト制御手段によって前記第２の記憶装置に書き込まれたデータを前記第１の記憶装置に格納するライトバック手段をさらに有することを特徴とする請求項４または５記載のデータ記憶システム。
【請求項１０】
前記制御装置の前記ライトバック手段は、前記ライト制御手段による書き込み部分を含むデータの数が多いグループを優先して前記第１の記憶装置への格納を行っていくことを特徴とする請求項９記載のデータ記憶システム。
【請求項１１】
前記制御装置は、前記第２の記憶装置が備える記憶領域中の第１の領域を、前記第１の記憶装置からの読み出し対象データの格納領域として用い、前記第２の記憶装置が備える記憶領域中の第２の領域を、当該第２の記憶装置への書き込み対象データの格納領域として用いることを特徴とする請求項１記載のデータ記憶システム。
【請求項１２】
前記第１の記憶装置は、１以上の磁気ディスク装置によって構成され、
前記第２の記憶装置は、不揮発性半導体メモリ装置によって構成される、
ことを特徴とする請求項１記載のデータ記憶システム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、例えば１台以上のＨＤＤ（Hard Disk Drive）を備えてなるディスクシステム等に適用して好適なレスポンス性能の向上化技術に関する。
【背景技術】
【０００２】
近年、ノートブックタイプやデスクトップタイプ等、様々な種類のパーソナルコンピュータが広く利用されている。この種のパーソナルコンピュータの多くは、外部記憶装置としてＨＤＤを利用する。
【０００３】
また、最近では、ＨＤＤのレスポンス性能を向上させるために、ＨＤＤに不揮発性メモリを内蔵させ、不揮発性半導体メモリをキャッシュとして利用するといった、いわゆるハイブリッドＨＤＤに関する提案も種々なされている（例えば特許文献１等参照）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００３−１６７７８１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ところで、多数の社員がパーソナルコンピュータを各々使用して作業を進めるオフィス等においては、これらのパーソナルコンピュータを相互に接続するためのＬＡＮ（Local Area Network）を敷設することが一般的となっており、また、データの共有化やデータの一元管理化を目的として、大容量のディスクシステムを当該ＬＡＮ経由でアクセス可能に設置すること等も行われている。
【０００６】
ディスクシステムは、例えば複数台のＨＤＤを備えることによって、低コストで大容量化を実現している。もし、そのレスポンス性能を向上させるために、（各々がキャッシュとして不揮発性半導体メモリを内蔵する）ハイブリッドＨＤＤを通常のＨＤＤに代えて適用したならば、大幅なコストアップを招いてしまう。
【０００７】
この発明はこのような事情を考慮してなされたものであり、例えば１台以上のＨＤＤを備えてなるディスクシステム等のレスポンス性能を大幅なコストアップを招くことなく向上させることを実現したデータ記憶システムを提供することを目的とする。
【課題を解決するための手段】
【０００８】
前述した目的を達成するために、この発明のデータ記憶システムは、１台以上の第１の記憶装置と、第２の記憶装置と、前記第１の記憶装置および前記第２の記憶装置を制御する制御装置と、を具備し、前記制御装置は、前記第１の記憶装置に格納されたデータの読み出しを要求された際、読み出し対象のデータが前記第２の記憶装置に格納されている場合、前記第２の記憶装置に格納されているデータを読み出して要求元に転送し、読み出し対象のデータが前記第２の記憶装置に格納されていない場合、当該読み出し対象のデータを前記第１の記憶装置から読み出して要求元に転送すると共に、当該読み出したデータを前記第２の記憶装置に格納するリード制御手段を有する、ことを特徴とする。
【発明の効果】
【０００９】
この発明によれば、例えば１台以上のＨＤＤを備えてなるディスクシステム等のレスポンス性能を大幅なコストアップを招くことなく向上させることを実現できる。
【図面の簡単な説明】
【００１０】
【図１】本発明の第１実施形態に係るデータ記憶システム（ディスクサブシステム）の構成を示す図。
【図２】同第１実施形態のディスクサブシステムにおけるＳＳＤの記憶領域の論理的なアロケーション例を示す図。
【図３】同第１実施形態のディスクサブシステムにおいてＳＳＤ上に確保するキャッシュ領域の一例を示す図。
【図４】同第１実施形態のディスクサブシステムにおいてＳＳＤ上に確保する管理データ領域の一例を示す図。
【図５】同第１実施形態のディスクサブシステムにおいてＳＳＤ上に確保する管理データ領域内のビットマップの一例を示す図。
【図６】同第１実施形態のディスクサブシステムにおいてＳＳＤ上に確保する管理データ領域内のデータキャッシュディレクトリの一例を示す図。
【図７】同第１実施形態ののディスクサブシステムにおいてＳＳＤ上に確保する管理データ領域内のデータキャッシュディレクトリのEntireビットおよびDirtyビットの各組み合わせの意味を説明するための図。
【図８】同第１実施形態ののディスクサブシステムがホストシステムからリードコマンドを受け取った場合の動作手順を説明するための図。
【図９】同第１実施形態のディスクサブシステムがホストシステムからライトコマンドを受け取った場合の動作手順を説明するための図。
【図１０】同第１実施形態のディスクサブシステムにおいてＳＳＤ上に確保する管理データ領域内のビットマップキャッシュディレクトリの一例を示す図。
【発明を実施するための形態】
【００１１】
以下、図面を参照して、この発明の実施形態を説明する。
【００１２】
（第１実施形態）
図１は、本発明の第１実施形態に係るデータ記憶システムの構成を示す図である。本データ記憶システムは、ホストシステム１が利用するデータを大量に記憶するためのディスクサブシステム２として実現されている。ホストシステム１とディスクサブシステム２との接続形態は任意であり、例えばＬＡＮ（Local Area Network）を介して接続される環境下においては、複数のホストシステム１が存在しても良い。また、ホストシステム１とディスクサブシステム２とが同一のコンピュータ上に存在して、データバスを介して接続される形態も当然に考えられ得る。
【００１３】
図１に示すように、ディスクサブシステム２は、制御部２１、メモリ２１Ａ、複数の論理ＨＤＤ（hard Disk Drive）２２およびＳＳＤ（Solid State Drive）２３から構成されている。
【００１４】
制御部２１は、本ディスクサブシステム２の動作を制御する中枢部であり、ホストシステム１が発行する論理ＨＤＤ２２へのデータの書き込み要求（ライトコマンド）または論理ＨＤＤ２２からのデータの読み出し要求（リードコマンド）を受け付け、この要求された論理ＨＤＤ２２に対するデータアクセスを効率的に処理すべく、メモリ２１Ａ、論理ＨＤＤ２２およびＳＳＤ２３を駆動制御する。制御部２１は、ディスクサブシステム２がホストシステム１と外部接続される場合、例えばマイクロコントローラおよび制御プログラム等から構成され、ディスクサブシステム２がホストシステム１と同一のコンピュータ上に存在する場合には、例えばＢＩＯＳ（Basic Input/Output System）やデバイスドライバ等から構成される。
【００１５】
そして、本ディスクサブシステム２は、安価・低速な論理ＨＤＤ２２で大容量の記憶領域を構成しつつ、高速なＳＳＤ２３を、これら論理ＨＤＤ２２の共用キャッシュとして設置し、かつ、このＳＳＤ２３を共用キャッシュとして効率的に使用するための仕組みを当該制御部２１が備えることにより、大幅なコストアップを招くことなく、レスポンス性能を向上させることを実現したものであり、以下、この点について詳述する。
【００１６】
なお、メモリ２１Ａは、制御部２１が作業領域として使用する、各種データを一時的に格納するための例えばＤＲＡＭ等である。また、論理ＨＤＤ２２は、単体のＨＤＤや、複数のＨＤＤを並列接続して耐障害性を高めたＲＡＩＤ（Redundant Array of Inexpensive Disks）等である。ディスクサブシステム２内の論理ＨＤＤ２２として、単体のＨＤＤとＲＡＩＤとが混在していても構わない。ホストシステム１は、各論理ＨＤＤ２２を個別に認識して、それぞれに対するデータアクセス要求を本ディスクサブシステム２の制御部２１に対して発行する。そして、ＳＳＤ２３は、記憶部として不揮発性半導体メモリであるフラッシュメモリを搭載した記憶デバイスである。前述のように、本ディスクサブシステムは、このＳＳＤ２３を、論理ＨＤＤ２２の共用キャッシュとして使用すべく搭載するが、共用キャッシュとして割り当てる領域以外の余剰領域については、論理ＨＤＤ２２と同様に、１つの論理ドライブとして、ホストシステム１からのアクセス要求を受け付け可能としても良い。
【００１７】
図２は、本ディスクサブシステム２におけるＳＳＤ２３の記憶領域の論理的なアロケーション例を示す図である。
【００１８】
ここでは、ＳＳＤ２３が３２Ｇバイトの記憶容量を有するものと想定する。一方、論理ＨＤＤ２２の数は最大１６台とし、各々の容量は最大２Ｔバイトとする。また、制御部２１は、論理ＨＤＤ２２へのデータの書き込みおよび論理ＨＤＤ２２からのデータの読み出しを１２８Ｋバイト単位で実行する。以下、これをブロックサイズと称する。論理ＨＤＤ２２の使用単位であるセクタは５１２バイトであり、よって、１ブロックは２５６セクタとなる。この３２Ｇバイトの大きさを持つＳＳＤ２３の記憶領域を、制御部２１は、図２に示すように、キャッシュ領域ａ１、管理データ領域ａ２、余剰領域ａ３の３通りに使い分ける。
【００１９】
キャッシュ領域ａ１は、論理ＨＤＤ２２のデータの一部を保持する領域、つまり前述の共用キャッシュとして使用する領域である。ここでは、ＳＳＤ２３の全記憶容量中の半分である１６Ｇバイトを当該キャッシュ領域ａ１として割り当てるものとする。論理ＨＤＤ２２のデータは、ブロックサイズ単位で当該キャッシュ領域ａ１に保持される。換言すると、当該キャッシュ領域ａ１は、ブロックサイズごとの領域に分けられる。
【００２０】
また、管理データ領域ａ２は、キャッシュ領域ａ１上に存在する論理ＨＤＤ２２のデータの一部を管理するための各種管理データを保持する領域である。
【００２１】
そして、余剰領域ａ３は、ＳＳＤ２３上にキャッシュ領域ａ１，管理データ領域ａ２を確保し終えた後の残存領域であり、制御部２１は、この余剰領域ａ３を１つの論理ドライブとして、論理ＨＤＤ２２と同様に、当該論理ドライブに対するホストシステム１からのアクセス要求を受け付ける。
【００２２】
図３は、ＳＳＤ２３上に確保したキャッシュ領域ａ１の一例を示す図である。
【００２３】
前述したように、キャッシュ領域ａ１は、ブロックサイズ、つまり１２８Ｋバイトごとの領域に分けられている。そして、制御部２１は、論理ＨＤＤ２２のデータの一部を、このキャッシュ領域ａ１内に４ｗａｙセットアソシアティブ方式で格納する。より具体的に説明すると、本ディスクサブシステム２においては、論理ＨＤＤ２２の最大数は１６台であるので、論理ＨＤＤ２２の識別子は４ビットで表現できる。また、各論理ＨＤＤ２２の最大容量は２Ｔバイトであるので、各論理ＨＤＤ２２内のセクタ位置を示すＬＢＡ（Logical Block Address）は３２ビットで表現できる。よって、本ディスクサブシステム２全体内でのセクタ位置（セクタアドレス）は、上位４ビット＋下位３２ビットの３６ビットで表現できる。制御部２１は、この３６ビットのセクタアドレス中の２２−８桁の値が一致するアドレスを１グループとして、各グループ毎に４つずつ格納する。
【００２４】
そこで、制御部２１は、図３に示すように、キャッシュ領域ａ１上に、先頭から（ＥＡ：前述の３６ビットのセクタアドレス中の２２−８桁の値，ｗａｙ：０〜３）の並びで、（００００，０），（００００，１），…（７ＦＦＦ，３）の各キャッシュ領域を割り当てる。そして、制御部２１は、最近に読み出されたデータほど再び読み出される確率が高いことを前提として、各グループごとに、論理ＨＤＤ２２から読み出されたデータが最近に読み出された順に４つずつ当該キャッシュ領域ａ１上に格納されるように、当該キャッシュ領域ａ１内におけるデータの入れ替えを実行する。
【００２５】
なお、制御部２１は、ホストシステム１から論理ＨＤＤ２２への書き込みが要求されたデータについては、キャッシュ領域ａ１に空きがあれば（同一グループの他のデータのキャッシュ領域ａ１への格納数が４に達していなければ）、空きｗａｙを使ったキャッシュ領域ａ１への格納を実行する。また、空きがなければ、同一グループ内で最も過去に読み出された（最も格納優先度の低い）データが論理ＨＤＤ２２に未反映の書き込みデータを含まない場合に、このデータと入れ替えて、当該書き込み対象データをキャッシュ領域ａ１へ格納する。即ち、アクセス時間はライトデータの方が近くても、再アクセスの可能性の高いリードデータの方が優先的にキャッシュ領域ａ１上に存在することになる。
【００２６】
ＳＳＤ２３は、論理ＨＤＤ２２よりも高速であるので、レスポンス性能を向上させることができる。また、ＳＳＤ２３は、不揮発性の記憶デバイスであるので、例えば定期点検後などにディスクサブシステム２を起動した際、前回のディスクサブシステム２の停止時直前に読み出されていたデータが格納された状態にあるので、起動直後からレスポンス性能を向上させる作用が現れる。そして、１台を複数の論理ＨＤＤ２２の共用キャッシュとして適用するので、大幅なコストアップを招くことがない。
【００２７】
また、図４は、ＳＳＤ２３上に確保した管理データ領域ａ２の一例を示す図である。
【００２８】
ビットマップａ２１（以下、ＢＭと記することがある）は、キャッシュ領域ａ１に格納された論理ＨＤＤ２２のデータについて、ブロックごとに、ホストシステム１からの書き込み要求を要因として格納されたデータのセクタ位置を記憶しておくためのデータ群である。図５に、このビットマップａ１の一例を示す。
【００２９】
前述したように、本実施形態では、１ブロックは２５６セクタであるので、各ブロック内の書き込みセクタ位置を記憶するためには、２５６ビット、つまり、３２バイトの情報が必要となる。１セクタは５１２バイトであるので、１セクタに１６ブロック分のビットマップを保存できる。そこで、制御部２１は、キャッシュ領域ａ１に割り当てたブロックサイズの各キャッシュ領域と同じ並びで当該ビットマップを保存する。
【００３０】
制御部２１は、論理ＨＤＤ２２へのデータの書き込みおよび論理ＨＤＤ２２からのデータの読み出しをブロックサイズで実行する。よって、制御部２１は、ホストシステム１が発行した書き込み要求（ライトコマンド）をブロック単位に分割して、分割後のブロックごとに論理ＨＤＤ２２へのデータ書き込みを実行する。いま、ホストシステム１から書き込みを要求されたデータのサイズがブロックサイズの整数倍でない場合を考えると、最後はブロックサイズに満たないデータの書き込みを行う必要が生じる（書き込みを要求されたデータのサイズがブロックサイズに満たない場合も同様）。このような場合に備え、ビットマップを管理しておくことで、その後のキャッシュであるＳＳＤ２３から論理ＨＤＤ２２への反映時等に必要となるデータマージを実行することが可能となる。例えばホストシステム１がセクタ単位でのデータ書き込みを要求してきた場合、制御部２１は、この書き込みを、当該セクタを含むブロック単位の書き込みに変換し、内部的にはブロック単位での書き込みを実行するが、この場合も、ＳＳＤ２３にキャッシュされたブロックデータ内の当該セクタと論理ＨＤＤ２３に格納されたその他のセクタとのデータマージの際に当該ビットマップが利用される。
【００３１】
また、データキャッシュディレクトリａ２２（以下、ＤＣＤと記することがある）は、論理ＨＤＤ２２のデータの一部をＳＳＤ２３にキャッシュするために本ディスクサブシステム２が採用する４ｗａｙセットアソシアティブ方式のディレクトリである。図６は、このデータキャッシュディレクトリの一例を示す。
【００３２】
図６中、ＬＤは、論理ＨＤＤ２２の識別子である。本ディスクサブシステム２では、前述の通り４バイトあり、また、ＬＢＡは３２ビットである。そして、前述の通り、この上位４ビット＋下位３２ビットの３６ビットで本ディスクサブシステム２のセクタアドレスは構成される。このセクタアドレスの３５−２３桁をＦＡ（Frame Address）部、２２−８桁をＥＡ（Entry Address）部と定義する。
【００３３】
データキャッシュディレクトリａ２２は、ＥＡ分（行）×ｗａｙ分（列）のテーブルである。各ｗａｙフィールドは、ＦＡ、ＬＲＵ（Least Resently used）カウンタ、Entireビット、Dirtyビットから構成される。
【００３４】
ＦＡには、セクタアドレスのＦＡ部が格納される。よって、例えば読み出し対象データについて、セクタアドレスのＥＡ部を検索キーとしてディレクトリを参照し、同一ライン内のいずれかのｗａｙのＦＡがセクタアドレスのＦＡ部と一致しているときにヒット（ＳＳＤ２３上に存在する）、いずれにも一致しないときにミスヒット（ＳＳＤ２３上に存在しない）と判断することができる。
【００３５】
ＬＲＵカウンタは、初期値の０からｗａｙ数の値を取るカウンタ領域である。大きい値ほど最近に読み出しが行われたことを表す。
【００３６】
Entireビットは、ブロック全体がＳＳＤ２３に記録されているか否かを示す表すフラグ領域である。”１”が全体が存在、”０”が一部が存在、を示す。
【００３７】
Dirtyビットは、当該ブロック内に書き込みデータが存在するか否かを示すフラグ領域である。”１”が書き込みデータが存在、”０”が書き込みデータが不在、を示す。
【００３８】
このEntireビットとDirtyビットとによって、データキャッシュディレクトリａ２２にヒットしている時のブロックデータの所在は図７に示す通りであることが判明する。より具体的に説明すると、Entireビットが”０”で、Dirtyビットが”１”の場合、ＳＳＤ２３のデータの一部が最新で、この最新データの位置はビットマップに記録されている。Entireビットが”１”で、Dirtyビットが”０”の場合は、ＳＳＤ２３と論理ＨＤＤ２２とに同じデータが存在している。そして、EntireビットとDirtyビットの両方が”１”の場合は、ＳＳＤ２３のデータが最新で、論理ＨＤＤ２２のデータは古い。なお、Entireビットが”０”の場合、ブロック内の少なくとも一部に書き込みデータを含むので、Dirtyビットは必然的に”１”となるので、理論上、EntireビットとDirtyビットとの両方が”０”の組み合わせは存在しない。
【００３９】
以上の管理データ領域ａ２のビットマップａ２１およびデータキャッシュディレクトリａ２２は、本ディスクサブシステム２の起動時に制御部２１が管理するメモリ２１Ａに展開され、本ディスクサブシステム２のシャットダウン時等の所定のタイミングで書き戻される。
【００４０】
次に、本ディスクサブシステム２の制御部２１が実行する、ＳＳＤ２３を共用キャッシュとして用いた論理ＨＤＤ２２からのデータ読み出し時／論理ＨＤＤ２２へのデータ書き込み時の動作原理を説明する。
【００４１】
まず、図６および図８を参照しながら、ホストシステム１からリードコマンドを受け取った場合の動作手順を説明する。
【００４２】
ホストシステム１からデータのリードコマンドを受け取ると、制御部２１は、このリードコマンドをブロック単位に分割し、分割後のブロックごとにデータの読み出し処理を実行する。
【００４３】
この分割後のブロックごとのデータの読み出し処理において、制御部２１は、まず、セクタアドレスのＥＡ部とＦＡ部とを使って、データキャッシュディレクトリａ２２上でのヒット有無、つまり、読み出し対象ブロックがＳＳＤ２３のキャッシュ領域ａ１に存在するか否かを調べる。
【００４４】
ヒットしていたら、制御部２１は、今度は、読み出し対象ブロックを保持するｗａｙのEntireビットが”１”か否かを調べる。もし、Entireビットが”１”であれば（ケースＲ１）は、制御部２１は、ＳＳＤ２３のキャッシュ領域ａ１に存在するブロックデータを読み出して、読み出し対象データを取得する。この時、制御部２１は、後処理として、当該ｗａｙのＬＲＵカウンタを最大値にし、更新前の値よりも大きい値を持つ他のｗａｙのＬＲＵカウンタの値を１ずつデクリメントする。この操作により、ＬＲＵカウンタは、時間的に近い順に４→３→２→１の値または初期値の０が保持されることになる。
【００４５】
Entireビットが”０”であった場合、制御部２１は、続いて、当該ブロックデータに対応するビットマップａ２１を参照し、すべてが書き込みセクタで占められているか、つまり、全データがＳＳＤ２３のキャッシュ領域ａ１に存在するかを調べる。もし、全データがＳＳＤ２３のキャッシュ領域ａ１に存在すれば（ケースＲ２）、制御部２１は、ＳＳＤ２３のキャッシュ領域ａ１に存在するブロックデータを読み出して、読み出し対象データを取得する。この時も、制御部２１は、前述の後処理としてのＬＲＵカウンタの更新を実行する。
【００４６】
一方、Entireビットが”０”であって、全データがＳＳＤ２３のキャッシュ領域ａ１に存在しない場合（ケースＲ３）、制御部２１は、ＳＳＤ２３のキャッシュ領域ａ１および論理ＨＤＤ２２の双方から読み出し対象ブロックのデータを読み出し、ビットマップａ２１に基づき、データマージを行って最新の状態のブロックデータを形成して、読み出し対象データを取得する。そして、制御部２１は、ＳＳＤ２３のキャッシュ領域ａ１に格納されていたブロックデータを、当該形成した最新の状態のブロックデータに更新すべく当該ＳＳＤ２３のキャッシュ領域ａ１への書き込みを実行する。この時、制御部２１は、前述のＬＲＵカウンタの更新に加えて、当該ｗａｙのEntireビットを”１”にする処理を後処理として実行する。
【００４７】
また、読み出し対象ブロックがＳＳＤ２３のキャッシュ領域ａ１に存在しない場合、つまり、データキャッシュディレクトリａ２２上でヒットしなかった場合（ケースＲ４）、制御部２１は、論理ＨＤＤ２２からの読み出しを行うことにより、読み出し対象データを取得する。制御部２１は、この読み出したブロックデータのＳＳＤ２３のキャッシュ領域ａ１への書き込みを併せて実行する。
【００４８】
この書き込みは、同一グループ内に空きｗａｙが存在すれば、当該ｗａｙに対して実行する。また、空きｗａｙが存在しなければ、ＬＲＵカウンタの値が最も小さいｗａｙのデータと入れ替えるべく実行する。入れ替え対象のｗａｙのDirtyビットが”１”であったならば、このデータの論理ＨＤＤ２２への反映を行った後に実行する。この際、Entireビットが”０”であったならば、ビットマップａ２１を参照しながらデータマージを実行する。論理ＨＤＤ２２への反映を終了させた時、制御部２１は、Entireビット、Dirtyビット、ビットマップａ２１の該当箇所の初期化をそれぞれ実行する。
【００４９】
そして、（ケースＲ４の場合の）後処理として、制御部２１は、当該ｗａｙのＬＲＵカウンタの値を最大値にし、その他のｗａｙのＬＲＵカウンタの値を１ずつデクリメントする処理と共に、Entireビットを”１”に設定する処理を実行する。
【００５０】
続いて、図６および図９を参照しながら、ホストシステム１からライトコマンドを受け取った場合の動作手順を説明する。
【００５１】
ホストシステム１からデータのリードコマンドを受け取ると、制御部２１は、このリードコマンドをブロック単位に分割し、分割後のブロックごとにデータの書き込み処理を実行する。
【００５２】
この分割後のブロックごとのデータの書き込み処理において、制御部２１は、まず、セクタアドレスのＥＡ部とＦＡ部とを使って、データキャッシュディレクトリａ２２上でのヒット有無、つまり、書き込み対象ブロックがＳＳＤ２３のキャッシュ領域ａ１に存在するか否かを調べる。
【００５３】
ヒットしていたら、制御部２１は、今度は、この書き込みがブロックサイズ、つまり２５６セクタ分のものか否かを調べる。もし、ブロック単位の書き込みであれば（ケースＷ１）、制御部２１は、ＳＳＤ２３のキャッシュ領域ａ１に存在するブロックデータ上に当該書き込み対象データを上書きすべくＳＳＤ２３に対する書き込みを実行する。この時、制御部２１は、後処理として、Entireビット、Dirtyビットを”１”にし、必要であればビットマップａ２１の該当箇所の初期化を実行する。書き込みが２５６セクタ未満のものであった場合には（ケースＷ２）、後処理として、さらに書き込みセクタの位置を記憶しておくためのビットマップの更新を実行する。
【００５４】
一方、書き込み対象ブロックがＳＳＤ２３のキャッシュ領域ａ１に存在しない場合、つまり、データキャッシュディレクトリａ２２上でヒットしなかった場合、制御部２１は、同一グループ内に空きｗａｙが存在するか否か、および、空きｗａｙが存在しない場合にはＬＲＵカウンタの値が最も小さいｗａｙのDirtyビットが”０”か否かを調べる。
【００５５】
同一グループ内に空きｗａｙが存在した場合、または、ＬＲＵカウンタの値が最も小さいｗａｙのDirtyビットが”０”だった場合、制御部２１は、その書き込みがブロック単位のものであれば（ケースＷ３）、当該書き込み対象データを空きｗａｙまたはＬＲＵカウンタの値が最も小さいｗａｙに格納し、後処理として、当該ｗａｙのEntireビット、Dirtyビットを”１”にする。また、書き込みが２５６セクタ未満のものであった場合には（ケースＷ４）、後処理として、さらに書き込みセクタの位置を記憶しておくためのビットマップの更新を実行する。
【００５６】
同一グループ内に空きｗａｙが存在せず、かつ、ＬＲＵカウンタの値が最も小さいｗａｙのDirtyビットが”１”だった場合には（ケースＷ５）、制御部２１は、当該書き込み対象データのＳＳＤ２３によるキャッシングは行わず、論理ＨＤＤ２３への書き込みを実行する。
【００５７】
また、制御部２１は、ホストシステム１からリードコマンドを受け取った場合、およびライトコマンドを受け取った場合のほか、ホストシステム１が一定時間以上コマンドを発生させなかった場合に、データキャッシュディレクトリａ２２内のDirtyビットが”１”のブロックデータを論理ＨＤＤ２２に反映させ、ＳＳＤ２３のキャッシュ領域ａ１と論理ＨＤＤ２２とを同じ状態とするライトバック処理をデータキャッシュディレクトリａ２２のライン単位に実行する。このライトバック処理は、Spread First方式で実行する。即ち、データキャッシュディレクトリａ２２内の各ライン間で、Dirtyビットが”１”の数が均等になるような順番で進めていく。１ライン分のライトバック処理中、ホストシステム１からコマンドが送られて来なかった場合に、制御部２１は、引き続き、このライトバック処理を継続する。
【００５８】
以上のように、本ディスクサブシステム１においては、制御部２１が、データキャッシュディレクトリａ２２、ビットマップａ２１を使って、ＳＳＤ２３のキャッシュ領域ａ１を管理することによって、複数台の低速な論理ＨＤＤ２２からのデータの読み出しを、高い確率で、１台の高速のＳＳＤ２３からの読み出しで代替することを可能とし、レスポンス性能を大幅なコストアップを招くことなく向上させることを実現する。
【００５９】
（第２実施形態）
次に、本発明の第２実施形態について説明する。
【００６０】
前述した第１実施形態では、制御部２１が、本ディスクサブシステム２の起動時に、ＳＳＤ２３の管理データ領域ａ２に保持されるビットマップａ２１を、自身が管理するメモリ２１Ａに展開することを前提とした。
【００６１】
ビットマップａ２１は、ＳＳＤ２３上に確保するキャッシュ領域ａ１が１６Ｇバイトの場合、４Ｍバイトという膨大なテーブルとなる。よって、大容量のメモリ２１Ａを搭載しなければならなくなる。そこで、本第２実施形態では、このビットマップａ２１のすべてをメモリ２１Ａに展開するのではなく、さらに当該ビットマップａ２１についても、４ｗａｙセットアソシアティブ方式で、その一部をメモリ２１Ａにキャッシュすることによって、メモリ２１Ａの必要容量を低減し、さらなるコストダウンを実現する。
【００６２】
図１０は、ビットマップａ２１の一部をメモリ２１Ａにキャッシュするためのビットマップキャッシュディレクトリの一例を示す図である。このビットマップキャッシュディレクトリは、図４に示した管理データ領域ａ２のその他の管理データとしてＳＳＤ２３に格納され、第１実施形態におけるビットマップａ２１に代えて、データキャッシュディレクトリａ２２と共に、本ディスクサブシステム２の起動時にメモリ２１Ａに展開され、本ディスクサブシステム２のシャットダウン時等の所定のタイミングで書き戻される。
【００６３】
本実施形態のディスクサブシステム２においては、ＬＤ４ビットとＬＢＡ３２ビットとを繋ぎ合わせた３６ビットのセクタアドレスの２２−１９桁をＢＭＦＡ（Bit Map Frame Address）部、１８−１３桁をＢＭＥＡ（Bit Map Entry Address）部と定義する。ビットマップキャッシュディレクトリは、ＢＭＥＡ分（行）×ｗａｙ分（列）のテーブルである。各ｗａｙフィールドは、ＢＭＦＡ、ＬＲＵカウンタ、Dirtyビットから構成される。
【００６４】
ＢＭＦＡには、セクタアドレスのＢＭＦＡ部が格納される。よって、例えば読み出し対象データに関するビットマップついて、セクタアドレスのＢＭＥＡ部を検索キーとしてディレクトリを参照し、同一ライン内のいずれかのｗａｙのＢＭＦＡがセクタアドレスのＢＭＦＡ部と一致しているときにヒット（メモリ２１Ａ上に存在する）、いずれにも一致しないときにミスヒット（メモリ２１Ａ上に存在しない）と判断することができる。
【００６５】
ＬＲＵカウンタは、初期値の０からｗａｙ数の値を取るカウンタ領域である。大きい値ほど最近にキャッシュされたことを表す。
【００６６】
Dirtyビットは、当該ビットマップが書き込みデータの位置情報を有するか否かを示すフラグ領域である。”１”が書き込みデータの位置情報が存在、”０”が書き込みデータの位置情報が不在、を示す。
【００６７】
次に、本第２実施形態の制御部２１が実行する、ビットマップａ２１のキャッシュ処理について説明する。
【００６８】
制御部２１は、セクタアドレスのＢＭＥＡ部とＢＭＦＡ部とを使って、ビットマップキャッシュディレクトリ上でのヒット有無、つまりアクセス対象のビットマップ部分がメモリ２１Ａ上に存在するか否かを調べる。
【００６９】
ヒットしていたら、制御部２１は、メモリ２１Ａ上に存在するビットマップ部分を使用する。もし、このビットマップ部分について更新を行った場合、制御部２１は、Dirtyビットを”１”にする。また、この時、制御部２１は、データキャッシュディレクトリａ２２の場合と同様、後処理として、当該ｗａｙのＬＲＵカウンタを最大値にし、更新前の値よりも大きい値を持つ他のｗａｙのＬＲＵカウンタの値を１ずつデクリメントする。この操作により、ＬＲＵカウンタは、時間的に近い順に４→３→２→１の値または初期値の０が保持されることになる。
【００７０】
一方、ヒットしていなかった場合、制御部２１は、同一グループ内に空きｗａｙが存在すれば、アクセス対象のビットマップ部分をＳＳＤ２３から読み出して、当該空きｗａｙに格納する。また、空きｗａｙが存在しなければ、ＬＲＵカウンタの値が最も小さいｗａｙのビットマップ部分との入れ替えを実行する。この時、入れ替え対象のｗａｙのDirtyビットが”１”であったならば、入れ替え前のビットマップ部分のＳＳＤ２３への書き戻しを実行し、そのDirtyビットを初期化する。Dirtyビットが”１”でなければ、この書き戻しを行う必要はない。そして、制御部２１は、後処理として、前述のＬＲＵカウンタの更新を実行する。
【００７１】
このような手順で、ビットマップａ２１の一部をメモリ２１Ａ上にキャッシュする本第２実施形態のディスクサブシステムにおいては、４Ｍバイトのビットマップａ２１を約１Ｍバイトの作業領域で利用可能となるので、メモリ２１Ａの必要容量を低減でき、さらなるコストダウンを実現することができる。
【００７２】
以上のように、本ディスクサブシステム２によれば、例えば１台以上のＨＤＤを備えてなるディスクシステム等のレスポンス性能を大幅なコストアップを招くことなく向上させることが実現される。
【００７３】
なお、本発明は、上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合わせにより種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。更に、異なる実施形態に構成要素を適宜組み合わせてもよい。
【符号の説明】
【００７４】
１…ホストシステム、２…ディスクサブシステム、２１…制御部、２１Ａ…メモリ、２２…論理ＨＤＤ、２３…ＳＳＤ。
【図１】
2010191672.tif 000003
【図２】
2010191672.tif 000004
【図３】
2010191672.tif 000005
【図４】
2010191672.tif 000006
【図５】
2010191672.tif 000007
【図６】
2010191672.tif 000008
【図７】
2010191672.tif 000009
【図８】
2010191672.tif 000010
【図９】
2010191672.tif 000011
【図１０】
2010191672.tif 000012