(57)【要約】【課題】アクセス要求に対する応答速度を向上させる。【解決手段】抽出部１２は、第１の記憶装置２１における一定サイズ毎の単位記憶領域Ａ１〜Ａ６のうち、アクセス回数が０より大きい所定回数以上かつ類似する複数の単位記憶領域が連続する記憶領域を、監視領域として一定時間間隔で抽出する。予測部１３は、抽出された監視領域のうち同一サイズの監視領域２１ａ，２１ｂの第１の記憶装置２１における位置が時間経過にしたがって移動したことを検知したとき、監視領域２１ａ，２１ｂの移動方向に基づいて、アクセスが予測される予測記憶領域２１ｃを第１の記憶装置２１の記憶領域から特定する。予測部１３は、予測記憶領域２１ｃの内容が第１の記憶装置２１よりアクセス速度が高い第２の記憶装置２２へコピーされるように制御する。【選択図】図１
2015207123.tif 000002
【特許請求の範囲】
【請求項１】
第１の記憶装置と、前記第１の記憶装置よりアクセス速度が高い第２の記憶装置と、制御装置とを有するストレージ装置において、
前記制御装置は、
前記第１の記憶装置における一定サイズ毎の単位記憶領域のうち、アクセス回数が０より大きい所定回数以上かつ類似する複数の単位記憶領域が連続する記憶領域を、監視領域として一定時間間隔で抽出する抽出部と、
前記抽出部によって抽出された前記監視領域のうち同一サイズの監視領域の前記第１の記憶装置における位置が時間経過にしたがって移動したことを検知したとき、前記同一サイズの監視領域の移動方向に基づいて、アクセスが予測される予測記憶領域を前記第１の記憶装置の記憶領域から特定し、前記予測記憶領域の内容が前記第２の記憶装置へコピーされるように制御する予測部と、
前記第１の記憶装置の記憶領域に対するアクセス要求を受けたとき、アクセス要求先の記憶領域の内容が前記第２の記憶装置にコピーされている場合には、前記第２の記憶装置におけるコピー先の記憶領域へのアクセスが行われるように制御し、アクセス要求先の記憶領域の内容が前記第２の記憶装置にコピーされていない場合には、前記第１の記憶装置におけるアクセス要求先の記憶領域へのアクセスが行われるように制御するアクセス制御部と、
を有することを特徴とするストレージ装置。
【請求項２】
前記予測部は、隣接する時間帯に抽出された前記同一サイズの監視領域について、互いの監視領域の一部のみが重複するか、または監視領域が互いに接する場合に、前記同一サイズの監視領域の前記第１の記憶装置における位置が移動したと判定することを特徴とする請求項１記載のストレージ装置。
【請求項３】
前記予測部は、隣接する時間帯に抽出された、アクセス回数が類似する前記同一サイズの監視領域を、移動の判定対象とすることを特徴とする請求項２記載のストレージ装置。
【請求項４】
前記予測部は、隣接する時間帯に抽出された前記同一サイズの監視領域の前記第１の記憶装置における位置が移動したと判定すると、当該同一サイズの監視領域のうちの移動後の監視領域の位置をその移動方向側に移動量分だけシフトした記憶領域を、前記予測記憶領域として特定することを特徴とする請求項２または３記載のストレージ装置。
【請求項５】
前記予測部は、特定された前記予測記憶領域の内容のうち前記第２の記憶装置へコピー済みでない内容が前記第２の記憶装置へコピーされるように制御することを特徴とする請求項４記載のストレージ装置。
【請求項６】
前記予測部は、前記同一サイズの監視領域の前記第１の記憶装置における位置が時間経過にしたがって移動したことを検知して、前記予測記憶領域を特定したとき、前記同一サイズの監視領域の移動速度に基づいて、前記予測記憶領域の内容を前記第２の記憶装置へコピーする速度を制御することを特徴とする請求項１乃至５のいずれか１項に記載のストレージ装置。
【請求項７】
第１の記憶装置の記憶領域の内容の一部が、前記第１の記憶装置よりアクセス速度が高い第２の記憶装置にコピーされるように制御し、前記第１の記憶装置の記憶領域に対するアクセス要求を受けたとき、アクセス要求先の記憶領域の内容が前記第２の記憶装置にコピーされている場合には、前記第２の記憶装置におけるコピー先の記憶領域へのアクセスが行われるように制御し、アクセス要求先の記憶領域の内容が前記第２の記憶装置にコピーされていない場合には、前記第１の記憶装置におけるアクセス要求先の記憶領域へのアクセスが行われるように制御する制御装置におけるストレージ制御方法であって、
前記制御装置が、
前記第１の記憶装置における一定サイズ毎の単位記憶領域のうち、アクセス回数が０より大きい所定回数以上かつ類似する複数の単位記憶領域が連続する記憶領域を、監視領域として一定時間間隔で抽出し、
抽出された前記監視領域のうち同一サイズの監視領域の前記第１の記憶装置における位置が時間経過にしたがって移動したことを検知したとき、前記同一サイズの監視領域の移動方向に基づいて、アクセスが予測される予測記憶領域を前記第１の記憶装置の記憶領域から特定し、
前記予測記憶領域の内容が前記第２の記憶装置へコピーされるように制御する、
ことを特徴とするストレージ制御方法。
【請求項８】
第１の記憶装置の記憶領域の内容の一部が、前記第１の記憶装置よりアクセス速度が高い第２の記憶装置にコピーされるように制御し、前記第１の記憶装置の記憶領域に対するアクセス要求を受けたとき、アクセス要求先の記憶領域の内容が前記第２の記憶装置にコピーされている場合には、前記第２の記憶装置におけるコピー先の記憶領域へのアクセスが行われるように制御し、アクセス要求先の記憶領域の内容が前記第２の記憶装置にコピーされていない場合には、前記第１の記憶装置におけるアクセス要求先の記憶領域へのアクセスが行われるように制御する処理を、コンピュータに実行させるストレージ制御プログラムにおいて、
前記コンピュータに、
前記第１の記憶装置における一定サイズ毎の単位記憶領域のうち、アクセス回数が０より大きい所定回数以上かつ類似する複数の単位記憶領域が連続する記憶領域を、監視領域として一定時間間隔で抽出し、
抽出された前記監視領域のうち同一サイズの監視領域の前記第１の記憶装置における位置が時間経過にしたがって移動したことを検知したとき、前記同一サイズの監視領域の移動方向に基づいて、アクセスが予測される予測記憶領域を前記第１の記憶装置の記憶領域から特定し、
前記予測記憶領域の内容が前記第２の記憶装置へコピーされるように制御する、
処理を実行させることを特徴とするストレージ制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ストレージ装置、ストレージ制御方法およびストレージ制御プログラムに関する。
【背景技術】
【０００２】
ストレージシステムにおいて、ホスト装置からのアクセス要求に対する応答速度を向上させる技術として、先読み技術がある。“先読み”とは、近い将来にホスト装置からアクセスが要求される可能性が高いデータを予測して、そのデータをアクセス要求先の記憶装置から予め読み出し、より高速な記憶装置に格納しておくことを意味する。ストレージシステムの制御装置は、先読みしたデータに対してホスト装置からアクセスが要求された場合、本来のアクセス要求先の記憶装置ではなく、より高速な記憶装置に対してアクセスすることで、アクセス要求に応じた処理を行うことができる。そのため、先読みしたデータに対してホスト装置からアクセスが要求される確率が高くなるほど、ホスト装置に対する応答速度が高くなり、応答性能が向上する。
【０００３】
先読み技術の代表的な例として、ホスト装置からシーケンシャルなアクセスが要求された場合に、アクセスが要求された範囲よりも先のデータまで高速な記憶領域に先読みする方法が挙げられる。
【０００４】
また、他の先読み技術の例として、アクセスコマンドのログと現アクセスコマンドに基づいて近傍領域を決定し、決定した近傍領域のアクセス出現率が一定値以上である場合に、現アクセスコマンドの指定する記憶領域の近傍領域のデータをキャッシュメモリに先読みする技術が提案されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００８−２９３１１１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
ホスト装置からシーケンシャルなアクセスが要求された場合に先読みを行う方法では、先読みすべきデータを判定する条件が限定的であり、アクセス要求に対する応答速度の向上効果が十分に得られているとは言えなかった。
【０００７】
１つの側面では、本発明は、アクセス要求に対する応答速度を向上させることが可能なストレージ装置、ストレージ制御方法およびストレージ制御プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００８】
１つの案では、第１の記憶装置と、第１の記憶装置よりアクセス速度が高い第２の記憶装置と、制御装置とを有するストレージ装置が提供される。制御装置は、抽出部、予測部およびアクセス制御部を有する。抽出部は、第１の記憶装置における一定サイズ毎の単位記憶領域のうち、アクセス回数が０より大きい所定回数以上かつ類似する複数の単位記憶領域が連続する記憶領域を、監視領域として一定時間間隔で抽出する。予測部は、抽出部によって抽出された監視領域のうち同一サイズの監視領域の第１の記憶装置における位置が時間経過にしたがって移動したことを検知したとき、同一サイズの監視領域の移動方向に基づいて、アクセスが予測される予測記憶領域を第１の記憶装置の記憶領域から特定する。予測部は、予測記憶領域の内容が第２の記憶装置へコピーされるように制御する。アクセス制御部は、第１の記憶装置の記憶領域に対するアクセス要求を受けたとき、アクセス要求先の記憶領域の内容が第２の記憶装置にコピーされている場合には、第２の記憶装置におけるコピー先の記憶領域へのアクセスが行われるように制御し、アクセス要求先の記憶領域の内容が第２の記憶装置にコピーされていない場合には、第１の記憶装置におけるアクセス要求先の記憶領域へのアクセスが行われるように制御する。
【０００９】
また、１つの案では、上記ストレージ装置と同様の処理をコンピュータが実行するストレージ制御方法が提供される。
さらに、１つの案では、上記ストレージ装置と同様の処理をコンピュータに実行させるストレージ制御プログラムが提供される。
【発明の効果】
【００１０】
一側面では、アクセス要求に対する応答速度を向上させることができる。
【図面の簡単な説明】
【００１１】
【図１】第１の実施の形態のストレージシステムの構成例およびその動作例を示す図である。
【図２】第２の実施の形態のストレージシステムの構成例を示す図である。
【図３】ストレージ制御装置のハードウェア構成例を示す図である。
【図４】シーケンシャルなアクセスパターンの例を示す図である。
【図５】巨視的にみるとシーケンシャルなアクセスパターンの例を示す図である。
【図６】ストレージ制御装置の機能構成例を示すブロック図である。
【図７】アクセス回数情報テーブルの例を示す図である。
【図８】高負荷領域情報テーブルの例を示す図である。
【図９】先読み管理テーブルの例を示す図である。
【図１０】高負荷領域を検出する例を示す図である。
【図１１】高負荷領域を検出する例を示す図（続き）である。
【図１２】先読みの有無を判定する例を示す図である。
【図１３】先読みの実行方法の例を示す図である。
【図１４】先読みの実行方法の別の例を示す図である。
【図１５】先読みの有無を判定する処理の例を示すフローチャートである。
【図１６】先読みの有無を判定する処理の例を示すフローチャート（続き）である。
【図１７】先読み処理の例を示すフローチャートである。
【図１８】アクセス制御処理の例を示すフローチャートである。
【発明を実施するための形態】
【００１２】
以下、本実施の形態を図面を参照して説明する。
［第１の実施の形態］
図１は、第１の実施の形態のストレージ装置の構成例およびその動作例を示す図である。第１の実施の形態のストレージ装置１は、制御装置１０、第１の記憶装置２１および第２の記憶装置２２を有する。
【００１３】
第１の記憶装置２１は、例えば記録媒体としてＨＤＤ（Hard Disk Drive）を備える。第２の記憶装置２２は、第１の記憶装置２１よりアクセス速度が速い記憶装置であり、例えば記録媒体としてＳＳＤ（Solid State Drive）を備える。なお、第１の記憶装置２１と第２の記憶装置２２の少なくとも一方は、ストレージ装置１の外部に設けられていてもよい。また、第１の記憶装置２１と第２の記憶装置２２の少なくとも一方は、制御装置１０の内部に搭載されていてもよい。
【００１４】
制御装置１０は、第１の記憶装置２１および第２の記憶装置２２に対するアクセスを制御する。また、制御装置１０には、ホスト装置２３が接続されている。ホスト装置２３は、制御装置１０に対して、第１の記憶装置２１の記憶領域に対するアクセスを要求する。制御装置１０は、ホスト装置２３からのアクセス要求に応じてアクセス処理を行う。
【００１５】
制御装置１０は、アクセス制御部１１、抽出部１２および予測部１３を有する。
アクセス制御部１１は、ホスト装置２３からのアクセス要求を受け付けて、アクセス要求に応答する。アクセス制御部１１は、第１の記憶装置２１の記憶領域に対するアクセス要求を受けたとき、アクセス要求先の記憶領域の内容が第２の記憶装置２２にコピーされていない場合には、第２の記憶装置２２におけるコピー先の記憶領域へのアクセスが行われるように制御する。一方、アクセス要求先の記憶領域の内容が第２の記憶装置２２にコピーされている場合には、第１の記憶装置２１におけるアクセス要求先の記憶領域へのアクセスが行われるように制御する。これにより、アクセスが要求されてからの応答速度が向上する。
【００１６】
抽出部１２は、第１の記憶装置２１における一定サイズ毎の単位記憶領域のうち、アクセス回数が０より大きい所定回数以上かつ類似する複数の単位記憶領域が連続する記憶領域を、監視領域として一定時間間隔で抽出する。なお、各単位記憶領域のアクセス回数が類似する場合とは、例えば、各単位記憶領域のアクセス回数のばらつき度合いが所定の範囲内である場合である。
【００１７】
予測部１３は、抽出部１２によって抽出された監視領域のうち同一サイズの監視領域の第１の記憶装置２１における位置が、時間経過にしたがって移動したことを検知したとき、これらの同一サイズの監視領域の移動方向に基づいて、アクセスが予測される予測記憶領域を第１の記憶装置２１の記憶領域から特定する。そして、特定された予測記憶領域の内容が第２の記憶装置２２へコピーされるように制御する。
【００１８】
抽出部１２および予測部１３の処理により、その後にホスト装置２３からアクセスが要求されることが予測される予測記憶領域が、正確に特定される。そして、このように特定された予測記憶領域の内容が、その後にアクセスが要求されるより前に第２の記憶装置２２にコピーされることで、その記憶領域へのアクセスが要求された際のアクセス速度を高速化できる。したがって、全体として、アクセス要求に対する制御装置１０の応答速度を向上させることができる。
【００１９】
次に、抽出部１２および予測部１３の処理の具体例について、図１の左下の図を用いて説明する。図１の左下の図は、第１の記憶装置２１の記憶領域のうち、アクセスが要求される記憶領域の時間経過に伴う推移の例を示す。
【００２０】
時刻“ｔ”，“ｔ＋１”，“ｔ＋２”は、それぞれ一定の長さの連続する時間帯を示す。また、単位記憶領域Ａ１〜Ａ６は、第１の記憶装置２１において連続して配置されている。
【００２１】
時刻“ｔ”で表される時間帯では、隣接する単位記憶領域Ａ１，Ａ２において、ともにアクセス回数が０より大きい所定回数以上であり、なおかつ、それらのアクセス回数が類似していたとする。この場合、抽出部１２は、単位記憶領域Ａ１，Ａ２を結合した記憶領域２１ａを監視領域として特定する。
【００２２】
また、時刻“ｔ＋１”で表される次の時間帯では、隣接する単位記憶領域Ａ３，Ａ４において、ともにアクセス回数が０より大きい所定回数以上であり、なおかつ、それらのアクセス回数が類似していたとする。この場合、抽出部１２は、単位記憶領域Ａ３，Ａ４を結合した記憶領域２１ｂを監視領域として特定する。
【００２３】
ここで、各時間帯で監視領域として特定された記憶領域２１ａ，２１ｂのサイズは同一であり、また、第１の記憶装置２１での位置が異なっている。このため、予測部１３は、監視領域の位置が時間経過にしたがって移動したと判定する。すなわち、記憶領域２１ａは移動前の監視領域であり、記憶領域２１ｂは移動後の監視領域であると判定される。
【００２４】
予測部１３は、監視領域の移動方向に基づいて、その後にアクセスが要求されることが予測される予測記憶領域を特定する。図１の例では、時刻“ｔ”から時刻“ｔ＋１”までの時間に、監視領域が単位記憶領域２つ分の量だけ、アドレスが大きくなる方向に移動している。このため、予測部１３は、時刻“ｔ＋２”で表される次の時間帯において、単位記憶領域Ａ５，Ａ６を結合した記憶領域２１ｃに対して、ホスト装置２３からのアクセス要求がある程度集中すると予測する。すなわち、予測部１３は、記憶領域２１ｃを予測記憶領域として特定する。予測部１３は、記憶領域２１ｃの内容が第２の記憶装置２２へコピーされるように制御する。
【００２５】
以上の処理において、予測部１３によって特定される監視領域では、ある時間帯において、その記憶領域内でほぼ均等にアクセスが要求されている。このような監視領域が時間経過に伴って移動した場合、巨視的にみるとシーケンシャルなアクセスが行われていると判断できる。このようなアクセスの傾向は、例えば、ホスト装置２３で同一のアプリケーションが実行されることでアクセスが行われている場合等にみられる。
【００２６】
このため、監視領域の位置が移動したことが検知された場合に、その移動方向に基づいて予測記憶領域が特定されることで、その後にホスト装置２３からアクセスが要求されることが予測される記憶領域が正確に特定される。そして、このように特定された予測記憶領域の内容が、その後にアクセスが要求されるより前に第２の記憶装置２２にコピーされることで、アクセス要求先の記憶領域の内容が第２の記憶装置２２にコピーされている確率が高くなる。その結果、アクセス要求に対する制御装置１０の応答速度を向上させることができる。
【００２７】
［第２の実施の形態］
次に、上記の第１の記憶装置として複数のＨＤＤを使用し、第２の記憶装置としてＳＳＤを使用したストレージ装置の例について説明する。
【００２８】
図２は、第２の実施の形態のストレージ装置の構成例を示す図である。図２に示すストレージ装置２は、ストレージ制御装置１００およびディスクアレイ２００を有する。また、ストレージ装置２には、ホスト装置３００が接続されている。
【００２９】
ディスクアレイ２００は、ストレージ制御装置１００によるアクセス制御対象となる記憶装置である。ディスクアレイ２００は、ＳＳＤ２０１およびＨＤＤ２０２ａ，２０２ｂ，２０２ｃ，…２０２ｎを有する。なお、ＳＳＤ２０１の数は、複数であってもよい。
【００３０】
なお、ストレージ制御装置１００は、第１の実施の形態のストレージ装置１の制御装置１０の一例である。ＳＳＤ２０１は、第１の実施の形態のストレージ装置１の第２の記憶装置２２の一例である。ＨＤＤ２０２ａ，２０２ｂ，２０２ｃ，…２０２ｎは、第１の実施の形態のストレージ装置１の第１の記憶装置２１の一例である。ホスト装置３００は、第１の実施の形態のストレージ装置１のホスト装置２３の一例である。
【００３１】
ＨＤＤ２０２ａ，２０２ｂ，２０２ｃ，…２０２ｎは、ホスト装置３００によるアクセス要求の対象となるデータを記憶する。ＳＳＤ２０１は、ＨＤＤ２０２ａ，２０２ｂ，２０２ｃ，…２０２ｎと比較して高速にアクセス可能な記憶装置である。ＳＳＤ２０１は、ストレージ制御装置１００の制御の下で、ＨＤＤ２０２ａ，２０２ｂ，２０２ｃ，…２０２ｎに記憶されているデータの一部を記憶する。なお、ＳＳＤ２０１は、ＨＤＤ２０２ａ，２０２ｂ，２０２ｃ，…２０２ｎに記憶されているデータの一部の他、ストレージ装置２で用いられるアプリケーションやＯＳ（Operating System）等のプログラムや、その他の各種のデータを記憶してもよい。
【００３２】
ストレージ制御装置１００は、ホスト装置３００からのアクセス要求に応じて、ＳＳＤ２０１またはＨＤＤ２０２ａ，２０２ｂ，２０２ｃ，…２０２ｎに対してコマンドを発行することで、これらの記憶装置に対するアクセスを制御する。また、ストレージ制御装置１００は、ＨＤＤ２０２ａ，２０２ｂ，２０２ｃ，…２０２ｎによって実現される物理記憶領域を管理し、これらの物理記憶領域に対するアクセスを制御する。物理記憶領域を管理方法の例として、ＲＡＩＤ（Redundant Arrays of Inexpensive Disks）が挙げられるが、これに限定されるものではない。
【００３３】
ストレージ制御装置１００は、ＨＤＤ２０２ａ，２０２ｂ，２０２ｃ，…２０２ｎの記憶領域のうち、近い将来にホスト装置３００からのアクセス要求（読み出し要求および書き込み要求）が集中する可能性の高い記憶領域を予測して、その記憶領域の内容を読み出す。ストレージ制御装置１００は、読み出した内容をＳＳＤ２０１に書き込む。すなわち、ストレージ制御装置１００は、アクセス要求が集中する可能性が高いと予測した記憶領域の全体の内容を、そのままＳＳＤ２０１へコピーする。以下、上記のような、データの予測から、ＳＳＤ２０１への書き込みまでの一連の動作を“先読み”と記載する場合がある。
【００３４】
ストレージ制御装置１００は、ＨＤＤ２０２ａ，２０２ｂ，２０２ｃ，…２０２ｎのいずれかに記憶されたデータの読み出し要求をホスト装置３００から受信したとき、読み出しが要求されたデータがＳＳＤ２０１に記憶されている場合には、ＨＤＤではなくＳＳＤ２０１から当該データを読み出す。一方、当該データがＳＳＤ２０１に記憶されていない場合には、ＨＤＤから当該データを読み出す。
【００３５】
一方、ストレージ制御装置１００は、ＨＤＤ２０２ａ，２０２ｂ，２０２ｃ，…２０２ｎのいずれかに対して、データの書き込み要求をホスト装置３００から受信したとき、要求された書き込み先の記憶領域の内容がＳＳＤ２０１に書き込まれている場合には、ＨＤＤではなくＳＳＤ２０１の対応する記憶領域に対して書き込みを要求されたデータを書き込む。一方、当該記憶領域の内容がＳＳＤ２０１に書き込まれていない場合には、ＨＤＤに対して当該データを書き込む。
【００３６】
すなわち、先読みしたデータに対してホスト装置３００からアクセス要求があった場合、ホスト装置３００からのアクセス要求に対するデータのアクセス処理が高速化される。したがって、先読みしたデータに対して、ホスト装置３００からアクセスが要求される確率が上がるほど、ホスト装置３００からのアクセス要求に対するストレージ装置２のアクセスの応答性能が向上することになる。
【００３７】
ホスト装置３００は、ユーザの操作に応じて、ストレージ制御装置１００に対して、ＨＤＤ２０２ａ，２０２ｂ，２０２ｃ，…２０２ｎによって実現される記憶領域へのアクセスを要求する。ホスト装置３００は、例えば、ユーザの操作に応じて、ストレージ制御装置１００を通じて、ＨＤＤ２０２ａ，２０２ｂ，２０２ｃ，…２０２ｎからのデータの読み出しを行うことができる。また、ホスト装置３００は、例えば、ユーザの操作に応じて、ストレージ制御装置１００を通じて、ＨＤＤ２０２ａ，２０２ｂ，２０２ｃ，…２０２ｎに対するデータの書き込みを行うことができる。
【００３８】
図３は、ストレージ制御装置のハードウェア構成例を示す図である。
ストレージ制御装置１００は、プロセッサ１０１によって装置全体が制御されている。プロセッサ１０１には、ＲＡＭ（Random Access Memory）１０２および複数の周辺機器が、バス１０９を介して接続されている。ＲＡＭ１０２は、ストレージ制御装置１００の主記憶装置として使用され、プロセッサ１０１に実行させるプログラムの少なくとも一部や、このプログラムによる処理に必要な各種データを一時的に記憶する。
【００３９】
プロセッサ１０１には、周辺機器の例として、ＨＤＤ１０３、表示装置１０４、入力装置１０５、読み取り装置１０６、ホストインタフェース１０７およびディスクインタフェース１０８が接続されている。
【００４０】
ＨＤＤ１０３は、ストレージ制御装置１００の二次記憶装置として使用され、プロセッサ１０１によって実行されるプログラムやその実行に必要な各種のデータ等を記憶する。なお、二次記憶装置としては、例えば、ＳＳＤ等の他の種類の不揮発性記憶装置が使用されてもよい。
【００４１】
表示装置１０４は、プロセッサ１０１からの命令にしたがって、ストレージ制御装置１００が備えるディスプレイに画像を表示させる。なお、ディスプレイとしては、液晶ディスプレイ（ＬＣＤ：Liquid Crystal Display）や有機ＥＬ（Electro Luminescence）等を用いることができる。
【００４２】
入力装置１０５は、ストレージ制御装置１００のユーザによる入力操作により出力された出力信号をプロセッサ１０１に送信する。入力装置１０５の例として、タッチパッドやキーボード等が挙げられる。
【００４３】
読み取り装置１０６は、記録媒体１０６ａに記録されたプログラムやデータを読み取る駆動装置である。記録媒体１０６ａとして、例えば、フレキシブルディスク（ＦＤ：Flexible Disk）やＨＤＤ等の磁気ディスク、ＣＤ（Compact Disc）やＤＶＤ（Digital Versatile Disc）等の光ディスク、光磁気ディスク（ＭＯ：Magneto-Optical disk）を使用できる。
【００４４】
ホストインタフェース１０７は、ホスト装置３００とストレージ制御装置１００との間でデータを送受信するインタフェース処理を実行する。ディスクインタフェース１０８は、ディスクアレイ２００とストレージ制御装置１００との間でデータを送受信するインタフェース処理を実行する。
【００４５】
なお、ストレージ制御装置１００は、読み取り装置１０６を備えていなくてもよく、専ら他の端末装置から制御される場合には、表示装置１０４や入力装置１０５を備えていなくてもよい。
【００４６】
ところで、ストレージ制御装置１００は、ホスト装置３００からのアクセス要求の傾向が特定できれば、そのアクセス要求の傾向に応じて先読みすることで、先読みしたデータに対して、ホスト装置３００からアクセスが要求される可能性が上がる。図４〜５では、ホスト装置３００からのアクセス要求がある傾向を持つ場合の例として、シーケンシャルなアクセスパターンと、巨視的にみるとシーケンシャルなアクセスパターンとについて説明する。
【００４７】
図４〜５の説明では、便宜的に、ＨＤＤ２０２ａ，２０２ｂ，２０２ｃ…２０２ｎをまとめて “ＨＤＤ２０２”と表す。また、これ以降、ＨＤＤ２０２ａ，２０２ｂ，２０２ｃ…２０２ｎを区別せずに説明する場合には、“ＨＤＤ２０２”という表記を使用する。すなわち、ＨＤＤ２０２は、ホスト装置３００からのアクセスの対象となる記憶領域を実現する記憶装置を示す。
【００４８】
図４は、シーケンシャルなアクセスパターンの例を示す図である。グラフ３１は、ホスト装置３００からアクセス要求があったＨＤＤ２０２内の記憶領域と、アクセス要求があったときの時刻との対応関係を示す。グラフ３１の縦軸は、ＨＤＤ２０２の記憶領域のアドレスを示す。グラフ３１の横軸は、ＨＤＤ２０２の記憶領域に対してアクセス要求があったときの時刻を示す。また、グラフ３１において、矩形領域の下端は、アクセスが要求されたＨＤＤ２０２の記憶領域の先頭アドレスを示し、矩形領域の上端は、アクセスが要求されたＨＤＤ２０２の記憶領域の末尾アドレスを示す。
【００４９】
ここで、グラフ３１を用いて、ホスト装置３００からストレージ制御装置１００へのアクセス要求の傾向の一例について説明する。
グラフ３１に示すように、先頭アドレスが“０"であり末尾アドレスが“３"であるＨＤＤ２０２の記憶領域、先頭アドレスが“４"であり末尾アドレスが“７"であるＨＤＤ２０２の記憶領域、先頭アドレスが“８"であり末尾アドレスが“１１"である記憶領域、先頭アドレスが“１２"であり末尾アドレスが“１５"である記憶領域の順に、ホスト装置３００からストレージ制御装置１００へアクセス要求がされている。
【００５０】
この場合、時刻"０"〜時刻“ｔ”までの間に、ホスト装置３００からストレージ制御装置１００へのアクセス要求の傾向は、シーケンシャルなアクセスが行われる傾向にあると判断できる。このとき、ストレージ制御装置１００は、時刻“ｔ”の経過後、先頭アドレスが“１６"であり、末尾アドレスが“１９"である記憶領域に対して、ホスト装置３００からアクセスが要求される可能性が高いと判断できる。そのため、ストレージ制御装置１００は、時刻“ｔ”の時点で、先頭アドレスが“１６"であり末尾アドレスが“１９"である記憶領域を先読みすることで、先読みしたデータに対してホスト装置３００がアクセスを要求する確率を増加させることができる。
【００５１】
このように、シーケンシャルな読み出しが行われる傾向にあるアクセスパターン（シーケンシャルなアクセスパターン）が発生したと判断できれば、そのアクセスパターンに基づく先読みをストレージ制御装置１００が実行することで、ストレージ装置２のアクセス要求に対する応答速度が向上する。
【００５２】
図５は、巨視的にみるとシーケンシャルなアクセスパターンの例を示す図である。グラフ３２は、図４のグラフ３１と同様に、ホスト装置３００からアクセス要求があったＨＤＤ２０２内の記憶領域と、アクセス要求があったときの時刻との対応関係を示す。図５では、図４と同じ内容の説明を省略する場合がある。
【００５３】
ここで、グラフ３２を用いて、ホスト装置３００からストレージ制御装置１００へのアクセス要求の傾向の一例について説明する。
グラフ３２に示すように、まず、先頭アドレスが“０”であり末尾アドレスが“３”であるＨＤＤ２０２の記憶領域、先頭アドレスが“２０”であり末尾アドレスが“２３”であるＨＤＤ２０２の記憶領域の順に、ホスト装置３００からストレージ制御装置１００へアクセス要求がされている。次に、先頭アドレスが“８”であり末尾アドレスが“１１”であるＨＤＤ２０２の記憶領域、先頭アドレスが“２４”であり末尾アドレスが“２７”であるＨＤＤ２０２の記憶領域の順に、ホスト装置３００からストレージ制御装置１００へアクセス要求がされている。そして、先頭アドレスが“２０”であり末尾アドレスが“２３”である記憶領域、先頭アドレスが“３６”であり末尾アドレスが“３９”である記憶領域の順に、ホスト装置３００からストレージ制御装置１００へアクセス要求がされている。すなわち、時刻“０”〜時刻“ｔ”までの間に、ホスト装置３００からストレージ制御装置１００へのシーケンシャルなアクセス要求の傾向はみられない。
【００５４】
しかし、ホスト装置３００からのアクセス要求が集中する一定の大きさの記憶領域が、時間の経過に伴いシーケンシャルに移動する傾向がみられる場合がある。例えば、グラフ３２では、一定時間内におけるホスト装置３００からのアクセス要求が、記憶領域の大きさが“３０”である記憶領域内に集中し、その記憶領域が時間の経過に伴いシーケンシャルに移動する傾向がみられる。以下、上記のようなアクセスの傾向にあるアクセスパターンを“巨視的にみるとシーケンシャルなアクセスパターン”と記載する場合がある。
【００５５】
この場合、ストレージ制御装置１００は、時刻“ｔ”の経過後、先頭アドレスが“２０”であり、末尾アドレスが“５０”である記憶領域に対して、ホスト装置３００からアクセス要求がある程度集中する可能性が高いと判断できる。そのため、ストレージ制御装置１００は、時刻“ｔ”の時点で、先頭アドレスが“２０”であり末尾アドレスが“５０”である記憶領域を先読みすることで、先読みしたデータに対してホスト装置３００がアクセスを要求する確率を増加させることができる。
【００５６】
このように、巨視的にみるとシーケンシャルなアクセスパターンの発生を判断できれば、そのアクセスパターンに基づく先読みをストレージ制御装置１００が実行することで、ホスト装置３００からのアクセス要求に対するストレージ装置２の応答性能が向上する。しかしながら、巨視的にみるとシーケンシャルなアクセスパターンは、図４に示した通常のシーケンシャルなアクセスパターンのように、実際にアクセスが要求された記憶領域の履歴から容易に判断することができない。
【００５７】
図６以降では、巨視的にみるとシーケンシャルなアクセスパターンの発生を判断し、そのアクセスパターンに対応した先読みを実行するための、ストレージ制御装置１００の機能について説明する。
【００５８】
図６は、ストレージ制御装置の機能構成例を示すブロック図である。図６において、図２と同じ内容について説明を省略する場合がある。
ストレージ制御装置１００は、アクセス回数情報記憶部１１０、先読み管理情報記憶部１２０、アクセス制御部１３０、アクセス回数取得部１４０、高負荷領域判定部１５０、先読み判定部１６０および先読み実行部１７０を有する。また、ＳＳＤ２０１は、先読み領域２０１ａを有する。
【００５９】
アクセス回数情報記憶部１１０および先読み管理情報記憶部１２０は、ＲＡＭ１０２またはＨＤＤ１０３に確保した記憶領域として実現できる。アクセス制御部１３０、アクセス回数取得部１４０、高負荷領域判定部１５０、先読み判定部１６０および先読み実行部１７０の処理は、例えば、プロセッサ１０１が所定のプログラムを実行することで実現される。
【００６０】
なお、アクセス制御部１３０は、第１の実施の形態の読み出し制御部１１の一例である。また、高負荷領域判定部１５０は、第１の実施の形態の抽出部１２の一例である。また、先読み判定部１６０および先読み実行部１７０は、第１の実施の形態の予測部１３の一例である。
【００６１】
アクセス回数情報記憶部１１０は、一定時間内における単位セグメント毎のアクセス回数を一時的に格納するアクセス回数情報テーブルを記憶する。ここで、“単位セグメント”は、ディスクアレイ２００内のＨＤＤにおける記憶領域を、一定の大きさに分割したときの記憶領域を意味する。
【００６２】
先読み管理情報記憶部１２０は、高負荷領域に関する情報を格納する高負荷領域情報テーブルを記憶する。ここで、“高負荷領域”は、単位時間当たりのホスト装置３００からのアクセス回数が閾値以上であり、そのアクセス回数がほぼ均一な記憶領域を意味する。また、先読み管理情報記憶部１２０は、先読みされた記憶領域に関する情報を一時的に格納する先読み管理テーブルを記憶する。
【００６３】
アクセス制御部１３０は、ホスト装置３００からのアクセス要求に応じて、ディスクアレイ２００内のいずれかのＨＤＤ内のデータにアクセスする。この際、アクセス制御部１３０は、先読み管理テーブルを用いて、ＳＳＤ２０１の一部の記憶領域を先読み領域２０１ａとして使用しながら、ディスクアレイ２００内のＨＤＤに対するアクセス制御を行う。
【００６４】
すなわち、アクセス制御部１３０は、ホスト装置３００から読み出し要求を受信したとき、先読み管理テーブルを参照して、読み出しが要求されたデータが先読み領域２０１ａに記憶されているかを判定する。そして、アクセス制御部１３０は、読み出しが要求されたデータが先読み領域２０１ａに記憶されている場合には、当該データを先読み領域２０１ａから読み出してホスト装置３００に送信する。一方、アクセス制御部１３０は、読み出しが要求されたデータが先読み領域２０１ａに記憶されていない場合には、当該データをＨＤＤから読み出してホスト装置３００に送信する。
【００６５】
また、アクセス制御部１３０は、ホスト装置３００から書き込み要求を受信したとき、先読み管理テーブルを参照して、書き込み先の記憶領域の内容が先読み領域２０１ａに記憶されているかを判定する。そして、アクセス制御部１３０は、書き込み先の記憶領域の内容が先読み領域２０１ａに記憶されている場合には、当該データを先読み領域２０１ａにおける対応する記憶領域へ書き込み、書き込み要求に対する応答をホスト装置３００に送信する。一方、アクセス制御部１３０は、書き込み先の記憶領域の内容が先読み領域２０１ａに記憶されていない場合には、当該データを先読み領域２０１ａではなくＨＤＤへ書き込み、書き込み要求に対する応答をホスト装置３００に送信する。
【００６６】
また、アクセス制御部１３０は、先読み管理テーブルを用いて、先読み領域２０１ａを管理する。第２の実施の形態では、アクセス制御部１３０は、先読み管理テーブルを参照して一定時間使用されていない先読み領域２０１ａ内の記憶領域を特定する。そして、特定した記憶領域のデータを先読み領域２０１ａから削除する。その際、先読み領域２０１ａの特定された記憶領域の中に、ホスト装置３００からの書き込み要求に応じて更新されたデータが存在する場合、当該データをディスクアレイ２００内のＨＤＤの対応する記憶領域へ書き込む。これにより、ＨＤＤ上の更新前のデータと、先読み領域２０１ａ上の更新後のデータとの整合性が保たれる。
【００６７】
なお、先読み領域２０１に記憶されたデータのうち、ホスト装置３００からの書き込み要求に応じて更新されたデータは、上記以外のタイミングでＨＤＤの対応する領域へ書き込まれてもよい。
【００６８】
アクセス回数取得部１４０は、一定時間間隔毎に、その時間内にホスト装置３００からアクセスが要求された回数を単位セグメント毎に監視し、監視したアクセス回数に関する情報をアクセス回数情報テーブルに一時的に格納する。
【００６９】
高負荷領域判定部１５０は、アクセス回数情報テーブルに登録されたセグメント毎のアクセス回数に基づいて高負荷領域を一定時間間隔毎に特定し、特定した高負荷領域に関する情報を高負荷領域情報テーブルへ登録する。
【００７０】
先読み判定部１６０は、登録された高負荷領域について時間経過に伴う位置の推移を一定時間間隔毎に監視する。具体的には、先読み判定部１６０は、登録された高負荷領域のうち、一定時間内のアクセス回数がほぼ同等で、記憶領域の大きさが一致する高負荷領域の先頭アドレスの位置関係を判定することで、高負荷領域について時間経過に伴う位置の推移を監視する。先読み判定部１６０は、監視した高負荷領域についての時間経過に伴う位置の推移に基づいて、巨視的にみるとシーケンシャルなアクセスパターンが発生したか判定する。
【００７１】
先読み実行部１７０は、一定時間内のアクセス回数がほぼ同等で、記憶領域の大きさが一致する高負荷領域の位置が、時間経過に伴って移動した場合に、この高負荷領域の位置の推移が巨視的にみるとシーケンシャルなアクセスパターンに該当すると判定する。この場合、先読み実行部１７０は、監視された高負荷領域についての時間経過に伴う位置の推移に基づいて、先読みに関する情報を算出する。先読みに関する情報には、先読みを開始する開始アドレスと、先読みする全記憶領域の大きさ（先読み総サイズ）と、先読みする速度（先読み速度）とが含まれる。
【００７２】
そして、先読み実行部１７０は、算出した先読みに関する情報に基づいて、一定時間間隔毎にディスクアレイ２００内のＨＤＤから先読み領域２０１ａへ先読みする。このとき、先読み実行部１７０は、先読みされた記憶領域に関する情報を先読み管理テーブルへ登録する。
【００７３】
先読み領域２０１ａは、先読み実行部１７０がディスクアレイ２００内のＨＤＤのいずれかの記憶領域から先読みした内容を一時的に格納する。
次に、図７〜９を用いて、ストレージ装置２が用いるテーブルについて説明する。
【００７４】
図７は、アクセス回数情報テーブルの例を示す図である。アクセス回数情報テーブル１１１は、一定時間内における単位セグメント毎のアクセス回数に関する情報を一時的に格納する。アクセス回数情報テーブル１１１は、アクセス回数情報記憶部１１０に記憶されている。アクセス回数情報テーブル１１１の内容は、一定時間間隔毎に更新される。アクセス回数情報テーブル１１１は、先頭アドレスおよびアクセス回数の項目を有する。
【００７５】
先頭アドレスの項目には、ディスクアレイ２００内のＨＤＤ内の各単位セグメントの先頭アドレスを示す情報が設定される。なお、図７の例では、単位セグメントの大きさは"２５６ＭＢ"である。
【００７６】
アクセス回数の項目には、一定時間内における単位セグメントへのアクセス回数を示す情報が設定される。なお、以下の説明では、例として、アクセス回数を検出する単位時間を"１分"とする。この場合、アクセス回数情報テーブル１１１は１分毎に更新される。
【００７７】
図８は、高負荷領域情報テーブルの例を示す図である。高負荷領域情報テーブル１２１は、高負荷領域に関する情報を格納する。高負荷領域情報テーブル１２１は、先読み管理情報記憶部１２０に記憶されている。高負荷領域情報テーブル１２１は、検出時刻、先頭アドレス、領域サイズ、平均アクセス回数および継続時間の項目を有する。
【００７８】
検出時刻の項目には、高負荷領域を検出した時刻を示す情報が設定される。検出時刻の項目に設定される時刻は、高負荷領域が検出された時間帯を識別するものであり、この時間帯は、高負荷領域の検出の基になるアクセス回数が検出された時間帯と一致する。
【００７９】
先頭アドレスの項目には、高負荷領域の先頭アドレスを示す情報が設定される。領域サイズの項目には、高負荷領域の大きさを示す情報が設定される。平均アクセス回数の項目には、高負荷領域に含まれる単位セグメント毎のアクセス回数の平均値を示す情報が設定される。
【００８０】
先読み判定部１６０は、異なる時間帯に検出された高負荷領域の中から、アクセス回数がほぼ同等で記憶領域の大きさが一致する高負荷領域を、対応する高負荷領域と見なして、位置の監視対象とする。対応する高負荷領域の監視は、その位置（具体的には、高負荷領域の先頭アドレス）が移動するまで継続される。継続時間の項目には、高負荷領域の位置の監視が継続されている時間を示す情報が設定される。また、継続時間の初期値としては、高負荷領域を検出する処理を実行するときの時間間隔が設定される。例えば、高負荷領域が１分毎に検出される場合、継続時間の初期値は図８のように"１"となる。
【００８１】
図８の高負荷領域情報テーブル１２１を例にすると、検出時刻“ｔ１”で検出された、領域サイズが“７６８ＭＢ”で平均アクセス回数が“４５６２”の高負荷領域と、次の検出時刻“ｔ＋１”で検出された、領域サイズが“７６８ＭＢ”で平均アクセス回数が“４５２２”の高負荷領域とが、対応する高負荷領域として特定されて、位置の監視対象となる。領域サイズが“７６８ＭＢ”の高負荷領域が検出時刻“ｔ１”で初めて検出されたものとすると、上記各高負荷領域のうち、前者の高負荷領域に対応する継続時間は“１”となり、後者の高負荷領域に対応する継続時間は“２”となる。
【００８２】
図９は、先読み管理テーブルの例を示す図である。先読み管理テーブル１２２は、先読みされた記憶領域に関する情報を一時的に格納する。先読み管理テーブル１２２は、先読み管理情報記憶部１２０に記憶されている。先読み管理テーブル１２２は、ホスト装置３００からのアクセス要求に応じて、データのアクセスを行う際に用いられる。先読み管理テーブル１２２は、読み出し元アドレス、書き込み先アドレス、領域サイズおよび先読み時刻の項目を有する。
【００８３】
読み出し元アドレスの項目には、ディスクアレイ２００内のＨＤＤにおける、先読みされた記憶領域の先頭アドレスを示す情報が設定される。書き込み先アドレスの項目には、先読み領域２０１ａ内における、先読みされた内容の書き込み先の記憶領域の先頭アドレスを示す情報が設定される。領域サイズの項目には、先読みされた記憶領域の大きさを示す情報が設定される。先読み時刻の項目には、先読みが実行された時刻を示す情報が設定される。
【００８４】
なお、先読み管理テーブル１２２は、先読み時刻の項目の代わりに、または先読み時刻の項目と共に、読み出し元アドレスへのアクセス回数を示す情報を設定するための項目を有してもよい。
【００８５】
次に、図１０〜１１を用いて、高負荷領域判定部１５０が高負荷領域を検出する例について説明する。高負荷領域判定部１５０は、図１０〜１１で説明する方法により、アクセス回数が閾値以上で、領域内でほぼ均等にアクセスが行われたと見なされる記憶領域を、高負荷領域として特定する。
【００８６】
図１０は、高負荷領域を検出する例を示す図である。ヒストグラム１１２は、ディスクアレイ２００内のＨＤＤにおける単位時間毎および単位セグメント毎の読み出し回数を、ヒストグラムとして表した図である。ヒストグラム１１２の縦軸は、単位セグメントのアクセス回数を示し、ヒストグラム１１２の横軸は、ディスクアレイ２００内のＨＤＤにおける単位セグメントを示す。
【００８７】
図１０上段のヒストグラム１１２に示すように、ある時間帯において、ディスクアレイ２００内のＨＤＤの単位セグメントＲ１のアクセス回数は“１７５０”であり、単位セグメントＲ２のアクセス回数は“１８００”であり、単位セグメントＲ３のアクセス回数は“５００”であり、単位セグメントＲ４のアクセス回数は“６００”であり、単位セグメントＲ５のアクセス回数は“４５０”であり、単位セグメントＲ６のアクセス回数は“２７５０”であったとする。
【００８８】
この場合、まず、高負荷領域判定部１５０は、アクセス回数が閾値以上である単位セグメントを抽出する。なお、閾値としては"０"より大きい値が用いられる。図１０において閾値を"１５００"とすると、図１０下段のヒストグラム１１２に示すように、単位セグメントＲ１，Ｒ２，Ｒ６が抽出される。
【００８９】
図１１は、高負荷領域を検出する例を示す図（続き）である。
次に、高負荷領域判定部１５０は、図１０で説明した方法で抽出した、アクセス回数が閾値以上である単位セグメントのうち、アクセス回数がほぼ同等であり、かつ、隣接する単位セグメントを結合する。なお、図１１の例では２つの単位セグメントが結合されるが、３つ以上の隣接する単位セグメントが結合される場合もある。
【００９０】
図１１上段のヒストグラム１１２に示すように、抽出した単位セグメントＲ１，Ｒ２，Ｒ６のうち、隣接する単位セグメントは、単位セグメントＲ１，Ｒ２である。また、アクセス回数がほぼ同等であることを、例えば、処理対象の単位セグメントのアクセス回数のうち、最大値と最小値との差が、最大値（または最小値）の所定割合（例えば、１０％）以下となることによって判定する。単位セグメントＲ１，Ｒ２はこの条件に合致するので、高負荷領域判定部１５０は、図１１下段のヒストグラム１１２に示すように、単位セグメントＲ１，Ｒ２，Ｒ６のうち、単位セグメントＲ１，Ｒ２を結合する。単位セグメントの結合の際、結合後のセグメントのアクセス回数は、結合前の各単位セグメントのアクセス回数の平均値になるようにする。
【００９１】
そして、高負荷領域判定部１５０は、図１１下段のヒストグラム１１２に示すような２つのセグメントを高負荷領域と特定して、特定した高負荷領域に関する情報を高負荷領域情報テーブル１２１へ登録する。
【００９２】
図１０〜１１で説明したように、高負荷領域判定部１５０は、ディスクアレイ２００内のＨＤＤにおける各単位セグメントから、アクセス回数が閾値以上であり、ほぼ均等にアクセスが行われた高負荷領域を検出する。その後、取得された高負荷領域についての時間経過に伴う位置の推移を先読み判定部１６０が監視することで、巨視的にみるとシーケンシャルなアクセスパターンが発生したか判定できる。
【００９３】
ここで、巨視的にみるとシーケンシャルなアクセスパターンは、ホスト装置３００における同一のアプリケーションの実行により発生する可能性が高い。また、同一のアプリケーションによりアクセスが要求された記憶領域は、その領域内でほぼ均等にアクセスが行われる可能性が高い。そのため、領域内でほぼ均等にアクセスが行われた記憶領域についての時間経過に伴う位置の推移を監視することで、巨視的にみるとシーケンシャルなアクセスパターンの発生を精度よく判定できる。
【００９４】
一方、領域内でのアクセス箇所のばらつき度合いが大きい記憶領域は、異なるアプリケーションによりアクセスが要求されている可能性が高い。例えば、ある記憶領域の一部に対して、あるアプリケーションがシーケンシャルなアクセス要求をし、同時に他のアプリケーションが一時的に大量のアクセス要求を行った場合、その記憶領域においてアクセス箇所のばらつきが大きくなり、均等にアクセスが行われたとは言えなくなる。このような記憶領域については、アクセス要求が、先読み精度の向上に寄与するようなある特定の傾向を有するとは言えない。
【００９５】
図１１で説明したように、高負荷領域判定部１５０は、単位セグメントあたりのアクセス回数の差がほぼ同等で隣接した単位セグメント同士を結合し、結合した記憶領域を高負荷領域として特定する。これにより、先読み判定部１６０の監視対象である記憶領域として、均等なアクセスが行われた記憶領域を検出することができる。よって、巨視的にみるとシーケンシャルなアクセスパターンの発生を精度よく判定できる。
【００９６】
また、図１０で説明したように、高負荷領域判定部１５０は、アクセス回数が閾値以上である単位セグメントを、高負荷領域の対象とする。これにより、ホスト装置３００からのアクセス要求がある程度集中した記憶領域を抽出でき、その結果、巨視的にみるとシーケンシャルなアクセスパターンの発生を精度よく判定できる。
【００９７】
また、アクセス回数が閾値以上である記憶領域に高負荷領域を限定することで、高負荷領域の位置の推移を監視する処理によるプロセッサ１０１の負荷を低減でき、高負荷領域を管理するための、ＲＡＭ１０２やＨＤＤ１０３等の記憶装置内の記憶領域を節約できる。
【００９８】
次に、図１２を用いて、先読み判定部１６０が先読みの有無を判定する例について説明する。先読み判定部１６０は、図１２で説明する方法により高負荷領域判定部１５０が検出した高負荷領域についての時間経過に伴う位置の推移を監視し、巨視的にみるとシーケンシャルなアクセスパターンに該当するかを判定することにより、先読みの有無を判定する。
【００９９】
図１２は、先読みの有無を判定する例を示す図である。ヒストグラム１１３，１１４は、検出された高負荷領域毎の平均アクセス回数を示す。ヒストグラム１１３，１１４の縦軸は、高負荷領域に含まれる単位セグメント毎の平均アクセス回数を示し、ヒストグラム１１３，１１４の横軸は、検出された高負荷領域の範囲を示す。
【０１００】
ヒストグラム１１３は、平均アクセス回数が“１７５０"である高負荷領域Ｒ１１と、平均アクセス回数が"２７５０"である高負荷領域Ｒ２１と、平均アクセス回数が"２０００"である高負荷領域Ｒ３１とが検出されたことを示す。
【０１０１】
ヒストグラム１１４は、平均アクセス回数が“１８００"である高負荷領域Ｒ１２と、平均アクセス回数が"２８００"である高負荷領域Ｒ２２と、平均アクセス回数が"１９５０"である高負荷領域Ｒ３２とが検出されたことを示す。
【０１０２】
ここで、時刻"ｔ"において、ヒストグラム１１３に示すような高負荷領域が検出され、次に、直近の時刻"ｔ＋１"において、ヒストグラム１１４に示すような高負荷領域が検出されたとする。
【０１０３】
この場合、まず、先読み判定部１６０は、直近に検出された高負荷領域と、同じ領域の大きさであり、かつ、平均アクセス回数がほぼ同等の高負荷領域を、対応する高負荷領域として、前回に検出された高負荷領域から抽出する。平均アクセス回数がほぼ同等であることは、例えば、平均アクセス回数の差が、一方の平均アクセス回数（例えば、前の時刻での平均アクセス回数）の所定割合（例えば、１０％）以下となることで判定される。
【０１０４】
図１２に示すように、高負荷領域Ｒ１１，１２は、平均アクセス回数がほぼ同等であり、大きさが同じである。そのため、直近である時刻"ｔ＋１"に検出された高負荷領域Ｒ１２に対応する高負荷領域として、前回（時刻"ｔ"）に検出された高負荷領域から高負荷領域Ｒ１１が抽出される。
【０１０５】
また、図１２に示すように、高負荷領域Ｒ２１，Ｒ２２は、平均アクセス回数がほぼ同等であり、大きさが同じである。そのため、直近である時刻"ｔ＋１"に検出された高負荷領域Ｒ２２に対応する高負荷領域として、前回（時刻"ｔ"）に検出された高負荷領域から高負荷領域Ｒ２１が抽出される。
【０１０６】
さらに、図１２に示すように、高負荷領域Ｒ３１，Ｒ３２は、平均アクセス回数がほぼ同等であり、大きさが同じである。そのため、直近である時刻"ｔ＋１"に検出された高負荷領域Ｒ３２に対応する高負荷領域として、前回（時刻"ｔ"）に検出された高負荷領域から高負荷領域Ｒ３１が抽出される。
【０１０７】
次に、先読み判定部１６０は、抽出した高負荷領域と、直近に検出された対応する高負荷領域との位置関係に基づいて、高負荷領域の移動の有無を次のように判定する。
高負荷領域Ｒ１１と高負荷領域Ｒ１２とは、重複している。この場合、先読み判定部１６０は、時刻"ｔ"から時刻"ｔ＋１"の間に、高負荷領域Ｒ１１から高負荷領域Ｒ１２へ移動したと判定する。このとき、先読み判定部１６０は、高負荷領域Ｒ１１，Ｒ１２におけるアクセスについて、巨視的にみるとシーケンシャルなアクセスパターンに該当すると判定する。また、この場合、先読み判定部１６０は、高負荷領域Ｒ１１ついての位置の推移の監視を終了し、高負荷領域Ｒ１２についての位置の推移の監視を開始する。
【０１０８】
なお、図示していないが、抽出した高負荷領域と、直近に検出された高負荷領域とが接する場合においても、先読み判定部１６０は、巨視的にみるとシーケンシャルなアクセスパターンに該当すると判定する。
【０１０９】
また、高負荷領域Ｒ２１は、高負荷領域Ｒ２２と記憶領域が一致している。この場合、先読み判定部１６０は、時刻"ｔ"から時刻"ｔ＋１"の間に、高負荷領域Ｒ２２が高負荷領域Ｒ２１から移動していないと判定する。このとき、先読み判定部１６０は、高負荷領域Ｒ２２について、今後、巨視的にみるとシーケンシャルなアクセスパターンに該当する可能性があると判定し、高負荷領域Ｒ２２についての位置の推移の監視を継続する。
【０１１０】
また、高負荷領域Ｒ３１は、高負荷領域Ｒ３２と重複しておらず、接してもいない。この場合、先読み判定部１６０は、高負荷領域Ｒ３１についての位置の推移の監視を終了し、高負荷領域Ｒ３２についての位置の推移の監視を開始する。
【０１１１】
このように、先読み判定部１６０は、領域の大きさが同じであり、平均アクセス回数がほぼ同等である高負荷領域についての時間経過に伴う位置の推移に基づいて、巨視的にみるとシーケンシャルなアクセスパターンの発生の有無を判定することができる。
【０１１２】
次に、図１３を用いて、先読み実行部１７０が先読みに関する情報を算出する例について説明する。先読み実行部１７０は、先読み判定部１６０が監視した高負荷領域についての時間経過に伴う位置の推移に基づいて、先読みするディスクアレイ２００内のＨＤＤの記憶領域を取得すると共に、先読みする速度を算出する。また、図１３において、高負荷領域が検出される一定の時間間隔は"１"であるものとし、先読みの時間間隔も同様であるものとする。
【０１１３】
図１３は、先読みの実行方法の例を示す図である。図１３上段は、高負荷領域が検出される時刻と、高負荷領域若しくは先読みする記憶領域との対応関係を示す図である。
高負荷領域１６１ａは、時刻"ｔ"において検出された高負荷領域である。高負荷領域１６１ａの先頭アドレスは"０"であり、高負荷領域１６１ａの大きさは"５１２ＭＢ"である。高負荷領域１６１ｂは、時刻"ｔ＋１"において検出された高負荷領域である。高負荷領域１６１ａと同様に、高負荷領域１６１ｂの先頭アドレスは"０"であり、高負荷領域１６１ｂの大きさは"５１２ＭＢ"である。高負荷領域１６１ｃは、時刻"ｔ＋２"において検出された高負荷領域である。高負荷領域１６１ｃの先頭アドレスは"５１２"であり、高負荷領域１６１ｃの大きさは"５１２ＭＢ"である。
【０１１４】
高負荷領域１６１ａ，１６１ｂ，１６１ｃそれぞれの間の平均アクセス回数は、ほぼ同等と判定されたものとする。また、図１３上段に示すように、高負荷領域１６１ｂと高負荷領域１６１ｃとは、接している。そのため、高負荷領域１６１ａ，１６１ｂ，１６１ｃに対するアクセスについて、先読み判定部１６０は、巨視的にみるとシーケンシャルなアクセスパターンに該当すると判定する。
【０１１５】
この場合、先読み実行部１７０は、時刻“ｔ＋３"に、先頭アドレス“５１２”であり、大きさが"５１２ＭＢ"である記憶領域１６１ｄに対して、ホスト装置３００からのアクセス要求がある程度集中すると予測する。また、先読み実行部１７０は、時刻“ｔ＋４"に、先頭アドレス“１０２４”であり、大きさが"５１２ＭＢ"である記憶領域１６１ｅに対して、ホスト装置３００からのアクセス要求がある程度集中すると予測する。
【０１１６】
このケースでは、先読み実行部１７０は、高負荷領域の次の移動先として予測される記憶領域１６１ｅの先読みを行う。
ここで、記憶領域１６１ｅは、時刻“ｔ＋３”の時間帯においてはアクセスが集中する可能性が低い。このため、記憶領域１６１ｅの内容については、即座に先読み領域２０１ａに格納される必要はなく、時刻“ｔ＋４”の時間帯の開始タイミングまでの間に先読み領域２０１ａへ格納されればよい。そこで、先読み実行部１７０は、記憶領域１６１ｅの内容を、対応する高負荷領域の移動速度に応じた転送速度で、ＨＤＤから先読み領域２０１ａへ転送させる。
【０１１７】
具体的には、先読み実行部１７０は、先読み時のデータ転送速度を、“（先読み対象領域のサイズ）／｛（高負荷領域の移動に要した時間）−（高負荷領域を検出する単位時間）｝”という式によって算出する。ここで、“高負荷領域の移動に要した時間”は、高負荷領域の移動が検知された時点で、その移動直前の高負荷領域に対応づけて高負荷領域情報テーブル１２１に登録されている継続時間の値に等しい。また、“高負荷領域を検出する単位時間”とは、アクセス回数を検出する際の単位時間と同じであり、ここでは“１分”とする。
【０１１８】
また、上記の式の分母は、現在の時刻から、高負荷領域の位置が次に移動することが予測される時間帯の開始時刻までの時間を示す。すなわち、上記の式は、高負荷領域の位置が次に移動することが予測される時間帯が開始されるまでの期間内に、先読み対象領域の内容全体の先読みを完了するためのデータ転送速度を算出するものである。
【０１１９】
ただし、上記の式の分母においては、“高負荷領域の移動に要した時間”と“高負荷領域を検出する単位時間”とが同じ値になる場合がある。このケースでは、先読み対象領域の内容をできるだけ短時間で先読み領域２０１ａへ転送することが望ましい。このため、先読み実行部１７０は、例えば、転送速度の上限値でデータ転送を行う。
【０１２０】
図１３の例では、先読み対象領域のサイズは、記憶領域１６１ｅのサイズである“５１２ＭＢ”であり、高負荷領域の移動に要した時間は、“（ｔ＋２）−ｔ＝２［分］”となる。したがって、先読み時のデータ転送速度は、“５１２／（１２０−６０）＝８．５［ＭＢ／秒］”と算出される。
【０１２１】
先読み実行部１７０は、時刻“ｔ＋３”の時間帯の開始時刻を起点として、算出された転送速度で先読み対象領域の内容を先読み領域２０１ａへ転送（コピー）させる。例えば、先読み実行部１７０は、先読み対象領域を同一サイズの複数の記憶領域に分割する。そして、分割した記憶領域それぞれの内容を、高負荷領域の位置が次に移動することが予測される時間帯の開始時刻までの期間、すなわち、上記の式の分母が示す長さの時間内に、同じ時間間隔で分散させて転送させる。これにより、先読み対象領域の内容が、上記の式によって算出された転送速度で先読み領域２０１ａへ転送されるようになる。
【０１２２】
図１３の下側に示す例では、先読み対象領域が４つの分割領域１６２ａ〜１６２ｄに分割されている。そして、先読み実行部１７０は、時刻“ｔ＋３”の時間帯の開始時を起点とした１分の期間に、分割領域１６２ａ〜１６２ｄそれぞれの内容の読み出しが等間隔で行われるように読み出し要求コマンドを発行する。
【０１２３】
ストレージ制御装置１００では、先読みが実行される期間にも、ホスト装置３００からの要求に応じたＨＤＤへのアクセスも実行されている。上記のように高負荷領域の移動速度に応じた転送速度で先読みを行うことで、ＨＤＤに対するアクセス負荷が必要以上に高くなる可能性を低減できる。その結果、先読みによるアクセス処理が、ホスト装置３００からの要求に応じたＨＤＤへのアクセス処理に与える影響を小さくすることができ、ホスト装置３００からの要求に対する応答性能の低下を抑制できる。
【０１２４】
なお、先読み時のデータ転送速度を算出するための上記の式において、“高負荷領域の移動に要した時間”と“高負荷領域を検出する単位時間”とが同じ値になる場合には、先読み実行部１７０は、例えば、先読み対象領域のデータを、読み出し要求コマンドを１回だけ発行することによって一度に転送させる。
【０１２５】
また、先読み実行部１７０は、記憶領域１６１ｄに記憶されたデータについても先読みを行ってもよい。ただし、記憶領域１６１ｄに記憶されたデータを先読みする意義があるケースは、対応する高負荷領域が最初に移動したことが検知されたケースのみである。なぜなら、対応する高負荷領域が２回目に移動したことが検知された場合、移動前の高負荷領域のデータは、１回目に移動したことが検知された時点ですでに先読みされているからである。
【０１２６】
図１４は、先読みの実行方法の別の例を示す図である。
図１４において、高負荷領域１６３ａは、時刻"ｔ"において検出された高負荷領域である。高負荷領域１６３ａの先頭アドレスは"０"であり、高負荷領域１６３ａの大きさは"５１２ＭＢ"である。高負荷領域１６３ｂは、時刻"ｔ＋１"において検出された高負荷領域である。高負荷領域１６３ａと同様に、高負荷領域１６３ｂの先頭アドレスは"０"であり、高負荷領域１６３ｂの大きさは"５１２ＭＢ"である。高負荷領域１６３ｃは、時刻"ｔ＋２"において検出された高負荷領域である。高負荷領域１６３ｃの先頭アドレスは"２５６"であり、高負荷領域１６３ｃの大きさは"５１２ＭＢ"である。
【０１２７】
高負荷領域１６３ａ，１６３ｂ，１６３ｃそれぞれの間の平均アクセス回数は、ほぼ同等と判定されるものとする。また、高負荷領域１６３ｃの一部は、高負荷領域１６３ｂと重複している。そのため、高負荷領域１６３ａ，１６３ｂ，１６３ｃに対するアクセスについて、先読み判定部１６０は、巨視的にみるとシーケンシャルなアクセスパターンに該当すると判定する。
【０１２８】
この場合、先読み実行部１７０は、時刻“ｔ＋３"に、先頭アドレス“２５６”であり、大きさが"５１２ＭＢ"である記憶領域１６３ｄに対して、ホスト装置３００からのアクセス要求がある程度集中すると予測する。また、先読み実行部１７０は、時刻“ｔ＋４"に、先頭アドレス“５１２”であり、大きさが"５１２ＭＢ"である記憶領域１６３ｅに対して、ホスト装置３００からのアクセス要求がある程度集中すると予測する。
【０１２９】
このケースでも、先読み実行部１７０は、高負荷領域の次の移動先として予測される記憶領域１６３ｅの先読みを行う。また、記憶領域１６３ｅの先読み時におけるデータ転送速度は、“５１２／（１２０−６０）＝８．５［ＭＢ／秒］”と算出される。先読み実行部１７０は、例えば、記憶領域１６３ｅを複数の分割領域に分割する。そして、先読み実行部１７０は、時刻“ｔ＋４”に対応する時間帯の開始時刻までの１分の期間に、分割領域それぞれの内容の読み出しが等間隔で行われるように読み出し要求コマンドを発行する。
【０１３０】
なお、先読み実行部１７０は、高負荷領域の次の移動先として予測される記憶領域１６３ｅのうち、それ以前に検出された高負荷領域１６３ａ〜１６３ｃと重複していない記憶領域１６３ｅ２の内容のみを先読みしてもよい。
【０１３１】
ここで、記憶領域１６３ｅのうち、それ以前に検出された高負荷領域１６３ａ〜１６３ｃと重複している記憶領域１６３ｅ１に記憶されたデータを先読みする意義があるケースは、対応する高負荷領域が最初に移動したことが検知されたケースのみである。なぜなら、対応する高負荷領域が２回目に移動したことが検知された場合、移動前の高負荷領域のうち、それより前に検出された高負荷領域と重複している記憶領域の内容は、１回目に移動したことが検知された時点ですでに先読みされているからである。
【０１３２】
ここで、高負荷領域の次の移動先として予測される記憶領域のうち、それ以前に検出された高負荷領域と重複していない記憶領域の内容のみを先読みする処理について、図１４の例を用いて具体的に説明する。
【０１３３】
時刻“ｔ＋２”では、上記のように、高負荷領域の次の移動先として予測される記憶領域として、記憶領域１６３ｅが特定される。この時点では、それより前に検出された高負荷領域１６３ａ，１６３ｂの内容は先読み領域２０１ａに格納されていない。このため、先読み実行部１７０は、記憶領域１６３ｅ全体の内容を読み出して、先読み領域２０１ａに書き込む。
【０１３４】
また、時刻“ｔ＋４”において記憶領域１６３ｅが高負荷領域として実際に検出された場合には、高負荷領域の次の移動先として、先頭アドレスが“７６８”で大きさが“５１２ＭＢ”の記憶領域（図示せず）が予測される。しかし、先頭アドレスが“７６８”で大きさが“５１２ＭＢ”の記憶領域のうち、記憶領域１６３ｅと重複している、前半の２５６ＭＢの記憶領域の内容は、時刻“ｔ＋２”に対応する時間帯の終了時点ですでに先読み領域２０１ａに格納されている。このため、時刻“ｔ＋４”に対応する時間帯の終了時には、先頭アドレスが“７６８”で大きさが“５１２ＭＢ”の記憶領域のうち、記憶領域１６３ｅと重複していない、後半の２５６ＭＢの記憶領域の内容だけが、先読み領域２０１ａへ書き込まれればよい。
【０１３５】
このように、先読み実行部１７０は、高負荷領域の次の移動先として予測される記憶領域のうち、それ以前に検出された高負荷領域と重複していない記憶領域１６３ｅ２の内容のみを先読みしてもよい。これにより、ＨＤＤ上の同じ記憶領域の内容が重複して先読み領域２０１ａへ転送されることがなくなり、ＨＤＤに対するアクセス性能が低下することを抑制できる。
【０１３６】
また、図１４の例において、記憶領域１６３ｅ１，１６３ｅ２の両方の内容を先読みする場合には、記憶領域１６３ｅ１，１６３ｅ２それぞれのデータ転送速度が個別に算出されてもよい。図１４でわかるように、記憶領域１６３ｅ１は、時刻“ｔ＋４”より前の時刻“ｔ＋３”に対応する時間帯でも、ホスト装置３００からのアクセス要求が集中する可能性が高い。このため、記憶領域１６３ｅ１に記憶された内容については、可能な限り高速で先読み領域２０１ａへ転送されることが望ましい。一方、記憶領域１６３ｅ２については、時刻“ｔ＋３”に対応する時間帯にはホスト装置３００からのアクセス要求が集中する可能性が低い。このため、記憶領域１６３ｅ２については、領域内のすべての内容の転送（コピー）が、時刻“ｔ＋４”に対応する時間帯の開始時刻までの１分以内に完了できるように、転送速度が算出されればよい。
【０１３７】
したがって、先読み実行部１７０は、記憶領域１６３ｅ１については、転送速度の上限値でデータ転送を行い、記憶領域１６３ｅ２については、前述した式を用いて算出した転送速度でデータ転送を行ってもよい。ただし、式の分子に設定される“先読み対象領域のサイズ”としては、記憶領域１６３ｅ２のサイズが設定される。これにより、ホスト装置３００から要求されたアクセス先の記憶領域について先読みが実行済みである確率を高めることができ、その結果、アクセス要求に対する応答性能を向上させることができる。
【０１３８】
次に、図１５〜１８を用いて、ストレージ制御装置１００が実行する処理について、フローチャートを用いて説明する。ここでは、ストレージ制御装置１００は、ディスクアレイ２００内のＨＤＤ２０２に対して処理を行うものとする。
【０１３９】
図１５は、先読みの有無を判定する処理の例を示すフローチャートである。図１５〜１６の処理は、一定時間間隔（ここでは、“１”分とする）毎に実行されるものとする。また、図１４〜１５の処理の開始前に、アクセス回数情報テーブル１１１の登録情報は、クリアされる。以下、図１４〜１５に示す処理をステップ番号に沿って説明する。
【０１４０】
（Ｓ１１）アクセス回数取得部１４０は、ＨＤＤ２０２内の単位セグメント毎に、一定時間内におけるアクセス回数を取得し、取得した単位セグメント毎のアクセス回数に関する情報をアクセス回数情報テーブル１１１へ登録する。このとき、先頭アドレスの項目には、各単位セグメントの先頭アドレスが設定され、アクセス回数の項目には、対応する単位セグメントへのアクセス回数を示す情報が設定される。
【０１４１】
単位セグメント毎のアクセス回数は、アクセス制御部１３０に対するホスト装置３００からのアクセス要求を監視することにより取得できる。また、単位セグメント毎のアクセス回数は、ホスト装置３００からのアクセス要求のログから取得することもできる。
【０１４２】
（Ｓ１２）高負荷領域判定部１５０は、アクセス回数が所定の閾値（ただし、“０”より大きい）以上である単位セグメントを、ステップＳ１１で登録した各単位セグメントから抽出する。具体的には、高負荷領域判定部１５０は、アクセス回数が閾値以上であるレコードをアクセス回数情報テーブル１１１から検索する。
【０１４３】
（Ｓ１３）高負荷領域判定部１５０は、ステップＳ１２で抽出された単位セグメントのうち、隣接する複数の単位セグメントを単位セグメント群として特定する。具体的には、高負荷領域判定部１５０は、先頭アドレスの差が単位セグメントの大きさである複数のレコードを、ステップＳ１２で検索されたレコードから検索する。単位セグメントの大きさを示す情報は、例えば、アクセス回数情報記憶部１１０内の記憶領域に予め設定されており、以下同様とする。
【０１４４】
高負荷領域判定部１５０は、特定された単位セグメント群から１つの単位セグメント群を選択する。
（Ｓ１４）高負荷領域判定部１５０は、単位セグメント群に含まれる単位セグメント間のアクセス回数が、ほぼ同等であるかを判定する。高負荷領域判定部１５０は、例えば、選択された単位セグメント群に含まれる各単位セグメントのアクセス回数のうち、最大値と最小値との差が、最大値（または最小値）の所定割合（例えば、１０％）以下となる場合に、アクセス回数がほぼ同等であると判定する。
【０１４５】
アクセス回数がほぼ同等である場合、処理をステップＳ１５へ進める。アクセス回数がほぼ同等と判定されなかった場合、処理をステップＳ１６へ進める。
（Ｓ１５）高負荷領域判定部１５０は、単位セグメント群に含まれる単位セグメントを結合し、結合した記憶領域を高負荷領域として高負荷領域情報テーブル１２１に登録する。このとき、検出時刻の項目には、前回登録したときの検出時刻に本処理が実行される時間間隔（ここでは、"１"）を加算した時刻を示す情報が設定される。先頭アドレスの項目には、高負荷領域の先頭アドレス（上記各単位セグメントの先頭アドレスのうち最も小さいアドレス）が設定される。また、領域サイズの項目には、高負荷領域の大きさ（各単位セグメントの大きさの合計）が設定される。平均アクセス回数の項目には、上記各単位セグメントのアクセス回数の平均値が設定され、継続時間の項目には、本処理が実行される時間間隔（ここでは、"１"）が暫定的に設定される。
【０１４６】
なお、ステップＳ１４〜Ｓ１５において、単位セグメント群に３つ以上の単位セグメントが含まれているとき、一部の隣接する単位セグメントのみアクセス回数がほぼ同等となる場合がある。この場合、アクセス回数がほぼ同等となる上記一部の単位セグメントのみを結合して、高負荷領域情報テーブル１２１へ登録する。
【０１４７】
（Ｓ１６）高負荷領域判定部１５０は、ステップＳ１３で特定された単位セグメント群を全て選択済か判定する。単位セグメント群を全て選択済である場合、処理をステップＳ１７へ進める。未選択の単位セグメント群が存在する場合、処理をステップＳ１３へ進める。
【０１４８】
（Ｓ１７）高負荷領域判定部１５０は、ステップＳ１２で抽出された単位セグメントのうち、ステップＳ１５で結合されていない単位セグメントを高負荷領域として、高負荷領域情報テーブル１２１へ登録する。高負荷領域情報テーブル１２１への登録内容のうち、検出時刻および継続時間の各項目への登録内容は、ステップＳ１５と同様である。また、先頭アドレスの項目には、当該単位セグメントの先頭アドレスが設定され、平均アクセス回数の項目には、当該単位セグメントのアクセス回数がそのまま設定される。
【０１４９】
図１６は、先読みの有無を判定する処理の例を示すフローチャート（続き）である。
（Ｓ２１）先読み判定部１６０は、現在処理対象としている最新の時間帯（すなわち、ステップＳ１５，Ｓ１７で登録した検出時刻が示す時間帯）に登録した高負荷領域を１つ選択する。具体的には、先読み判定部１６０は、最も大きい（直近の）検出時刻を含むレコードを高負荷領域情報テーブル１２１から検索し、検索したレコードの１つを選択する。
【０１５０】
（Ｓ２２）先読み判定部１６０は、ステップＳ２１で選択した高負荷領域と同じ大きさの高負荷領域を、前回の時間帯に登録した高負荷領域から次のように検索する。まず、先読み判定部１６０は、前回の検出時刻（“直近の検出時刻−本処理が実行される時間間隔"）を含むレコードを高負荷領域情報テーブル１２１から検索する。次に、先読み判定部１６０は、検索されたレコードから、ステップＳ２１で選択したレコードの領域サイズと一致する領域サイズを含むレコードを検索する。
【０１５１】
先読み判定部１６０は、前回の時間帯に登録されている高負荷領域から、同じ大きさの高負荷領域が検索されたか（すなわち、同じ大きさの高負荷領域が前回に登録されたか）判定する。同じ大きさの高負荷領域が前回に登録されている場合、処理をステップＳ２３へ進める。同じ大きさの高負荷領域が前回に登録されていない場合、処理をステップＳ２９へ進める。
【０１５２】
（Ｓ２３）先読み判定部１６０は、ステップＳ２２で検索された高負荷領域の中から、平均アクセス回数が、ステップＳ２１で選択した高負荷領域の平均アクセス回数とほぼ同等である高負荷領域を検索する。具体的には、先読み判定部１６０は、平均アクセス回数の登録値が、ステップＳ２１で選択したレコードの平均アクセス回数とほぼ同等であるレコードを、ステップＳ２２で検索されたレコードから検索する。
【０１５３】
先読み判定部１６０は、平均アクセス回数がステップＳ２１で選択した高負荷領域の平均アクセス回数とほぼ同等である高負荷領域が検索されたか判定する。すなわち、先読み判定部１６０は、ステップＳ２２で検索された高負荷領域に、ステップＳ２１で選択した高負荷領域とほぼ同等の平均アクセス回数の高負荷領域が存在するか判定する。
【０１５４】
ステップＳ２１で選択した高負荷領域とほぼ同等の平均アクセス回数の高負荷領域が存在する場合、処理をステップＳ２４へ進める。ステップＳ２１で選択した高負荷領域とほぼ同等の平均アクセス回数の高負荷領域が存在しない場合、処理をステップＳ２９へ進める。
【０１５５】
（Ｓ２４）先読み判定部１６０は、ステップＳ２３で検索された高負荷領域から、ステップＳ２１で選択した高負荷領域と重複するか、または接する高負荷領域を検索する。ステップＳ２１で選択した高負荷領域と重複するか、または接する高負荷領域が存在する場合、処理をステップＳ２５へ進める。ステップＳ２１で選択した高負荷領域と重複せず、かつ、接しない高負荷領域のみが存在する場合、処理をステップＳ２９へ進める。
【０１５６】
（Ｓ２５）先読み判定部１６０は、ステップＳ２４で検索された高負荷領域の先頭アドレスと、ステップＳ２１で選択した高負荷領域の先頭アドレスとの差が“０”であるか判定する。具体的には、先読み判定部１６０は、ステップＳ２１で選択したレコードの先頭アドレスと、ステップＳ２４で検索されたレコードの先頭アドレスとが一致するか判定する。すなわち、先読み判定部１６０は、ステップＳ２４で検索された高負荷領域と、ステップＳ２１で選択した高負荷領域の位置とが一致するか判定する。
【０１５７】
ステップＳ２４で検索された高負荷領域と一致する場合、処理をステップＳ２６へ移動する。ステップＳ２４で検索された高負荷領域と一致しない場合（すなわち、ステップＳ２４で検索された高負荷領域とその一部のみが重複するか、または、各高負荷領域が接する場合）、処理をステップＳ２７へ移動する。
【０１５８】
（Ｓ２６）先読み判定部１６０は、ステップＳ２１で選択した高負荷領域の継続時間を"ステップＳ２４で検索された高負荷領域の継続時間＋本処理が実行される時間間隔"で更新する。具体的には、先読み判定部１６０は、ステップＳ２１で選択したレコードの継続時間を、"ステップＳ２４で検索されたレコードの継続時間＋本処理が実行される時間間隔"で更新する。そして、処理をステップＳ２９へ進める。
【０１５９】
（Ｓ２７）ステップＳ２５で"ＮＯ"と判定された場合、高負荷領域が移動したことが検知される。先読み実行部１７０は、まず、高負荷領域の位置の移動方向および移動量に基づいて、先読み対象領域を決定する。
【０１６０】
先読み判定部１６０は、ステップＳ２４で検索された高負荷領域の先頭アドレスと、ステップＳ２１で選択した高負荷領域の先頭アドレスとの大小を比較することで、高負荷領域の移動方向を判定する。前者の方が小さい場合、高負荷領域の位置はアドレスが大きくなる方向に移動したと判定され、後者の方が小さい場合、高負荷領域の位置はアドレスが小さくなる方向に移動したと判定される。以下、アドレスが大きくなる方向を“後方”と記述し、アドレスが小さくなる方向を“前方”と記述する場合がある。
【０１６１】
先読み判定部１６０は、ステップＳ２１で選択した高負荷領域の位置を、ステップＳ２４で検索された高負荷領域の先頭アドレスと、ステップＳ２１で選択した高負荷領域の先頭アドレスとの差（すなわち、移動量）の分だけ、判定された移動方向にシフトした記憶領域を、先読み対象領域に決定する。
【０１６２】
なお、図１４で説明したように、上記手順で決定された先読み対象領域のうち、これより前に検出された高負荷領域と重複していない記憶領域のみが、最終的な先読み対象領域に決定されてもよい。
【０１６３】
また、先読み判定部１６０は、高負荷領域の位置の移動量と、移動に要した時間とに基づいて、決定した先読み対象領域に記憶されたデータの転送速度を、前述した式にしたがって決定する。なお、移動に要した時間は、ステップＳ２１で選択したレコードの継続時間の項目から取得できる。
【０１６４】
（Ｓ２８）先読み判定部１６０は、ステップＳ２７で決定された、先読み対象領域を示す情報（例えば、先頭アドレスと領域のサイズ）とデータ転送速度とを先読み実行部１７０に通知して、先読みの実行を依頼する。これにより、先読み実行部１７０によって当該先読み対象領域の先読みが実行される。先読み処理の詳細は、図１７において後述する。
【０１６５】
なお、先読み判定部１６０は、先読み実行部１７０に対して、データ転送速度を通知する代わりに、先読み対象領域のサイズ（すなわち、上記の式の分子の値）と、高負荷領域の位置が次に移動することが予測される時間帯の開始時刻までの時間（すなわち、上記の式の分母の値）とを通知してもよい。
【０１６６】
（Ｓ２９）先読み判定部１６０は、最新の時間帯に登録した高負荷領域をステップＳ２１で全て選択済みか判定する。高負荷領域を全て選択済みである場合、処理を終了する。未選択の高負荷領域が存在する場合、処理をステップＳ２１へ進める。
【０１６７】
図１７は、先読み処理の例を示すフローチャートである。図１７で説明する処理は、図１６のステップＳ２８で先読み依頼が通知されたことを契機に、先読み対象領域毎に実行される。この際、先読み通知依頼と共に、先読みに関する情報として、先読み対象領域を示す情報と、データ転送速度とが通知される。以下、図１７に示す処理をステップ番号に沿って説明する。
【０１６８】
（Ｓ４１）先読み実行部１７０は、先読み対象領域を所定数の分割領域に分割する。なお、先読み対象領域の分割数や、先読み対象領域のサイズやデータ転送速度に応じて可変とされてもよい。
【０１６９】
（Ｓ４２）先読み実行部１７０は、各分割領域の内容が、先読み判定部１６０から通知されたデータ転送速度で先読み領域２０１ａへ転送されるように、各分割領域についての読み出し時刻を算出する。各分割領域についての読み出し時刻は、等間隔に設定される。なお、先頭の分割領域についての読み出し時刻は、現在の時刻となる。
【０１７０】
（Ｓ４３）先読み実行部１７０は、読み出し時刻が現在時刻に一致した分割領域の内容を、ＨＤＤ２０２から読み出して先読み領域２０１ａへ転送するための読み出し要求コマンドを作成し、作成した読み出し要求コマンドをＨＤＤ２０２へ発行する。これにより、該当分割領域の内容全体がＨＤＤ２０２から先読み領域２０１ａへコピーされる。
【０１７１】
なお、先読み領域２０１ａに空き領域が存在しない場合、先読み実行部１７０は、本処理（先読み処理）を終了してもよい。
（Ｓ４４）先読み実行部１７０は、ステップＳ４１で分割したすべての分割領域について、読み出し要求の発行が完了したかを判定する。すべての分割領域についての読み出し要求の発行が完了した場合、処理をステップＳ４６に進める。読み出し要求を発行していない分割領域が存在する場合、処理をステップＳ４５に進める。
【０１７２】
（Ｓ４５）先読み実行部１７０は、次に読み出しが要求される分割領域についての読み出し時刻になったかを判定する。このステップＳ４５の判定処理は、現在時刻が該当読み出し時刻になるまで繰り返される。そして、現在時刻が該当読み出し時刻になった場合、処理をステップＳ４３に進める。
【０１７３】
（Ｓ４６）ステップＳ４４で“ＹＥＳ”と判定された場合、１つの先読み対象領域の内容の先読みが完了したことになる。先読み実行部１７０は、先読みが完了した先読み対象領域を示す情報（読み出し元アドレス、書き込み先アドレス、領域サイズおよび先読み時刻）を、先読み管理テーブル１２２に登録する。
【０１７４】
図１８は、アクセス制御処理の例を示すフローチャートである。図１８の処理は、ホスト装置３００からＨＤＤ２０２に対してアクセス要求が送信されたことを契機に実行される。アクセス要求には、アクセスの対象となるＨＤＤ２０２内の記憶領域の先頭アドレスを示す情報と、その記憶領域の大きさを示す情報とが含まれる。以下、図１８に示す処理をステップ番号に沿って説明する。
【０１７５】
（Ｓ５１）アクセス制御部１３０は、アクセスが要求された記憶領域を示す情報と、先読み管理テーブル１２２とを照合することで、アクセスが要求された記憶領域が先読みされているかを判定する。アクセスが要求された記憶領域が先読みされている場合、処理をステップＳ５２へ進める。アクセスが要求された記憶領域が先読みされていない場合、処理をステップＳ５３へ進める。
【０１７６】
（Ｓ５２）アクセス制御部１３０は、先読み管理テーブル１２２に登録された情報に基づいて、ＳＳＤ２０１の先読み領域２０１ａに対してアクセスする。
具体的には、アクセス制御部１３０は、ホスト装置３００から読み出しを要求された場合、先読み管理テーブル１２２に登録された情報に基づいて、読み出しが要求されたデータのＳＳＤ２０１における記憶領域の情報を取得する。アクセス制御部１３０は、取得した記憶領域の情報を読み出し元の情報として設定した読み出し要求コマンドを、ＳＳＤ２０１へ発行する。これにより、ＳＳＤ２０１の先読み領域２０１ａから該当するデータが読み出され、アクセス制御部１３０は、読み出されたデータを受信する。
【０１７７】
また、アクセス制御部１３０は、ホスト装置３００から書き込みを要求された場合、先読み管理テーブル１２２に登録された情報に基づいて、書き込みが要求されたＨＤＤ２０２内の記憶領域に対応するＳＳＤ２０１における記憶領域の情報を取得する。アクセス制御部１３０は、取得した記憶領域の情報を書き込み先の情報として設定した書き込み要求コマンドをＳＳＤ２０１へ発行する。これにより、ＳＳＤ２０１の先読み領域２０１ａの該当領域へ、書き込みが要求されたデータが書き込まれ、その領域の内容が更新される。
【０１７８】
なお、このようなデータの書き込みを行った場合、アクセス制御部１３０は、その後の所定のタイミングで、更新された先読み領域２０１ａ内のデータをＨＤＤ２０２の対応する記憶領域へ書き込む。これにより、先読み領域２０１ａ内のデータと、ＨＤＤ２０２内のデータとが同期される。
【０１７９】
（Ｓ５３）アクセス制御部１３０は、ＨＤＤ２０２のデータに対してアクセスする。具体的には、アクセス制御部１３０は、ホスト装置３００から要求されたＨＤＤ２０２上の記憶領域をアクセス先として設定したアクセス要求コマンドを、ＨＤＤ２０２へ発行する。
【０１８０】
（Ｓ５４）アクセス制御部１３０は、アクセス結果をホスト装置３００へ送信する。具体的には、アクセス制御部１３０は、ホスト装置３００からデータの読み出しを要求された場合、先読み領域２０１ａまたはＨＤＤ２０２から読み出したデータを、ホスト装置３００へ送信する。一方、アクセス制御部１３０は、ホスト装置３００からデータの書き込みを要求された場合、書き込み完了通知をホスト装置３００へ送信する。
【０１８１】
図１８で説明したように、アクセス制御部１３０は、ホスト装置３００から読み出しが要求されたとき、読み出しが要求されたデータがＳＳＤ２０１上の先読み領域２０１ａに記憶されている場合、先読み領域２０１ａからデータを読み出す。一方、読み出しが要求されたデータが先読み領域２０１ａに記憶されていない場合、ＨＤＤ２０２上の記憶領域からデータを読み出す。
【０１８２】
また、アクセス制御部１３０は、ホスト装置３００から書き込みが要求されたとき、書き込みが要求された記憶領域が先読みされている場合、先読み領域２０１ａ内の対応する記憶領域へデータを書き込む。一方、書き込みが要求された記憶領域が先読みされていない場合、ＨＤＤ２０２上の記憶領域からデータを読み出す。
【０１８３】
ＳＳＤ２０１に対するデータのアクセス速度は、ＨＤＤ２０２より速い。そのため、先読みされている記憶領域に対してホスト装置３００からアクセスが要求された場合、ストレージ制御装置１００は、その要求に対して記憶領域に高速にアクセスできる。よって、先読みされている記憶領域に対してホスト装置３００からアクセスが要求される確率が上がるほど、ホスト装置３００からのアクセス要求に対するストレージ装置２の応答性能が向上する。
【０１８４】
第２の実施の形態のストレージ装置２によれば、領域内でほぼ均等にアクセスが行われ、かつ、ある程度アクセス要求が集中した記憶領域を、高負荷領域として検出する。そして、検出した高負荷領域について時間経過に伴う位置の推移を監視することで、巨視的にみるとシーケンシャルなアクセスパターンが発生したかを判定できる。
【０１８５】
また、巨視的にみるとシーケンシャルなアクセスパターンが発生したと判定した場合、高負荷領域についての位置の推移に基づいて今後アクセス要求が集中する記憶領域を予測し、予測した記憶領域から先読みを実行する。これにより、ホスト装置３００からアクセスが要求される記憶領域の予測の精度が向上し、先読みした記憶領域に対してホスト装置３００からアクセスが要求される確率が高くなる。よって、ホスト装置３００からのアクセス要求に対するストレージ装置２の応答性能が向上する。
【０１８６】
なお、第２の実施の形態のストレージ装置２では、先読みするデータの読み出し元としてＨＤＤ２０２内を用いて、先読みするデータの書き込み先としてＳＳＤ２０１を用いた。しかし、各用途に用いる記憶装置は、先読みするデータの読み出し元として用いる記憶装置より、先読みするデータの書き込み先として用いる記憶装置に対するアクセス速度が速ければ、上記に限定されるものではない。例えば、先読みするデータの読み出し元の記憶装置としてＳＳＤを用いて、先読みするデータの書き込み先の記憶装置としてＲＡＭを用いてもよい。
【０１８７】
また、第２の実施の形態のストレージ装置２では、高負荷領域が検出される一定の時間間隔と同じ時間間隔で先読みを実行するが、高負荷領域が検出される一定の時間間隔と異なる時間間隔で先読みを実行してもよい。
【０１８８】
また、第２の実施の形態のストレージ装置２では、先読み領域２０１ａのうち、一定時間使用されていない記憶領域内のデータを削除するが、アクセス回数の小さい記憶領域内のデータを削除してもよい。
【０１８９】
なお、前述のように、第１の実施の形態の情報処理は、ストレージ装置１０にプログラムを実行させることで実現でき、第２の実施の形態の情報処理は、ストレージ制御装置１００にプログラムを実行させることで実現できる。このようなプログラムは、コンピュータ読み取り可能な記録媒体に記録しておくことができる。記録媒体としては、例えば、磁気ディスク、光ディスク、光磁気ディスク、半導体メモリ等を使用できる。磁気ディスクには、ＦＤおよびＨＤＤが含まれる。光ディスクには、ＣＤ、ＣＤ−Ｒ（Recordable）／ＲＷ（Rewritable）、ＤＶＤおよびＤＶＤ−Ｒ／ＲＷが含まれる。
【０１９０】
プログラムを流通させる場合、例えば、当該プログラムを記録した可搬記録媒体が提供される。また、プログラムを他のコンピュータの記憶装置に格納しておき、ネットワーク経由でプログラムを配布することもできる。コンピュータは、例えば、可搬記録媒体に記録されたプログラムまたは他のコンピュータから受信したプログラムを、記憶装置（例えば、ＨＤＤ１０３）に格納し、当該記憶装置からプログラムを読み込んで実行する。ただし、可搬記録媒体から読み込んだプログラムを直接実行してもよく、他のコンピュータからネットワークを介して受信したプログラムを直接実行してもよい。また、上記の情報処理の少なくとも一部を、ＤＳＰ（Digital Signal Processor）、ＡＳＩＣ（Application Specific Integrated Circuit）、ＰＬＤ（Programmable Logic Device）等の電子回路で実現することも可能である。
【０１９１】
以上の第１および第２の実施の形態を含む実施の形態に関し、さらに以下の付記を開示する。
（付記１）  第１の記憶装置と、前記第１の記憶装置よりアクセス速度が高い第２の記憶装置と、制御装置とを有するストレージ装置において、
前記制御装置は、
前記第１の記憶装置における一定サイズ毎の単位記憶領域のうち、アクセス回数が０より大きい所定回数以上かつ類似する複数の単位記憶領域が連続する記憶領域を、監視領域として一定時間間隔で抽出する抽出部と、
前記抽出部によって抽出された前記監視領域のうち同一サイズの監視領域の前記第１の記憶装置における位置が時間経過にしたがって移動したことを検知したとき、前記同一サイズの監視領域の移動方向に基づいて、アクセスが予測される予測記憶領域を前記第１の記憶装置の記憶領域から特定し、前記予測記憶領域の内容が前記第２の記憶装置へコピーされるように制御する予測部と、
前記第１の記憶装置の記憶領域に対するアクセス要求を受けたとき、アクセス要求先の記憶領域の内容が前記第２の記憶装置にコピーされている場合には、前記第２の記憶装置におけるコピー先の記憶領域へのアクセスが行われるように制御し、アクセス要求先の記憶領域の内容が前記第２の記憶装置にコピーされていない場合には、前記第１の記憶装置におけるアクセス要求先の記憶領域へのアクセスが行われるように制御するアクセス制御部と、
を有することを特徴とするストレージ装置。
【０１９２】
（付記２）  前記予測部は、隣接する時間帯に抽出された前記同一サイズの監視領域について、互いの監視領域の一部のみが重複するか、または監視領域が互いに接する場合に、前記同一サイズの監視領域の前記第１の記憶装置における位置が移動したと判定することを特徴とする付記１記載のストレージ装置。
【０１９３】
（付記３）  前記予測部は、隣接する時間帯に抽出された、アクセス回数が類似する前記同一サイズの監視領域を、移動の判定対象とすることを特徴とする付記２記載のストレージ装置。
【０１９４】
（付記４）  前記予測部は、隣接する時間帯に抽出された前記同一サイズの監視領域の前記第１の記憶装置における位置が移動したと判定すると、当該同一サイズの監視領域のうちの移動後の監視領域の位置をその移動方向側に移動量分だけシフトした記憶領域を、前記予測記憶領域として特定することを特徴とする付記２または３記載のストレージ装置。
【０１９５】
（付記５）  前記予測部は、特定された前記予測記憶領域の内容のうち前記第２の記憶装置へコピー済みでない内容が前記第２の記憶装置へコピーされるように制御することを特徴とする付記４記載のストレージ装置。
【０１９６】
（付記６）  前記予測部は、前記同一サイズの監視領域の前記第１の記憶装置における位置が時間経過にしたがって移動したことを検知して、前記予測記憶領域を特定したとき、前記同一サイズの監視領域の移動速度に基づいて、前記予測記憶領域の内容を前記第２の記憶装置へコピーする速度を制御することを特徴とする付記１乃至５のいずれか１つに記載のストレージ装置。
【０１９７】
（付記７）  第１の記憶装置の記憶領域の内容の一部が、前記第１の記憶装置よりアクセス速度が高い第２の記憶装置にコピーされるように制御し、前記第１の記憶装置の記憶領域に対するアクセス要求を受けたとき、アクセス要求先の記憶領域の内容が前記第２の記憶装置にコピーされている場合には、前記第２の記憶装置におけるコピー先の記憶領域へのアクセスが行われるように制御し、アクセス要求先の記憶領域の内容が前記第２の記憶装置にコピーされていない場合には、前記第１の記憶装置におけるアクセス要求先の記憶領域へのアクセスが行われるように制御する制御装置におけるストレージ制御方法であって、
前記制御装置が、
前記第１の記憶装置における一定サイズ毎の単位記憶領域のうち、アクセス回数が０より大きい所定回数以上かつ類似する複数の単位記憶領域が連続する記憶領域を、監視領域として一定時間間隔で抽出し、
抽出された前記監視領域のうち同一サイズの監視領域の前記第１の記憶装置における位置が時間経過にしたがって移動したことを検知したとき、前記同一サイズの監視領域の移動方向に基づいて、アクセスが予測される予測記憶領域を前記第１の記憶装置の記憶領域から特定し、
前記予測記憶領域の内容が前記第２の記憶装置へコピーされるように制御する、
ことを特徴とするストレージ制御方法。
【０１９８】
（付記８）  前記同一サイズの監視領域の移動の検知では、隣接する時間帯に抽出された前記同一サイズの監視領域について、互いの監視領域の一部のみが重複するか、または監視領域が互いに接する場合に、前記同一サイズの監視領域の前記第１の記憶装置における位置が移動したと判定することを特徴とする付記７記載のストレージ制御方法。
【０１９９】
（付記９）  前記同一サイズの監視領域の移動の検知では、隣接する時間帯に抽出された、アクセス回数が類似する前記同一サイズの監視領域を、移動の判定対象とすることを特徴とする付記８記載のストレージ制御方法。
【０２００】
（付記１０）  隣接する時間帯に抽出された前記同一サイズの監視領域の前記第１の記憶装置における位置が移動したと判定したとき、当該同一サイズの監視領域のうちの移動後の監視領域の位置をその移動方向側に移動量分だけシフトした記憶領域を、前記予測記憶領域として特定することを特徴とする付記８または９記載のストレージ制御方法。
【０２０１】
（付記１１）  前記第２の記憶装置への書き込みでは、特定された前記予測記憶領域の内容のうち前記第２の記憶装置へコピー済みでない内容が前記第２の記憶装置へコピーされるように制御することを特徴とする付記１０記載のストレージ制御方法。
【０２０２】
（付記１２）  前記同一サイズの監視領域の前記第１の記憶装置における位置が時間経過にしたがって移動したことを検知して、前記予測記憶領域を特定したとき、前記同一サイズの監視領域の移動速度に基づいて、前記予測記憶領域の内容を前記第２の記憶装置へコピーする速度を制御することを特徴とする付記８乃至１１のいずれか１つに記載のストレージ制御方法。
【０２０３】
（付記１３）  第１の記憶装置の記憶領域の内容の一部が、前記第１の記憶装置よりアクセス速度が高い第２の記憶装置にコピーされるように制御し、前記第１の記憶装置の記憶領域に対するアクセス要求を受けたとき、アクセス要求先の記憶領域の内容が前記第２の記憶装置にコピーされている場合には、前記第２の記憶装置におけるコピー先の記憶領域へのアクセスが行われるように制御し、アクセス要求先の記憶領域の内容が前記第２の記憶装置にコピーされていない場合には、前記第１の記憶装置におけるアクセス要求先の記憶領域へのアクセスが行われるように制御する処理を、コンピュータに実行させるストレージ制御プログラムにおいて、
前記コンピュータに、
前記第１の記憶装置における一定サイズ毎の単位記憶領域のうち、アクセス回数が０より大きい所定回数以上かつ類似する複数の単位記憶領域が連続する記憶領域を、監視領域として一定時間間隔で抽出し、
抽出された前記監視領域のうち同一サイズの監視領域の前記第１の記憶装置における位置が時間経過にしたがって移動したことを検知したとき、前記同一サイズの監視領域の移動方向に基づいて、アクセスが予測される予測記憶領域を前記第１の記憶装置の記憶領域から特定し、
前記予測記憶領域の内容が前記第２の記憶装置へコピーされるように制御する、
処理を実行させることを特徴とするストレージ制御プログラム。
【符号の説明】
【０２０４】
１  ストレージ装置
１０  制御装置
１１  アクセス制御部
１２  抽出部
１３  予測部
２１  第１の記憶装置
２１ａ〜２１ｃ  記憶領域
２２  第２の記憶装置
２３  ホスト装置
Ａ１〜Ａ６  単位記憶領域
【図１】
2015207123.tif 000003
【図２】
2015207123.tif 000004
【図３】
2015207123.tif 000005
【図４】
2015207123.tif 000006
【図５】
2015207123.tif 000007
【図６】
2015207123.tif 000008
【図７】
2015207123.tif 000009
【図８】
2015207123.tif 000010
【図９】
2015207123.tif 000011
【図１０】
2015207123.tif 000012
【図１１】
2015207123.tif 000013
【図１２】
2015207123.tif 000014
【図１３】
2015207123.tif 000015
【図１４】
2015207123.tif 000016
【図１５】
2015207123.tif 000017
【図１６】
2015207123.tif 000018
【図１７】
2015207123.tif 000019
【図１８】
2015207123.tif 000020