(57)【特許請求の範囲】
【請求項１】
所定のブロックサイズをもつブロックデータを所定数蓄積する書き込みバッファと少なくとも一つ以上のディスク装置とを備え、前記書き込みバッファに蓄積された所定数のブロックデータを一括して前記ディスク装置に書き込むデータ記憶装置において、
前記ブロックデータを所定数蓄積する読み出しバッファと、
読み出しリクエスト処理時、この読み出しリクエストのサイズが前記所定のブロックサイズ未満か否かを判定し、前記所定のブロックサイズ未満であった場合、前記ディスク装置から読み出した、前記読み出しリクエストで指定された読み出し対象領域を包含するブロックデータを前記読み出しバッファに格納するデータ管理手段と、
を具備することを特徴とするデータ記憶装置。
【請求項２】
所定のブロックサイズをもつブロックデータを所定数蓄積する書き込みバッファと少なくとも一つ以上のディスク装置とを備え、前記書き込みバッファに蓄積された所定数のブロックデータを一括して前記ディスク装置に書き込むデータ記憶装置において、
前記ブロックデータを所定数蓄積する読み出しバッファと、
更新リクエスト処理時、この更新リクエストのサイズが前記所定のブロックサイズ未満か否かを判定し、前記所定のブロックサイズ未満であった場合、前記更新リクエストで更新されたブロックデータを前記読み出しバッファに格納するデータ管理手段と、
を具備することを特徴とするデータ記憶装置。
【請求項３】
所定のブロックサイズをもつブロックデータを所定数蓄積する書き込みバッファと少なくとも一つ以上のディスク装置とを備え、前記書き込みバッファに蓄積された所定数のブロックデータを一括して前記ディスク装置に書き込むデータ記憶装置において、
前記ブロックデータを所定数蓄積する読み出しバッファと、
読み出しリクエスト処理時、このリクエストで読み出されたブロックデータについての最後の更新が前記所定のブロックサイズ未満であったか否かを判定し、前記所定のブロックサイズ未満であった場合、前記読み出されたブロックデータを前記読み出しバッファへ格納するデータ管理手段と、
を具備することを特徴とするデータ記憶装置。
【請求項４】
所定のブロックサイズをもつブロックデータを所定数蓄積する書き込みバッファと少なくとも一つ以上のディスク装置とを備え、前記書き込みバッファに蓄積された所定数のブロックデータを一括して前記ディスク装置に書き込むデータ記憶装置において、
前記ブロックデータを所定数蓄積する読み出しバッファと、
読み出しリクエスト処理時、このリクエストで読み出されたブロックデータが過去に前記所定のブロックサイズ未満で更新されたことがあるか否かを判定し、過去に前記所定のブロックサイズ未満で更新されたことがあった場合、前記読み出されたブロックデータを前記読み出しバッファへ格納するデータ管理手段と、
を具備することを特徴とするデータ記憶装置。
【請求項５】
前記データ管理手段は、ブロックサイズ未満での更新有無を判定するためのフラグを前記ブロックデータごとに管理する請求項４記載のデータ記憶装置。
【請求項６】
前記データ管理手段は、ブロックサイズ未満での更新処理が発生したブロックデータの論理アドレスまたは物理アドレスを管理する請求項４記載のデータ記憶装置。
【請求項７】
所定のブロックサイズをもつブロックデータを所定数蓄積する書き込みバッファと、前記ブロックデータを所定数蓄積する読み出しバッファと、少なくとも一つ以上のディスク装置とを備え、前記書き込みバッファに蓄積された所定数のブロックデータを一括して前記ディスク装置に書き込むデータ記憶装置のデータ管理方法であって、
読み出しリクエスト処理時、この読み出しリクエストのサイズが前記所定のブロックサイズ未満か否かを判定し、前記所定のブロックサイズ未満であった場合、前記ディスク装置から読み出した、前記読み出しリクエストで指定された読み出し対象領域を包含するブロックデータを前記読み出しバッファに格納することを特徴とするデータ管理方法。
【請求項８】
所定のブロックサイズをもつブロックデータを所定数蓄積する書き込みバッファと、前記ブロックデータを所定数蓄積する読み出しバッファと、少なくとも一つ以上のディスク装置とを備え、前記書き込みバッファに蓄積された所定数のブロックデータを一括して前記ディスク装置に書き込むデータ記憶装置のデータ管理方法であって、
更新リクエスト処理時、この更新リクエストのサイズが前記所定のブロックサイズ未満か否かを判定し、前記所定のブロックサイズ未満であった場合、前記更新リクエストで更新されたブロックデータを前記読み出しバッファに格納することを特徴とするデータ管理方法。
【請求項９】
所定のブロックサイズをもつブロックデータを所定数蓄積する書き込みバッファと、前記ブロックデータを所定数蓄積する読み出しバッファと、少なくとも一つ以上のディスク装置とを備え、前記書き込みバッファに蓄積された所定数のブロックデータを一括して前記ディスク装置に書き込むデータ記憶装置のデータ管理方法であって、
読み出しリクエスト処理時、このリクエストで読み出されたブロックデータについての最後の更新が前記所定のブロックサイズ未満であったか否かを判定し、前記所定のブロックサイズ未満であった場合、前記読み出されたブロックデータを前記読み出しバッファへ格納することを特徴とするデータ管理方法。
【請求項１０】
所定のブロックサイズをもつブロックデータを所定数蓄積する書き込みバッファと、前記ブロックデータを所定数蓄積する読み出しバッファと、少なくとも一つ以上のディスク装置とを備え、前記書き込みバッファに蓄積された所定数のブロックデータを一括して前記ディスク装置に書き込むデータ記憶装置のデータ管理方法であって、
読み出しリクエスト処理時、このリクエストで読み出されたブロックデータが過去に前記所定のブロックサイズ未満で更新されたことがあるか否かを判定し、過去に前記所定のブロックサイズ未満で更新されたことがあった場合、前記読み出されたブロックデータを前記読み出しバッファへ格納することを特徴とするデータ管理方法。
【請求項１１】
所定のブロックサイズをもつブロックデータを所定数蓄積する書き込みバッファと、前記ブロックデータを所定数蓄積する読み出しバッファと、少なくとも一つ以上のディスク装置とを備え、前記書き込みバッファに蓄積された所定数のブロックデータを一括して前記ディスク装置に書き込むデータ記憶装置のデータ管理方法であって、
前記所定のブロックサイズ未満での更新有無を判定するためのフラグを前記ブロックデータごとに管理し、
読み出しリクエスト処理時、このリクエストで読み出されたブロックデータが過去に前記所定のブロックサイズ未満で更新されたことがあるか否かを前記管理するフラグにより判定し、過去に前記所定のブロックサイズ未満で更新されたことがあった場合、前記読み出されたブロックデータを前記読み出しバッファへ格納することを特徴とするデータ管理方法。
【請求項１２】
所定のブロックサイズをもつブロックデータを所定数蓄積する書き込みバッファと、前記ブロックデータを所定数蓄積する読み出しバッファと、少なくとも一つ以上のディスク装置とを備え、前記書き込みバッファに蓄積された所定数のブロックデータを一括して前記ディスク装置に書き込むデータ記憶装置のデータ管理方法であって、
前記所定のブロックサイズ未満での更新処理が発生したブロックデータの論理アドレスまたは物理アドレスを管理し、
読み出しリクエスト処理時、このリクエストで読み出されたブロックデータが過去に前記所定のブロックサイズ未満で更新されたことがあるか否かを前記管理する論理アドレスまたは物理アドレスにより判定し、過去に前記所定のブロックサイズ未満で更新されたことがあった場合、前記読み出されたブロックデータを前記読み出しバッファへ格納することを特徴とするデータ管理方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、所定のブロックサイズをもつブロックデータを所定数蓄積する書き込みバッファと少なくとも一つ以上のディスク装置とを備え、この書き込みバッファに蓄積された所定数のブロックデータを一括してディスク装置に書き込むデータ記憶装置および同装置に適用されるデータ管理方法に係り、特に、ブロックサイズ未満の更新リクエスト処理時の性能低下を軽減することのできるデータ記憶装置および同装置に適用されるデータ管理方法に関する。
【０００２】
【従来の技術】
近年、情報の電子化が急速に進んでおり、文書や図形のみならず、音声、静止画像および動画像などといった様々な情報が電子化されて利用されている。そして、この急速な情報の電子化に伴なって、高速かつ大容量のデータ記憶装置が種々開発されてきており、その中の一つとして、書き込みリクエストされたブロックデータを所定数蓄積し、この蓄積したブロックデータを元の書き込みリクエストアドレスとは無関係に一括してディスク装置に書き込むとともに、元のリクエストのアドレス（論理アドレス）と実際に書き込んだアドレス（物理アドレス）との対応をアドレス変換テーブルにより管理するといったデータ記憶装置が存在する。
【０００３】
このデータ記憶装置では、蓄積した複数のブロックデータを一括してディスク装置に書き込むことから、ディスク装置に対する処理要求の発生を抑えることができるため、高速な書き込み処理能力を提供することが可能となる。
【０００４】
以下、図面を参照してこのデータ記憶装置における読み出し処理および書き込み処理の動作原理を説明する。図８には、このデータ記憶装置２０の概略構成が示されている。
【０００５】
図８に示すように、このデータ記憶装置２０は、アドレス変換テーブル２３を備えている。このデータ記憶装置２０では、ホストシステム１０側に提供する記憶空間をブロックと称する固定長の記憶単位で分割する。なお、このホストシステム１０側に提供する記憶空間と、実際にデータを格納するディスク装置２４が提供する記憶空間とは固定で対応づけられるものではなく、ディスク領域への書き込み時に動的に決定されるものである。そして、この対応を管理するためのテーブルがアドレス変換テーブル２３である。
【０００６】
なお、以降の説明においては、このデータ記憶装置２０がホストシステム１０側に提供する記憶空間を論理記憶空間と、また、この論理記憶空間を参照するためのアドレス情報を論理アドレスと表現する。さらに、ディスク装置２４が提供する記憶空間を物理記憶空間と、また、この物理記憶空間を参照するためのアドレス情報を物理アドレスと表現する。
【０００７】
図９に、アドレス変換テーブル２３の構成を示す。アドレス変換テーブル２３は、論理アドレスに対応する物理アドレスを格納する。そして、このアドレス変換テーブル２３のエントリを各ブロックの先頭論理アドレスごとに与えることにより、このアドレス変換テーブル２３を論理アドレスで参照するのみで該当ブロックが収められているディスク装置の物理アドレスを得ることを可能とする。
【０００８】
ここで、このデータ記憶装置２０の書き込みバッファ２２およびディスク装置２４への書き込みについて説明する。
書き込みバッファ２２は、書き込みリクエストされたデータを蓄積するための記憶領域である。この書き込みバッファ２２は、固定長の記憶領域であり、その内部は論理的にブロックサイズ単位に分割されている。また、この書き込みバッファ２２は、自身が格納する各ブロックデータの論理アドレスを保持する。
【０００９】
制御部２１は、ホストシステム１０から書き込みリクエストされたデータをブロックサイズ単位に分割し、分割されたブロックサイズのデータを書き込みバッファ２２の空き領域に格納するとともに、対応する論理アドレスも格納する。なお、このときの書き込みリクエスト処理は、書き込みデータが書き込みバッファ２２に格納された時点で完了する。
【００１０】
また、制御部２１は、格納されたデータブロックの数が書き込みバッファに格納可能なブロック数に達した時点で、書き込み先である物理記憶空間の割り当てを行ない、その書き込みバッファ２２の内容を一括してディスク装置２４へ書き込む。なお、書き込み先の物理記憶空間の割り当て処理の詳細については、本発明の範囲外であるので省略する。
【００１１】
そして、このディスク装置２４への書き込み完了後、制御部２１は、アドレス変換テーブル２３を更新する。この処理は、ディスク装置２４へ書き込まれたデータブロックであって、書き込みバッファ２２中に存在する各データブロックについて、該当データブロックが書き込まれた物理アドレスを、書き込みを行なったディスクの先頭物理アドレスと該当データブロックの書き込みバッファ２２内での位置とから求め、アドレス変換テーブル２３を該当ブロックに対応する論理アドレスで参照し、そのエントリに求めた物理アドレスを登録する。
【００１２】
次に、このデータ記憶装置２０の書き込みバッファ２２およびディスク装置２４からの読み出しについて説明する。
読み出し処理において、制御部２１は、まず、該当データが書き込みバッファ２２中に存在するか否かを検査する。この検査は、書き込みバッファ２２中の各ブロックデータの論理アドレスから実施することができる。そして、該当データが書き込みバッファ２２中に存在する場合、制御部２１は、そのデータをリクエストで指定されたサイズでホストシステム１０に転送することにより、この読み出しリクエスト処理を完了する。
【００１３】
一方、該当データが書き込みバッファ２２中に存在しない場合には、制御部２１は、読み出しリクエストで指定された読み出し論理アドレスを、まず、ブロック境界に補正し、この補正した読み出し論理アドレスでアドレス変換テーブル２３を参照することにより、該当データを含むデータブロックが格納されている物理アドレスを求める。この後、制御部２１は、この物理アドレスからリクエストで指定されたサイズのデータをディスク装置２４から読み出し、これをホストシステム１０に転送することにより、この読み出しリクエストを完了する。
【００１４】
【発明が解決しようとする課題】
ここで、前述したデータ記憶装置２０がブロックサイズ未満の書き込みリクエストを処理する場合について考える。
前述したデータ記憶装置２０において、ブロックサイズに満たないサイズでのデータ更新リクエスト処理時における書き込みバッファ２２への蓄積処理については、一般的には以下のような手順が考えられる。
（１）書き込みリクエストで指定される更新対象データ領域を包含するブロックをディスク装置２４から読み出す。
（２）読み出したブロックを書き込みバッファ２２の空き領域に蓄積する。
（３）書き込みバッファ２２の空き領域に蓄積したブロックサイズのデータの更新対象領域に更新データを上書きする。
【００１５】
すなわち、このような処理により、ブロックサイズに満たない更新の際、データブロック中で更新対象とならない部分を現在のデータを読み出すことによって補完していた。
【００１６】
しかしながら、このような処理は、ディスク装置２４からの読み出し処理を伴なうため、ブロックサイズと一致するサイズでの更新処理に比べてより多くの時間を要することになる。このため、ブロックサイズ未満の書き込みアクセスの頻度が大きくなると、データ記憶装置２０の性能を低下させてしまうといった問題があった。
【００１７】
この発明はこのような実情に鑑みてなされたものであり、書き込みブロックデータを所定数蓄積し、この蓄積したブロックデータを一括してディスク装置に書き込むデータ記憶装置であって、ブロックサイズ未満の更新リクエスト処理の性能低下を軽減することのできるデータ記憶装置および同装置に適用されるデータ管理方法を提供することを目的とする。
【００２０】
【課題を解決するための手段】
前述した目的を達成するために、この発明は、既存の書き込みバッファとは別にブロックデータを所定数蓄積する読み出しバッファを新たに設け、ブロックサイズ未満の読み出しリクエスト処理時に、このリクエストで指定された読み出し対象領域を包含するブロックデータを読み出しバッファに格納しておくようにしたものである。
【００２１】
この発明は、ブロックサイズ未満で読み出されたデータは、同一サイズ、すなわちブロックサイズ未満で更新される可能性が高いといったことを前提とするものであり、ブロックサイズ未満で更新される可能性の高いデータを包含するブロックデータを読み出しバッファに格納しておくことにより、ブロックサイズに満たない更新リクエスト処理時のディスクアクセスを減らすことを実現し、データ記憶装置の性能低下を軽減させることを可能とする。
【００２２】
また、この発明は、ブロックサイズ未満の更新リクエスト処理時に、このリクエストで更新されたブロックデータを前記読み出しバッファに格納しておくようにしたものである。
【００２３】
この発明もまた、ブロックサイズ未満で更新されたデータは、同一サイズ、すなわちブロックサイズ未満で再度更新される可能性が高いといったことを前提とするものであり、ブロックサイズ未満で更新される可能性の高いデータを包含するブロックデータを読み出しバッファに格納しておくことにより、前述と同様、ブロックサイズに満たない更新リクエスト処理時のディスクアクセスを減らすことを実現し、データ記憶装置の性能低下を軽減させることを可能とする。
【００２４】
また、この発明は、ブロックサイズ未満での更新有無を判定するためのフラグを前記ブロックデータごとに管理し、読み出しリクエスト処理時に、このリクエストで読み出されたブロックデータが過去にブロックサイズ未満で更新されたことがあるか否かを前記管理するフラグにより判定し、過去にブロックサイズ未満で更新されたことのあるデータブロックであると判定したときに、そのブロックデータを前記読み出しバッファに格納しておくようにしたものである。
【００２５】
この発明もまた、過去にブロックサイズ未満で更新されたデータは、同一サイズ、すなわちブロックサイズ未満で再度更新される可能性が高いといったことを前提とするものであり、ブロックサイズ未満で更新される可能性の高いデータを包含するブロックデータを読み出しバッファに格納しておくことにより、前述と同様、ブロックサイズに満たない更新リクエスト処理時のディスクアクセスを減らすことを実現し、データ記憶装置の性能低下を軽減させることを可能とする。
【００２６】
また、この発明は、ブロックサイズ未満での更新処理が発生したブロックデータの論理アドレスまたは物理アドレスを管理し、読み出しリクエスト処理時に、このリクエストで読み出されたブロックデータが過去にブロックサイズ未満で更新されたことがあるか否かを前記管理する論理アドレスまたは物理アドレスにより判定し、過去にブロックサイズ未満で更新されたことのあるデータブロックであると判定したときに、そのブロックデータを前記読み出しバッファに格納しておくようにしたものである。
【００２７】
この発明もまた、過去にブロックサイズ未満で更新されたデータは、同一サイズ、すなわちブロックサイズ未満で再度更新される可能性が高いといったことを前提とするものであり、ブロックサイズ未満で更新される可能性の高いデータを包含するブロックデータを読み出しバッファに格納しておくことにより、前述と同様、ブロックサイズに満たない更新リクエスト処理時のディスクアクセスを減らすことを実現し、データ記憶装置の性能低下を軽減させることを可能とする。
【００２８】
【発明の実施の形態】
以下、図面を参照してこの発明の実施の形態を説明する。
（第１実施形態）
まず、この発明の第１実施形態について説明する。図１は、この第１実施形態に係るデータ記憶装置の概略構成を示す図である。
【００２９】
図１に示したように、この第１実施形態のデータ記憶装置２０は、図８に示した従来のデータ記憶装置２０に読み出しバッファ２５を加えたものである。
この読み出しバッファ２５は、書き込みバッファ２２と同様、固定長の記憶領域であり、その内部は論理的にブロック単位に分割されている。また、この読み出しバッファ２５も、自身が格納する各データブロックの論理アドレスを保持する。以下、この読み出しバッファ２５の取り扱いを第１実施形態のデータ記憶装置２０の読み出し処理および書き込み処理の動作手順とともに説明する。
【００３０】
図２は、第１実施形態のデータ記憶装置２０のブロック読み出し処理の動作手順を説明するためのフローチャートである。
この第１実施形態における読み出し処理では、ホストシステム１０からの読み出しリクエストで指定される読み出しサイズがブロックサイズより小さい場合であっても、ディスク装置２４からのデータ読み出しの際には、読み出し対象領域を包含するブロックをブロックサイズで読み出す。
【００３１】
読み出し処理において、制御部２１は、まず、読み出しリクエストの論理アドレスと読み出しサイズとから、該当データが書き込みバッファ２２中に存在するか否かを検査する（ステップＡ１）。この検査は、従来と同様、書き込みバッファ２２中の各ブロックデータの論理アドレスから実施することができる。そして、該当データが書き込みバッファ２２中に存在する場合（ステップＡ１のＹＥＳ）、制御部２１は、そのデータをリクエストで指定されたサイズでホストシステム１０に転送することにより（ステップＡ２）、この読み出しリクエストを完了する。
【００３２】
一方、該当データが書き込みバッファ２２中に存在しない場合には（ステップＡ１のＮＯ）、制御部２１は、今度は、読み出しリクエストの論理アドレスと読み出しサイズとから、該当データが読み出しバッファ２５中に存在するか否かを検査する（ステップＡ３）。この検査は、読み出しバッファ２５中の各ブロックデータの論理アドレスから実施することができる。
【００３３】
ここで、該当データが読み出しバッファ２５中に存在する場合（ステップＡ３のＹＥＳ）、制御部２１は、そのデータをリクエストで指定されたサイズでホストシステム１０に転送することにより（ステップＡ４）、この読み出しリクエストを完了する。
【００３４】
一方、該当データが読み出しバッファ２５中にも存在しない場合には（ステップＡ３のＮＯ）、制御部２１は、読み出しリクエストで指定された読み出し論理アドレスを、まず、ブロック境界に補正し（ステップＡ５）、この補正した読み出し論理アドレスでアドレス変換テーブル２３を参照することにより、該当データを含むデータブロックが格納されている物理アドレスを求める。そして、制御部２１は、この物理アドレスからブロックサイズのデータを読み出し、読み出したブロックサイズのデータの中からリクエストで指定された範囲のデータのみをホストシステム１０に転送することにより（ステップＡ６）、この読み出しリクエストを完了する。また、このとき、制御部２１は、ディスク装置２４から読み出したブロックサイズのデータを、読み出しバッファ２５の空き領域に格納しておく（ステップＡ４）。
【００３５】
次に、この第１実施形態における書き込み処理を説明する。
ブロックサイズの倍数と一致するサイズの書き込みリクエストの処理については、制御部２１は、従来と同様、ホストシステム１０からのリクエストデータをブロックサイズに分割した後、書き込みバッファ２５の空き領域に順次格納していき、対応する論理アドレスを記録する。そして、書き込みバッファ２２にすべてのリクエストデータが蓄積された時点で書き込みリクエストは完了する。
【００３６】
この第１実施形態の書き込み処理が従来の書き込み処理と異なる点は、ブロックサイズ未満の書き込みリクエスト処理であり、このときの処理手順を図３を参照して説明する。
【００３７】
制御部２１は、まず、書き込みリクエストで指定される書き込み先論理アドレスをブロック境界に補正する（ステップＢ１）。次に、制御部２１は、更新対象領域を含むデータブロックが書き込みバッファ２２中に存在するか否かを検査する（ステップＢ２）。この検査は、ブロックサイズの倍数と一致する書き込み処理の場合と同様、書き込みバッファ２２中の各ブロックデータの論理アドレスから実施することができる。
【００３８】
更新対象領域を含むデータブロックが書き込みバッファ２２中に存在する場合（ステップＢ２のＹＥＳ）、制御部２１は、従来と同様、書き込みバッファ２２中の該当データブロックの更新対象領域に対して更新データを上書きし（ステップＢ３）、この書き込みリクエスト処理を完了する。
【００３９】
一方、更新対象領域を含むデータブロックが書き込みバッファ２２中に存在しない場合（ステップＢ２のＮＯ）、制御部２１は、今度は、更新対象領域を含むデータブロックが読み出しバッファ２５中に存在するか否かを検査する（ステップＢ４）。
【００４０】
更新対象領域を含むデータブロックが読み出しバッファ２５中に存在する場合（ステップＢ４のＹＥＳ）、制御部２１は、該当データブロックの更新対象領域に対し更新データを上書きする（ステップＢ５）。この後、該当データブロックを読み出しバッファ２５から書き込みバッファ２２の空き領域に複写、蓄積することにより（ステップＢ６）、この書き込みリクエストを完了する。これにより、読み出しバッファ２５および書き込みバッファ２２の両方に、更新後のブロックのデータが残ることになる。
【００４１】
一方、更新対象領域を含むデータブロックが書き込みバッファ２２中にも、読み出しバッファ２５中にも存在しない場合は（ステップＢ４のＮＯ）、制御部２１は、従来と同様、書き込みリクエストで指定される更新対象データ領域を包含するブロックをディスク装置２４から読み出し（ステップＢ７）、この読み出したデータを書き込みバッファ２２の空き領域に格納した後（ステップＢ８）、更新データを上書きすることにより（ステップＢ９）、このリクエスト処理を完了する。また、このとき、制御部２１は、書き込みバッファ２２中で更新したデータブロックを読み出しバッファ２５の空き領域へも複写し蓄積する（ステップＢ１０）。これにより、読み出しバッファ２５および書き込みバッファ２２の両方に、更新後のブロックのデータが残ることになる。
【００４２】
一般的に、ブロックサイズ未満で更新されたデータは、再びブロックサイズ未満のサイズで更新される可能性が高い。したがって、このように、更新後のブロックデータを読み出しバッファにも格納しておくことにより、以後のブロックサイズ未満の更新処理時、更新対象領域を包含するブロックが読み出しバッファ２５中に存在する可能性が高くなる。
【００４３】
ここで、第１実施形態における読み出しバッファ２５のデータ管理方法を説明する。
図４に、第１実施形態における読み出しバッファ２５の構成を示す。図４に示したように、この読み出しバッファ２５は、複数のブロックのデータを記憶するための記憶領域２５１を備える。また、この記憶領域２５１をブロック単位で参照するためのインデックス情報を備える。このインデックス情報は、対応する記憶領域２５１中のブロックの論理アドレスを保持する。
【００４４】
データブロックを読み出しバッファ２５に格納する際、読み出しバッファ２５の記憶領域２５１に空きがない場合は、読み出しバッファ２５中の記憶領域２５１に格納されたデータブロックのうち、たとえば参照頻度が最も低いデータブロックを削除し、その領域に格納する。この方法を実現する一例としては、読み出しバッファ２５のブロックの参照頻度順に参照するためのインデックス情報を設けて、各インデックスがリスト構造２５２をなすようにする方法などが考えられる。
【００４５】
また、各インデックス情報は、ブロックサイズの記憶領域の参照順に並んでおり、この並びは以下のように維持する。
前述の読み出しリクエスト処理時、あるいは書き込みリクエスト処理時に、読み出しバッファ２５中の記憶領域２５１に対する読み出し参照または書き込み参照が発生した場合、その記憶領域へのインデックス情報をリスト構造２５２の先頭に移動させる。一方、読み出しバッファ２５中の記憶領域２５１へのブロックデータの格納時には、リスト構造２５２の最後尾に位置する記憶領域２５１に格納するとともに、その格納後、この記憶領域へのインデックス情報をリスト構造２５２の先頭に移動する。また、参照頻度の低いデータブロックに対応する記憶領域が削除され、新しいデータブロックが格納された場合にも、インデックス情報のリスト構造２５２を変化させる。
【００４６】
このように、読み出しバッファ２５へのブロックの格納およびインデックス情報のリスト構造２５２を操作することにより、常に参照頻度の高いデータのみを読み出しバッファに格納させることが可能となる。
【００４７】
これにより、読み出されたデータに対するブロックサイズ未満での更新、および過去にブロックサイズ未満で更新されたことのあるデータ対するブロックサイズ未満での更新については、読み出しのためのディスクアクセスを減らすことが可能となり、データ記憶装置２０の性能低下を軽減できることになる。
【００４８】
なお、この第１実施形態では、読み出しバッファ２５中の記憶領域２５１を参照頻度順にアクセスする機能をインデックスのリスト構造２５２を用いて実現したが、この発明はこれに限定するものではない。
【００４９】
（第２実施形態）
次に、この発明の第２実施形態を説明する。
第１実施形態では、ディスク装置２４からの読み出し処理時に、常に読み出しバッファ２５に読み出しデータを格納している。しかしながら、蓄積したものの参照されることなく破棄される場合も多い。
【００５０】
そこで、この第２実施形態では、読み出しバッファ２５中に参照されるブロックが存在する確率を高めるために、ブロックサイズ未満の更新の可能性の高いブロックだけを読み出しバッファ２５に格納する。
【００５１】
すなわち、読み出しバッファ２５に格納するブロックの条件を、ホストシステム１０からの読み出しリクエストのサイズがブロックサイズ未満であり、読み出しバッファ２５中に該当ブロックのデータが存在しなかったためにディスク装置２４から読みだしたデータブロックとする。これは、一度ブロックサイズ未満の読みだしが発生した場合、該当ブロックに対する更新がブロックサイズ未満の更新される可能性が高いという理由によるものである。
【００５２】
これにより、参照される可能性の高いデータブロックのみを読み出しバッファ２５に置くことができ、読み出しバッファ２５利用効率をより高めることが可能となる。
【００５３】
（第３実施形態）
次に、この発明の第３実施形態を説明する。
この第３実施形態は、第２実施形態で説明した予測方法が常に成り立つものではないということを考慮したものであり、以前の同一ブロックに対する更新サイズに基づいて、読み出しバッファ２５に格納するか否かを決定するようにしたものである。
【００５４】
この第３実施形態では、各論理ブロックごとに最後に実行された更新時の更新サイズがブロックサイズ未満かどうかを記録するための更新サイズ識別フラグを設ける。
【００５５】
具体的には、たとえば図５に示すように、更新サイズ識別フラグをアドレス変換テーブル２３に付加する。なお、更新サイズの記録方法は、これに限定するものではなく、いずれの方法を用いても差し支えない。
【００５６】
この更新サイズ識別フラグは、該当ブロックについての最後の更新が、「ブロックサイズ未満」および「ブロックサイズ」のいずれであったかを示すものである。そして、この２つの状態が、ブロックサイズ未満の更新の発生の有無を予測するための要素となる。
【００５７】
以下、この更新サイズ認識フラグを利用した読み出し処理および書き込み処理と読み出しバッファ２５の管理とについて説明する。
初期化時、制御部２１は、更新サイズ認識フラグを、すべてのアドレスについて「ブロックサイズ未満」で初期化しておく。
【００５８】
読み出し処理は、第１実施形態の読み出し処理と同様に行なうが、読み出したデータの読み出しバッファ２５への格納処理時、制御部２１は、該当ブロックに対応する更新サイズ認識フラグを参照する。
【００５９】
更新サイズ認識フラグが「ブロックサイズ未満」を示している場合、制御部２１は、読み出しバッファ２５に読み出したブロックのデータを格納し、リクエストで指定されるデータ領域をホストシステム１０に転送することにより、この読み出しリクエスト処理を完了する。
【００６０】
一方、更新サイズ認識フラグが「ブロックサイズ」を示している場合、制御部２１は、読み出しバッファ２５に読み出したブロックのデータを格納することなしに、読み出したデータ中のリクエストで指定されるデータ領域をホストシステム１０に転送することにより、この読み出しリクエストを完了する。
【００６１】
また、書き込み処理も、第１実施形態の書き込み処理と同様に行なうが、書き込みバッファ２２への蓄積処理完了後、更新サイズがブロックサイズのときは、制御部２１は、該当ブロックの更新サイズ認識フラグを「ブロックサイズ」とする。一方、更新サイズがブロックサイズ未満のときは、更新サイズ認識フラグを「ブロックサイズ未満」とする。
【００６２】
このように、各論理ブロックに対する以前の更新サイズに基づき、ブロックサイズ未満の更新処理の発生を予測することにより、参照の可能性の高いデータブロックのみを読み出しバッファ２５に格納しておくことが可能となる。
【００６３】
なお、この第３実施形態では、ブロックの更新サイズを「ブロックサイズ未満」および「ブロックサイズ」の２つの値で認識しているが、この発明はこれに限定するものではなく、たとえば更新サイズそのものを数値で記録するものであっても構わない。
【００６４】
（第４実施形態）
次に、この発明の第４実施形態を説明する。
この第４実施形態では、過去にブロックサイズ未満の更新処理が発生したブロックを特定するための方法として、過去にブロックサイズ未満の更新処理が発生したブロックの論理アドレスを別途記録する方法を採用する。
【００６５】
図６に、この第４実施形態に係るデータ記録装置２０の概略構成を示す。図６に示したように、この第４実施形態のデータ記憶装置２０は、図１に示した第１実施形態のデータ記憶装置２０にブロックサイズ未満更新記録領域２６を加えたものである。このブロックサイズ未満更新記録領域２６の構成の一例を図７に示す。図７に示したように、このブロックサイズ未満更新記録領域２６は、ブロックの先頭論理アドレスを格納する。
【００６６】
読み出し処理は、第１実施形態の読み出し処理と同様に行なうが、読み出したデータの読み出しバッファ２５への格納処理時、制御部２１は、ブロックサイズ未満更新記録領域２６を探索し、該当ブロックに対応する論理アドレスが格納されているか否かを確認する。
【００６７】
ブロックサイズ未満更新記録領域２６に該当ブロックの論理アドレスが登録されている場合、制御部２１は、読み出しバッファ２５に読み出したブロックのデータを格納し、リクエストで指定されるデータ領域をホストシステム１０に転送することにより、この読み出しリクエスト処理を完了する。
【００６８】
一方、ブロックサイズ未満更新記録領域２６に該当ブロックの論理アドレスが登録されていない場合、制御部２１は、読み出しバッファ２５に読み出したブロックのデータを格納することなしに、読み出したデータ中のリクエストで指定されるデータ領域をホストシステム１０に転送することにより、この読み出しリクエストを完了する。
【００６９】
また、書き込み処理も、第１実施形態の書き込み処理と同様に行なうが、書き込みバッファ２２への蓄積処理完了後、更新サイズがブロックサイズのときは、制御部２１は、該当ブロックの論理アドレスをブロックサイズ未満更新記録領域２６に登録する。
【００７０】
この方法によっても、各論理ブロックに対する以前の更新サイズに基づき、ブロックサイズ未満の更新処理の発生を予測することができ、参照の可能性の高いデータブロックのみを読み出しバッファ２５に格納しておくことが可能となる。
【００７１】
以上のように、前述した第１乃至第４実施形態のデータ記憶装置２０のデータ管理方法によれば、従来問題となっていた、ブロックサイズ未満の更新処理時に実行されるディスク装置からの読み出しアクセスに伴なう性能低下を改善することが可能となる。
【００７２】
【発明の効果】
以上詳述したように、この発明によれば、既存の書き込みバッファとは別にブロックデータを所定数蓄積する読み出しバッファを新たに設け、読み出しリクエスト処理時に、このリクエストで指定されたブロックデータを読み出しバッファに格納しておくようにすることにより、読み出されたデータに対するブロックサイズ未満での更新については、再度の読み出しのためのディスクアクセスを減らすことを実現するため、データ記憶装置の性能低下を軽減させることを可能とする。
【００７３】
また、ブロックサイズ未満の読み出しリクエスト処理時に、このリクエストで指定された読み出し対象領域を包含するブロックデータを読み出しバッファに格納しておくようにすることにより、ブロックサイズに満たない更新リクエスト処理時のディスクアクセスを減らすことを実現し、データ記憶装置の性能低下を軽減させることを可能とする。
【００７４】
また、ブロックサイズ未満の更新リクエスト処理時に、このリクエストで更新されたブロックデータを読み出しバッファに格納しておくようにすることにより、ブロックサイズ未満で更新される可能性の高いデータを包含するブロックデータを読み出しバッファに格納しておくことにより、前述と同様、ブロックサイズに満たない更新リクエスト処理時のディスクアクセスを減らすことを実現し、データ記憶装置の性能低下を軽減させることを可能とする。
【００７５】
また、ブロックサイズ未満での更新有無を判定するためのフラグをブロックデータごとに管理し、読み出しリクエスト処理時に、このリクエストで読み出されたブロックデータが過去にブロックサイズ未満で更新されたことがあるか否かをフラグにより判定し、過去にブロックサイズ未満で更新されたことのあるデータブロックであると判定したときに、そのブロックデータを読み出しバッファに格納しておくようにすることにより、ブロックサイズ未満で更新される可能性の高いデータを包含するブロックデータを読み出しバッファに格納しておくことにより、前述と同様、ブロックサイズに満たない更新リクエスト処理時のディスクアクセスを減らすことを実現し、データ記憶装置の性能低下を軽減させることを可能とする。
【００７６】
さらに、ブロックサイズ未満での更新処理が発生したブロックデータの論理アドレスまたは物理アドレスを管理し、読み出しリクエスト処理時に、このリクエストで読み出されたブロックデータが過去にブロックサイズ未満で更新されたことがあるか否かを前記管理する論理アドレスまたは物理アドレスにより判定し、過去にブロックサイズ未満で更新されたことのあるデータブロックであると判定したときに、そのブロックデータを前記読み出しバッファに格納しておくようにすることにより、ブロックサイズ未満で更新される可能性の高いデータを包含するブロックデータを読み出しバッファに格納しておくことにより、前述と同様、ブロックサイズに満たない更新リクエスト処理時のディスクアクセスを減らすことを実現し、データ記憶装置の性能低下を軽減させることを可能とする。
【図面の簡単な説明】
【図１】この発明の第１実施形態に係るデータ記憶装置の概略構成を示す図。
【図２】同第１実施形態のデータ記憶装置のブロック読み出し処理の動作手順を説明するためのフローチャート。
【図３】同第１実施形態のブロックサイズ未満の書き込みリクエスト処理の動作手順を説明するためのフローチャート。
【図４】同第１実施形態における読み出しバッファの構成を示す図。
【図５】同第１実施形態の更新サイズ識別フラグが付加されたアドレス変換テーブルを示す図。
【図６】同第４実施形態に係るデータ記録装置の概略構成を示す図。
【図７】同第４実施形態のブロックサイズ未満更新記録領域の構成の一例を示す図。
【図８】従来のデータ記憶装置の概略構成を示す図。
【図９】従来のデータ記憶装置のアドレス変換テーブルの構成を示す図。
【符号の説明】
１０…ホストシステム、２０…データ記憶装置、２１…制御部、２２…書き込みバッファ、２３…アドレス変換バッファ、２４…ディスク装置、２５…読み出しバッファ、２６…ブロックサイズ未満更新記録領域。
【図１】
0004197547.tif 000002
【図２】
0004197547.tif 000003
【図３】
0004197547.tif 000004
【図４】
0004197547.tif 000005
【図５】
0004197547.tif 000006
【図６】
0004197547.tif 000007
【図７】
0004197547.tif 000008
【図８】
0004197547.tif 000009
【図９】
0004197547.tif 000010