(57)【要約】【課題】記憶装置のアクセス性能を改善する。【解決手段】記憶制御装置２は、制御部３を備え、第１の記憶装置４と、第１の記憶装置４より高速にアクセス可能な第２の記憶装置５を制御対象とする。制御部３は、第１の記憶装置４の第１の記憶領域４ａにデータアクセスがあった所定時間経過後に第１の記憶装置４の第２の記憶領域４ｂにデータアクセスがある依存関係を検出する。制御部３は、依存関係が検出されている状態で第１の記憶領域４ａにデータアクセスがあった場合に、所定時間が経過するまでに第２の記憶領域４ｂのデータを、第１の記憶装置４から第２の記憶装置５に転送する。【選択図】図１
2015210718.tif 000002
【特許請求の範囲】
【請求項１】
第１の記憶装置の第１の記憶領域にデータアクセスがあった所定時間経過後に前記第１の記憶装置の第２の記憶領域にデータアクセスがある依存関係を検出し、
前記依存関係が検出されている状態で前記第１の記憶領域にデータアクセスがあった場合に、前記所定時間が経過するまでに前記第２の記憶領域のデータを、前記第１の記憶装置から前記第１の記憶装置より高速にアクセス可能な第２の記憶装置に転送する制御部、
を備える記憶制御装置。
【請求項２】
前記制御部は、前記第１の記憶領域にデータアクセスがあった後に前記第２の記憶領域にデータアクセスがあった場合において、前記第１の記憶領域にデータアクセスがあった後の所定の時間帯における前記第２の記憶領域へのデータアクセスのタイミングの偏りから前記依存関係を検出する請求項１記載の記憶制御装置。
【請求項３】
前記所定の時間帯は、前記第２の記憶領域のデータの転送に要する時間より大きい請求項２記載の記憶制御装置。
【請求項４】
前記制御部は、複数のデータの転送候補がある場合に、優先度にしたがい１つずつデータの転送をおこなう請求項１記載の記憶制御装置。
【請求項５】
前記制御部は、データの転送完了までの残余時間が小さいほど優先度を高くする請求項４記載の記憶制御装置。
【請求項６】
前記第１の記憶領域および前記第２の記憶領域は、前記第１の記憶装置における管理対象の記憶領域を所定単位の大きさに分割した管理単位である請求項１記載の記憶制御装置。
【請求項７】
前記管理単位は、前記データの転送単位である請求項６記載の記憶制御装置。
【請求項８】
第１の記憶装置と、
前記第１の記憶装置より高速にアクセス可能な第２の記憶装置と、
前記第１の記憶装置の第１の記憶領域にデータアクセスがあった所定時間経過後に前記第１の記憶装置の第２の記憶領域にデータアクセスがある依存関係を検出し、前記依存関係が検出されている状態で前記第１の記憶領域にデータアクセスがあった場合に、前記所定時間が経過するまでに前記第２の記憶領域のデータを、前記第１の記憶装置から前記第２の記憶装置に転送する制御部を有する記憶制御装置と、
を備えるストレージシステム。
【請求項９】
コンピュータに、
第１の記憶装置の第１の記憶領域にデータアクセスがあった所定時間経過後に前記第１の記憶装置の第２の記憶領域にデータアクセスがある依存関係を検出し、
前記依存関係が検出されている状態で前記第１の記憶領域にデータアクセスがあった場合に、前記所定時間が経過するまでに前記第２の記憶領域のデータを、前記第１の記憶装置から前記第１の記憶装置より高速にアクセス可能な第２の記憶装置に転送する、
処理を実行させる記憶制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、記憶制御装置、ストレージシステム、および記憶制御プログラムに関する。
【背景技術】
【０００２】
ストレージの分野における高速化技術の一つに“先読み”がある。一般的にストレージ装置（記憶装置）は、大容量で安価なＨＤＤ（Hard Disk Drive）を備え、ＨＤＤにデータを保存する。また、ストレージ装置は、ＨＤＤと比較して単位容量当たりの価格が高いが、より高速にアクセスが可能なＳＳＤ（Solid State Drive）やＤＲＡＭ（Dynamic Random Access Memory）を備える。ストレージ装置は、アクセスされる可能性の高いデータをＨＤＤから先読みしてあらかじめＳＳＤやＤＲＡＭに移動することで、全体として高速なアクセスを実現している。
【０００３】
こうした先読みは、たとえば、シーケンシャルアクセスを検出して連続した領域に対しておこなう先読みや、ランダムアクセスに対してアクセス頻度にもとづいておこなう先読みなどが知られている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００８−１６５３１５号公報
【特許文献２】特開２０１１−１３８３２１号公報
【特許文献３】特開２００４−１３３９３４号公報
【特許文献４】特開２０００−２５０８０３号公報
【特許文献５】特開２００９−２６６１５２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、記憶装置への先読みによる高速アクセスは未だ改善の余地があり、そのアクセス性能は十分なものといえない。
１つの側面では、本発明は、記憶装置のアクセス性能を改善可能な記憶制御装置、ストレージシステム、および記憶制御プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００６】
上記目的を達成するために、以下に示すような、記憶制御装置が提供される。記憶制御装置は、制御部を備える。制御部は、第１の記憶装置の第１の記憶領域にデータアクセスがあった所定時間経過後に第１の記憶装置の第２の記憶領域にデータアクセスがある依存関係を検出し、依存関係が検出されている状態で第１の記憶領域にデータアクセスがあった場合に、所定時間が経過するまでに第２の記憶領域のデータを、第１の記憶装置から第１の記憶装置より高速にアクセス可能な第２の記憶装置に転送する。
【発明の効果】
【０００７】
１態様によれば、記憶制御装置、ストレージシステム、および記憶制御プログラムにおいて、記憶装置のアクセス性能を改善できる。
【図面の簡単な説明】
【０００８】
【図１】第１の実施形態のストレージシステムの構成の一例を示す図である。
【図２】第２の実施形態のストレージシステムの構成の一例を示す図である。
【図３】第２の実施形態のストレージ装置が制御対象とする記憶装置の構成の一例を示す図である。
【図４】第２の実施形態のＣＭのハードウェア構成の一例を示す図である。
【図５】第２の実施形態のアクセス数係数処理のフローチャートを示す図である。
【図６】第２の実施形態のアクセスカウンターテーブルの一例を示す図である。
【図７】第２の実施形態の先読み制御処理のフローチャートを示す図である。
【図８】第２の実施形態の高負荷セグメントテーブルの一例を示す図である。
【図９】第２の実施形態の依存関係検出処理のフローチャートを示す図である。
【図１０】第２の実施形態の高負荷セグメントログテーブルの一例を示す図である。
【図１１】第２の実施形態の頻度表の一例を示す図である。
【図１２】第２の実施形態の依存関係表の一例を示す図である。
【図１３】第２の実施形態の頻度表更新処理のフローチャートを示す図である。
【図１４】第２の実施形態の現在の高負荷セグメントと過去の高負荷セグメントの組み合わせ（セグメントＩＤ「Ｓ＃０」から「Ｓ＃３２２」）の頻度表を示す図である。
【図１５】第２の実施形態の現在の高負荷セグメントと過去の高負荷セグメントの組み合わせ（セグメントＩＤ「Ｓ＃５」から「Ｓ＃３２２」）の頻度表を示す図である。
【図１６】第２の実施形態の現在の高負荷セグメントと過去の高負荷セグメントの組み合わせ（セグメントＩＤ「Ｓ＃２２５」から「Ｓ＃３２２」）の頻度表を示す図である。
【図１７】第２の実施形態の多頻度カテゴリ探索処理のフローチャートを示す図である。
【図１８】第２の実施形態の多頻度カテゴリを検出可能な頻度表にもとづくヒストグラムの一例を示す図である。
【図１９】第２の実施形態の多頻度カテゴリを検出困難な頻度表にもとづくヒストグラムの一例を示す図である。
【図２０】第２の実施形態の依存関係表更新処理のフローチャートを示す図である。
【図２１】第２の実施形態の先読みデータ決定処理のフローチャートを示す図である。
【図２２】第２の実施形態の移送予定セグメント表の一例を示す図である。
【図２３】第２の実施形態のデータ移送処理のフローチャートを示す図である。
【発明を実施するための形態】
【０００９】
以下、図面を参照して実施の形態を詳細に説明する。
［第１の実施形態］
まず、第１の実施形態のストレージシステムについて図１を用いて説明する。図１は、第１の実施形態のストレージシステムの構成の一例を示す図である。
【００１０】
ストレージシステム１は、記憶制御装置２と、第１の記憶装置４と、第２の記憶装置５を含む。記憶制御装置２は、第１の記憶装置４と、第２の記憶装置５を制御対象とする。第１の記憶装置４と、第２の記憶装置５とは、所定の記憶領域にデータを記憶可能な記憶装置であり、たとえば、ＨＤＤ、ＳＳＤ、あるいはＤＲＡＭなどからなるストレージ装置である。第２の記憶装置５は、第１の記憶装置４より高速にアクセス可能な記憶装置であり、たとえば、第１の記憶装置４がＨＤＤであるときに、第２の記憶装置５は、ＳＳＤである。あるいは、第１の記憶装置４がＨＤＤまたはＳＳＤであるときに、第２の記憶装置５は、ＤＲＡＭである。
【００１１】
記憶制御装置２は、第１の記憶装置４が記憶するデータをあらかじめ第２の記憶装置５に転送する“先読み”をおこなうことでデータアクセスの高速化を図る。“先読み”は、低速デバイスにあるデータへのアクセスがおこなわれる前に、低速デバイスにあるデータをあらかじめ高速デバイスに読み込むことをいう。ここでいうデータへのアクセス（データアクセス）には、データの読み出しの他に、データの書き込みを含む。
【００１２】
記憶制御装置２は、制御部３を備える。制御部３は、第１の記憶装置４の第１の記憶領域４ａにデータアクセスがあった所定時間経過後に第１の記憶装置４の第２の記憶領域４ｂにデータアクセスがある依存関係を検出する。
【００１３】
たとえば、タイミングｔ０で第１の記憶領域４ａにあるデータ６へのデータアクセスがあり、その５分後のタイミングｔ１で第２の記憶領域４ｂにあるデータ７へのデータアクセスがあったとする。また、タイミングｔ２で第１の記憶領域４ａにあるデータ６へのデータアクセスがあり、その５分後のタイミングｔ３で第２の記憶領域４ｂにあるデータ７へのデータアクセスがあったとする。このようなデータのアクセスパタンを観測することで、制御部３は、所定の検出基準により、第１の記憶領域４ａにあるデータ６へのデータアクセスがあった所定時間経過後（たとえば、５分経過後）に第２の記憶領域４ｂにあるデータ７へのデータアクセスがある蓋然性が高いという、依存関係を検出することができる。言い換えれば、依存関係は、データにアクセスするタイミングに偏りがあるということができる。
【００１４】
また、制御部３は、依存関係が検出されている状態で第１の記憶領域４ａにデータアクセスがあった場合に、所定時間が経過するまでに第２の記憶領域４ｂのデータを、第１の記憶装置４から第２の記憶装置５に転送する。
【００１５】
たとえば、制御部３がタイミングｔ４で第１の記憶領域４ａにあるデータ６へのデータアクセスがあったことを検出する。このとき、制御部３が第１の記憶領域４ａにあるデータ６へのデータアクセスから５分経過後に第２の記憶領域４ｂにあるデータ７へのデータアクセスがある依存関係を検出している状態にあるとする。制御部３は、タイミングｔ４から５分が経過するタイミングｔ５に至るまでに、第１の記憶装置４から第２の記憶装置５にデータ７を転送する。
【００１６】
制御部３は、このようにして先読みをおこなうことで、第１の記憶装置４および第２の記憶装置５におけるアクセス性能を改善することができる。
［第２の実施形態］
次に、第２の実施形態のストレージシステムについて図２を用いて説明する。図２は、第２の実施形態のストレージシステムの構成の一例を示す図である。
【００１７】
ストレージシステム１０は、ホスト１１と、ネットワーク１２を介してホスト１１と接続するストレージ装置１３を備える。ストレージシステム１０は、ホスト１１が要求するＩ／Ｏ（Input／Output）リクエストに応じて、ストレージ装置１３にデータを書き込み、あるいはストレージ装置１３からデータを読み出す。
【００１８】
次に、第２の実施形態のストレージ装置が制御対象とする記憶装置の構成について図３を用いて説明する。図３は、第２の実施形態のストレージ装置が制御対象とする記憶装置の構成の一例を示す図である。
【００１９】
ストレージ装置１３は、ＣＭ（Controller Module：コントローラモジュール）２０と、ＳＳＤ３０と、ＨＤＤ３１とを備える。ストレージ装置１３は、１つのＳＳＤ３０を備えるが２以上のＳＳＤ３０を備えるものであってもよい。ストレージ装置１３は、複数のＨＤＤ３１ａ，３１ｂ，３１ｃ，・・・，３１ｎを備える。なお、ストレージ装置１３は、ＳＳＤ３０とＨＤＤ３１を装置内に内蔵する場合に限らず、ＳＳＤ３０とＨＤＤ３１を外部接続するものであってもよい。
【００２０】
ＣＭ２０は、ＳＳＤ３０とＨＤＤ３１を制御する制御部として機能する。ＳＳＤ３０は、ＨＤＤ３１と比較して高速にアクセス可能な記憶装置として機能する。すなわち、ＨＤＤ３１は、第１の実施形態の第１の記憶装置４に相当し、ＳＳＤ３０は、第１の実施形態の第２の記憶装置５に相当する。ＨＤＤ３１は、ＳＳＤ３０と比較して大容量の記憶装置として機能する。したがって、ＳＳＤ３０は、ＨＤＤ３１に対してキャッシュメモリとして機能し得る記憶装置である。
【００２１】
次に、第２の実施形態のＣＭのハードウェア構成について図４を用いて説明する。図４は、第２の実施形態のＣＭのハードウェア構成の一例を示す図である。
ＣＭ２０は、ストレージ制御装置の一形態であり、ホスト１１からのＩ／Ｏ要求（たとえば、書込要求、読出要求など）を受け付けて、ＳＳＤやＨＤＤへのアクセスを制御する。なお、図３に図示したストレージ装置１３は、１つのＣＭ２０を備えるとしたが、２以上のＣＭ２０を備える冗長構成を有するものであってもよい。
【００２２】
ＣＭ２０は、プロセッサ２１、メモリ２２、ディスクアダプタ２３、チャネルアダプタ２４を含む。プロセッサ２１とメモリ２２とディスクアダプタ２３とチャネルアダプタ２４は、図示しないバスを介して接続する。ＣＭ２０は、ディスクアダプタ２３を介してＳＳＤ３０またはＨＤＤ３１と接続し、チャネルアダプタ２４を介してホスト１１と接続する。
【００２３】
プロセッサ２１は、ＣＭ２０全体を制御し、ＳＳＤ３０およびＨＤＤ３１の制御をおこなう。プロセッサ２１は、マルチプロセッサであってもよい。プロセッサ２１は、たとえばＣＰＵ（Central Processing Unit）、ＭＰＵ（Micro Processing Unit）、ＤＳＰ（Digital Signal Processor）、ＡＳＩＣ（Application Specific Integrated Circuit）、またはＰＬＤ（Programmable Logic Device）である。またプロセッサ２１は、ＣＰＵ、ＭＰＵ、ＤＳＰ、ＡＳＩＣ、ＰＬＤのうちの２以上の要素の組み合わせであってもよい。
【００２４】
メモリ２２は、たとえば、ＲＡＭ（Random Access Memory）や不揮発性メモリを含む。メモリ２２は、ＳＳＤ３０またはＨＤＤ３１からデータを読み出したときにデータを保持する。また、メモリ２２は、ユーザデータや制御情報を格納する。たとえば、ＲＡＭは、ＣＭ２０の主記憶装置として使用される。ＲＡＭには、プロセッサ２１に実行させるオペレーティングシステム（Operating System）のプログラムやファームウェア、アプリケーションプログラムの少なくとも一部が一時的に格納される。また、ＲＡＭには、プロセッサ２１による処理に必要な各種データが格納される。また、ＲＡＭは、各種データの格納に用いるメモリと別体にキャッシュメモリを含むものであってもよい。
【００２５】
不揮発性メモリは、ストレージ装置１３の電源遮断時においても記憶内容を保持する。不揮発性メモリは、たとえば、ＥＥＰＲＯＭ（Electrically Erasable and Programmable ROM）やフラッシュメモリなどの半導体記憶装置や、ＨＤＤなどである。不揮発性メモリには、オペレーティングシステムのプログラムやファームウェア、アプリケーションプログラム、および各種データが格納される。
【００２６】
ディスクアダプタ２３は、ＳＳＤ３０およびＨＤＤ３１とのインタフェース制御をおこなう。チャネルアダプタ２４は、ホスト１１とのインタフェース制御をおこなう。
以上のようなハードウェア構成によって、第２の実施形態のＣＭ２０（ストレージ装置１３）の処理機能を実現することができる。なお、第１の実施形態に示した記憶制御装置２も、図示したＣＭ２０と同様のハードウェアにより実現することができる。
【００２７】
ＣＭ２０は、たとえばコンピュータ読み取り可能な記録媒体に記録されたプログラムを実行することにより、第２の実施形態の処理機能を実現する。ＣＭ２０に実行させる処理内容を記述したプログラムは、様々な記録媒体に記録しておくことができる。たとえば、ＣＭ２０に実行させるプログラムを不揮発性メモリに格納しておくことができる。プロセッサ２１は、不揮発性メモリ内のプログラムの少なくとも一部をメモリ２２にロードし、プログラムを実行する。またＣＭ２０に実行させるプログラムを、図示しない光ディスク、メモリ装置、メモリカードなどの可搬型記録媒体に記録しておくこともできる。光ディスクには、ＤＶＤ（Digital Versatile Disc）、ＤＶＤ−ＲＡＭ、ＣＤ−ＲＯＭ（Compact Disc Read Only Memory）、ＣＤ−Ｒ（Recordable）／ＲＷ（ReWritable）などがある。メモリ装置は、図示しない入出力インタフェースあるいは機器接続インタフェースとの通信機能を搭載した記録媒体である。たとえば、メモリ装置は、メモリリーダライタによりメモリカードへのデータの書き込み、またはメモリカードからのデータの読み出しをおこなうことができる。メモリカードは、カード型の記録媒体である。
【００２８】
可搬型記録媒体に格納されたプログラムは、たとえばプロセッサ２１からの制御により、不揮発性メモリにインストールされた後、実行可能となる。またプロセッサ２１が、可搬型記録媒体から直接プログラムを読み出して実行することもできる。
【００２９】
次に、第２の実施形態のアクセス数係数処理について図５を用いて説明する。図５は、第２の実施形態のアクセス数係数処理のフローチャートを示す図である。
アクセス数係数処理は、セグメントごとに毎分のアクセス数を記録する処理である。アクセス数係数処理は、ストレージ装置１３の起動後に制御部が実行する処理である。
【００３０】
セグメントは、管理対象の記憶領域を所定単位の大きさに分割した管理単位である。たとえば、制御部（ＣＭ２０）が１００Ｇｂｙｔｅの記憶領域を管理対象とするとき、その１００分割単位である１Ｇｂｙｔｅの記憶領域が１つのセグメントとなる。なお、１００分割単位は、依存関係を１０，０００（＝１００×１００）通り程度に制限するための一例であってこれに限らない。また、アクセス数の記録単位時間は、１分に限らず、十分なデータの確保など好適なサンプリングをおこなう観点で決定されるものであってもよい。
【００３１】
［ステップＳ１１］制御部は、記録単位時間（１分）のタイマのタイムアップを判定する。制御部は、タイムアップを判定した場合にステップＳ１２にすすみ、タイムアップを判定しない場合にステップＳ１３にすすむ。
【００３２】
［ステップＳ１２］制御部は、アクセスカウンターテーブルの切り替えをおこなう。制御部は、記録単位時間ごとにアクセスカウンターテーブルを用意し、１つの記録単位時間ごとにアクセスカウンターテーブルを切り替える。アクセスカウンターテーブルの詳細は、図６を用いて後で説明する。
【００３３】
［ステップＳ１３］制御部は、セグメントへのアクセス（たとえば、読み出しアクセス）の有無を判定する。制御部は、セグメントへのアクセスがあった場合にステップＳ１４にすすみ、セグメントへのアクセスがない場合にステップＳ１１にすすむ。
【００３４】
［ステップＳ１４］制御部は、現在の記録単位時間に対応するアクセスカウンターテーブルの更新をおこなう。制御部は、アクセスのあったセグメントのアクセス数を１インクリメントすることで、アクセスカウンターテーブルの更新をおこなう。制御部は、アクセスカウンターテーブルの更新をおこなった後、ステップＳ１１にすすむ。
【００３５】
これにより、制御部は、記録単位時間ごとのセグメントのアクセス数をアクセスカウンターテーブルに記録することができる。このようなセグメント単位でアクセス数をカウントすることは、ファイル単位でアクセス数をカウントすることに比較して、制御部にかかる処理負担を軽減することができる。
【００３６】
次に、アクセスカウンターテーブルについて図６を用いて説明する。図６は、第２の実施形態のアクセスカウンターテーブルの一例を示す図である。アクセスカウンターテーブル２００は、記録単位時間ごとのセグメントのアクセス数を記録する。アクセスカウンターテーブル２００は、項目「セグメントＩＤ」と項目「アクセス数」を含む。項目「セグメントＩＤ」は、セグメントを一意に識別可能な識別情報を記録する。項目「アクセス数」は、セグメントＩＤで特定されるセグメントのアクセス数を記録する。たとえば、セグメントＩＤ「Ｓ＃０」のセグメントは、アクセス数が「２３５」であることを示す。セグメントＩＤ「Ｓ＃１」のセグメントは、アクセス数が「１１２」であることを示す。セグメントＩＤ「Ｓ＃３」のセグメントは、アクセス数が「５２２」であることを示す。
【００３７】
このように、アクセスカウンターテーブルは、記録単位時間ごとのセグメントのアクセス数を記録する。
次に、第２の実施形態の先読み制御処理について図７を用いて説明する。図７は、第２の実施形態の先読み制御処理のフローチャートを示す図である。
【００３８】
先読み制御処理は、ＨＤＤ３１からＳＳＤ３０にセグメント単位でデータを転送する処理である。先読み制御処理は、所定のデータ転送実行契機ごとに制御部が実行する処理である。データ転送実行契機は、１つのセグメントのデータ転送をおこなう契機である。データ転送実行契機は、データ転送に割り当て可能な通信帯域の観点から決められることで、安定した先読みを実現することができる。たとえば、１つのセグメントのデータ転送を１分間でおこなうことができる場合、データ転送実行契機は、１分ごとである。
【００３９】
［ステップＳ２１］制御部は、セグメントごとのアクセス数を取得する。制御部は、直近のアクセスカウンターテーブルを参照することでセグメントごとのアクセス数を取得することができる。
【００４０】
［ステップＳ２２］制御部は、セグメントごとのアクセス数を比較して高負荷セグメントを抽出する。高負荷セグメントとは、所定の判定基準によりアクセス数が大きいと判定したセグメントである。たとえば、高負荷セグメントは、アクセス数が上位（たとえば、上位３つ）のセグメントである。なお、所定の判定基準は、所定の閾値を超えたセグメントのすべてとしてもよいし、所定の閾値を超えたセグメントのうち上位のものとしてもよい。
【００４１】
［ステップＳ２３］制御部は、高負荷セグメントを記録する高負荷セグメントテーブルを生成する。高負荷セグメントテーブルの詳細は、図８を用いて後で説明する。
［ステップＳ２４］制御部は、依存関係検出処理を実行する。依存関係検出処理は、アクセス時刻差のある２つの高負荷セグメントを依存関係として検出する処理である。依存関係検出処理の詳細は、図９を用いて後で説明する。
【００４２】
［ステップＳ２５］制御部は、先読みデータ決定処理を実行する。先読みデータ決定処理は、先読み対象となるデータを決定する処理である。言い換えれば、先読みデータ決定処理は、先読み対象となるデータを記憶するセグメントを決定する処理である。先読みデータ決定処理の詳細は、図２１を用いて後で説明する。
【００４３】
［ステップＳ２６］制御部は、データ移送処理を実行する。データ移送処理は、ステップＳ２５で決定したセグメントが記憶するデータをＳＳＤ３０に移送（転送）する処理である。データ移送処理の詳細は、図２３を用いて後で説明する。制御部は、データ移送処理の実行後に先読み制御処理を終了する。
【００４４】
次に、高負荷セグメントテーブルについて図８を用いて説明する。図８は、第２の実施形態の高負荷セグメントテーブルの一例を示す図である。高負荷セグメントテーブル２１０は、記録単位時間ごとの高負荷セグメントのアクセス数を記録する。高負荷セグメントテーブル２１０は、項目「セグメントＩＤ」と項目「アクセス数」を含む。項目「セグメントＩＤ」は、セグメントを一意に識別可能な識別情報を記録する。項目「アクセス数」は、セグメントＩＤで特定されるセグメントのアクセス数を記録する。たとえば、セグメントＩＤ「Ｓ＃３２２」のセグメントは、アクセス数が「２，０５４」であることを示す。セグメントＩＤ「Ｓ＃２５」のセグメントは、アクセス数が「１，９８０」であることを示す。セグメントＩＤ「Ｓ＃８」のセグメントは、アクセス数が「１，６７２」であることを示す。
【００４５】
このように、高負荷セグメントテーブルは、記録単位時間ごとの高負荷セグメントのアクセス数を記録する。
次に、第２の実施形態の依存関係検出処理について図９を用いて説明する。図９は、第２の実施形態の依存関係検出処理のフローチャートを示す図である。
【００４６】
依存関係検出処理は、アクセス時刻差のある２つの高負荷セグメントを依存関係として検出する処理である。依存関係検出処理は、先読み制御処理のステップＳ２４において制御部が実行する処理である。
【００４７】
［ステップＳ３１］制御部は、高負荷セグメントログテーブルを更新する。高負荷セグメントログテーブルは、所定時間分の高負荷セグメントをログとして記録するテーブルである。高負荷セグメントログテーブルの詳細は、図１０を用いて後で説明する。
【００４８】
［ステップＳ３２］制御部は、現在（直近）の高負荷セグメントと過去の高負荷セグメントの組み合わせを抽出する。なお、この組み合わせは、順序関係を有する。
［ステップＳ３３］制御部は、頻度表更新処理を実行する。頻度表更新処理は、ステップＳ３２で抽出した高負荷セグメントの組み合わせを反映して頻度表を更新する処理である。頻度表更新処理の詳細は、図１３を用いて後で説明する。頻度表は、高負荷セグメントの組み合わせごとに、時刻差あたりのアクセス頻度を記録する表である。頻度表の詳細は、図１１を用いて後で説明する。
【００４９】
［ステップＳ３４］制御部は、多頻度カテゴリ探索処理を実行する。多頻度カテゴリ探索処理は、頻度表を参照して時刻差あたりのアクセス頻度が大きな高負荷セグメントの組み合わせを探索する処理である。このような高負荷セグメントの組み合わせは、一方の高負荷セグメントへのアクセスの所定時間経過後に他方の高負荷セグメントへのアクセスがあることを示唆する依存関係があると認めることができる。多頻度カテゴリ探索処理は、このような依存関係を検出する処理である。多頻度カテゴリ探索処理の詳細は、図１７を用いて後で説明する。
【００５０】
［ステップＳ３５］制御部は、依存関係表更新処理を実行する。依存関係表更新処理は、ステップＳ３４で検出した依存関係を反映して依存関係表を更新する処理である。依存関係表更新処理の詳細は、図２０を用いて後で説明する。依存関係表は、検出した依存関係を記録する表である。依存関係表の詳細は、図１２を用いて後で説明する。
【００５１】
［ステップＳ３６］制御部は、現在の高負荷セグメントと過去の高負荷セグメントの組み合わせのすべてを抽出したか否かを判定する。制御部は、高負荷セグメントの組み合わせのすべてを抽出していない場合にステップＳ３２にすすみ、高負荷セグメントの組み合わせのすべてを抽出した場合に依存関係検出処理を終了する。
【００５２】
次に、高負荷セグメントログテーブルについて図１０を用いて説明する。図１０は、第２の実施形態の高負荷セグメントログテーブルの一例を示す図である。高負荷セグメントログテーブル２２０は、直近３０分の高負荷セグメントをログとして記録する。なお、ログの記録時間３０分は、一例であって、使用環境に応じて任意の値に変更可能であってもよい。なお、ログの記録時間は、依存関係検出のための監視時間と言い換えることができる。
【００５３】
高負荷セグメントログテーブル２２０は、項目「時刻」と、項目「セグメントＩＤ」と、項目「アクセス数」を含む。項目「時刻」は、直近の時刻を「０」として、過去に遡った時刻を「−ｔ」で表わす。項目「セグメントＩＤ」は、セグメントを一意に識別可能な識別情報を記録する。項目「アクセス数」は、セグメントＩＤで特定されるセグメントのアクセス数を記録する。
【００５４】
たとえば、高負荷セグメントログテーブル２２０は、時刻「０」に、セグメントＩＤ「Ｓ＃３２２」，「Ｓ＃２５」，および「Ｓ＃８」の３つの高負荷セグメントがあり、それぞれアクセス数が「２，０５４」，「１，９８０」，「１，６７２」であることを示す。
【００５５】
なお、同じ時刻に記録された高負荷セグメントは、同じタイムウインドウに属するとする。たとえば、時刻「０」に記録された高負荷セグメントは、最新のタイムウインドウに属し、時刻「−１」に記録された高負荷セグメントは、１分前のタイムウインドウに属する。
【００５６】
次に、頻度表について図１１を用いて説明する。図１１は、第２の実施形態の頻度表の一例を示す図である。
頻度表２３０は、セグメントＩＤ「Ｓ＃３８」の高負荷セグメントのアクセス後のセグメントＩＤ「Ｓ＃３２２」の高負荷セグメントの頻度（アクセス数）を時刻差ごとに記録した表である。
【００５７】
頻度表２３０は、項目「時刻差」と項目「頻度」を含む。項目「時刻差」は、２つの高負荷セグメントのアクセス間隔、すなわち時刻差を表す。項目「頻度」は、セグメントＩＤ「Ｓ＃３８」のセグメントが高負荷となった後の時刻差ごとの、セグメントＩＤ「Ｓ＃３２２」のセグメントが高負荷となった回数を記録する。
【００５８】
たとえば、セグメントＩＤ「Ｓ＃３８」のセグメントが高負荷となった１分後に、セグメントＩＤ「Ｓ＃３２２」のセグメントが高負荷となった回数が「２８」回あったことを示す。セグメントＩＤ「Ｓ＃３８」のセグメントが高負荷となった２分後に、セグメントＩＤ「Ｓ＃３２２」のセグメントが高負荷となった回数が「３６」回あったことを示す。セグメントＩＤ「Ｓ＃３８」のセグメントが高負荷となった３分後に、セグメントＩＤ「Ｓ＃３２２」のセグメントが高負荷となった回数が「２２」回あったことを示す。
【００５９】
なお、ここで頻度「３５＋１」の記載は、高負荷セグメントログテーブル２２０にもとづいて検出されたアクセスにより、頻度が１インクリメントされていることを表すものである。高負荷セグメントログテーブル２２０によれば、時刻「０」にセグメントＩＤ「Ｓ＃３２２」があり、その２分前（時刻「−２」）にセグメントＩＤ「Ｓ＃３８」がある。
【００６０】
このように、高負荷セグメントログテーブルにおける最新のタイムウインドウに属する高負荷セグメントと他の高負荷セグメントとの組み合わせについて、各組み合わせの頻度表が更新される。
【００６１】
次に、依存関係表について図１２を用いて説明する。図１２は、第２の実施形態の依存関係表の一例を示す図である。
依存関係表２４０は、検出した依存関係を記録する。依存関係は、高負荷セグメントの組み合わせごとの頻度表を参照し、時刻差ごとに記録されている所定単位の頻度の全体に占める割合が閾値（たとえば、５０％）を超えている高負荷セグメントの組み合わせである。
【００６２】
依存関係表２４０は、項目「依存関係」と、項目「時刻差」と、項目「成立確率」を含む。項目「依存関係」は、依存関係が検出された高負荷セグメントの組み合わせである。項目「時刻差」は、依存関係が検出された２つの高負荷セグメントのアクセス間隔である。項目「成立確率」は、項目「依存関係」と項目「時刻差」から特定される頻度の全体に占める割合である。
【００６３】
たとえば、依存関係「Ｓ＃０→Ｓ＃３２２」かつ時刻差「３分」は、セグメントＩＤ「Ｓ＃０」の高負荷セグメントへのアクセスの３分後に、セグメントＩＤ「Ｓ＃３２２」の高負荷セグメントへのアクセスを示す。これは、依存関係「Ｓ＃０→Ｓ＃３２２」と時刻差「３分」から特定される頻度の全体に占める割合が「５２％」であることを示す。依存関係「Ｓ＃８→Ｓ＃１５」かつ時刻差「２分」は、セグメントＩＤ「Ｓ＃８」の高負荷セグメントへのアクセスの２分後に、セグメントＩＤ「Ｓ＃１５」の高負荷セグメントへのアクセスを示す。これは、依存関係「Ｓ＃８→Ｓ＃１５」と時刻差「２分」から特定される頻度の全体に占める割合が「６６％」であることを示す。依存関係「Ｓ＃１６→Ｓ＃７」かつ時刻差「５分」は、セグメントＩＤ「Ｓ＃１６」の高負荷セグメントへのアクセスの５分後に、セグメントＩＤ「Ｓ＃７」の高負荷セグメントへのアクセスを示す。これは、依存関係「Ｓ＃１６→Ｓ＃７」と時刻差「５分」から特定される頻度の全体に占める割合が「７２％」であることを示す。
【００６４】
次に、第２の実施形態の頻度表更新処理について図１３を用いて説明する。図１３は、第２の実施形態の頻度表更新処理のフローチャートを示す図である。
頻度表更新処理は、依存関係検出処理のステップＳ３２で抽出した高負荷セグメントの組み合わせを反映して頻度表を更新する処理である。頻度表更新処理は、依存関係検出処理のステップＳ３３において制御部が実行する処理である。
【００６５】
［ステップＳ４１］制御部は、高負荷セグメントログテーブルを参照して、最新のタイムウインドウから上位セグメントの１つを抽出する。たとえば、制御部は、高負荷セグメントログテーブル２２０からセグメントＩＤ「Ｓ＃３２２」の高負荷セグメントを上位セグメントとして抽出する。
【００６６】
［ステップＳ４２］制御部は、高負荷セグメントログテーブルを参照して、保持しているタイムウインドウの１つを選択する。たとえば、制御部は、高負荷セグメントログテーブル２２０から１分前のタイムウインドウを選択する。
【００６７】
［ステップＳ４３］制御部は、高負荷セグメントログテーブルを参照して、選択したタイムウインドウから上位セグメントの１つを選択する。たとえば、制御部は、高負荷セグメントログテーブル２２０において１分前のタイムウインドウを選択しているときに、セグメントＩＤ「Ｓ＃０」の高負荷セグメントを上位セグメントとして抽出する。
【００６８】
［ステップＳ４４］制御部は、抽出した２つのセグメント（上位セグメント）の時刻差を算出する。たとえば、最新のタイムウインドウから抽出されたセグメントＩＤ「Ｓ＃３２２」の高負荷セグメントと、選択したタイムウインドウから抽出されたセグメントＩＤ「Ｓ＃０」の高負荷セグメントの時刻差は、「１」である。
【００６９】
ただし、同一の上位セグメントが他のタイムウインドウにある場合、制御部は、時刻差が最も小さくなる上位セグメントを時刻差の算出対象とし、その余の上位セグメントを時刻差の算出対象としない。たとえば、セグメントＩＤ「Ｓ＃０」の高負荷セグメントが１０分前のタイムウインドウから抽出された場合、セグメントＩＤ「Ｓ＃０」の高負荷セグメントは、１分前のタイムウインドウから抽出されるので時刻差の計算対象とならない。
【００７０】
［ステップＳ４５］制御部は、高負荷セグメントの組み合わせと、算出した時刻差とにもとづいて頻度表を更新する。制御部は、対応する頻度を１インクリメントすることにより頻度表の更新をおこなう。
【００７１】
［ステップＳ４６］制御部は、選択したタイムウインドウから上位セグメントを全部抽出したか否かを判定する。制御部は、選択したタイムウインドウから上位セグメントを全部抽出している場合にステップＳ４７にすすむ。一方、制御部は、選択したタイムウインドウから上位セグメントを全部抽出していない場合にステップＳ４３にすすみ、ステップＳ４３において別の上位セグメントを抽出する。
【００７２】
［ステップＳ４７］制御部は、高負荷セグメントログテーブルを参照して、保持しているタイムウインドウを全部選択したか否かを判定する。制御部は、保持しているタイムウインドウを全部選択している場合にステップＳ４８にすすむ。一方、制御部は、保持しているタイムウインドウを全部選択していない場合にステップＳ４２にすすみ、ステップＳ４２において別のタイムウインドウを選択する。
【００７３】
［ステップＳ４８］制御部は、最新タイムウインドウから上位セグメントを全部抽出したか否かを判定する。制御部は、最新タイムウインドウから上位セグメントを全部抽出していない場合にステップＳ４１にすすみ、ステップＳ４１において別の上位セグメントを抽出する。一方、制御部は、最新タイムウインドウから上位セグメントを全部抽出している場合に頻度表更新処理を終了する。
【００７４】
このようにして、制御部は、現在の高負荷セグメントと過去の高負荷セグメントの組み合わせのそれぞれについて時刻差ごとのアクセス頻度を頻度表に記録することができる。
このような頻度表の更新例について図１４から図１６を用いて説明する。図１４は、第２の実施形態の現在の高負荷セグメントと過去の高負荷セグメントの組み合わせ（セグメントＩＤ「Ｓ＃０」から「Ｓ＃３２２」）の頻度表を示す図である。
【００７５】
頻度表２３２は、セグメントＩＤ「Ｓ＃０」の高負荷セグメントのアクセス後のセグメントＩＤ「Ｓ＃３２２」の高負荷セグメントの頻度（アクセス数）を時刻差ごとに記録した表である。頻度表２３２は、頻度表２３０と同様の構成を有する。項目「頻度」は、セグメントＩＤ「Ｓ＃０」の高負荷セグメントのアクセス後の時刻差ごとの、セグメントＩＤ「Ｓ＃３２２」の高負荷セグメントへのアクセス数を記録する。
【００７６】
たとえば、セグメントＩＤ「Ｓ＃０」の高負荷セグメントへのアクセスの１分後に、セグメントＩＤ「Ｓ＃３２２」の高負荷セグメントへのアクセスが「３３」回あったことを示す。ここで頻度「３２＋１」の記載は、高負荷セグメントログテーブル２２０にもとづいて検出されたアクセスにより、頻度が１インクリメントされていることを表すものである。高負荷セグメントログテーブル２２０によれば、時刻「０」にセグメントＩＤ「Ｓ＃３２２」があり、その１分前（時刻「−１」）にセグメントＩＤ「Ｓ＃０」がある。
【００７７】
図１５は、第２の実施形態の現在の高負荷セグメントと過去の高負荷セグメントの組み合わせ（セグメントＩＤ「Ｓ＃５」から「Ｓ＃３２２」）の頻度表を示す図である。
頻度表２３４は、セグメントＩＤ「Ｓ＃５」の高負荷セグメントのアクセス後のセグメントＩＤ「Ｓ＃３２２」の高負荷セグメントの頻度（アクセス数）を時刻差ごとに記録した表である。頻度表２３４は、頻度表２３０と同様の構成を有する。項目「頻度」は、セグメントＩＤ「Ｓ＃５」の高負荷セグメントのアクセス後の時刻差ごとの、セグメントＩＤ「Ｓ＃３２２」の高負荷セグメントへのアクセス数を記録する。
【００７８】
たとえば、セグメントＩＤ「Ｓ＃５」の高負荷セグメントへのアクセスの１分後に、セグメントＩＤ「Ｓ＃３２２」の高負荷セグメントへのアクセスが「１６」回あったことを示す。ここで頻度「１５＋１」の記載は、高負荷セグメントログテーブル２２０にもとづいて検出されたアクセスにより、頻度が１インクリメントされていることを表すものである。高負荷セグメントログテーブル２２０によれば、時刻「０」にセグメントＩＤ「Ｓ＃３２２」があり、その１分前（時刻「−１」）にセグメントＩＤ「Ｓ＃５」がある。
【００７９】
図１６は、第２の実施形態の現在の高負荷セグメントと過去の高負荷セグメントの組み合わせ（セグメントＩＤ「Ｓ＃２２５」から「Ｓ＃３２２」）の頻度表を示す図である。
頻度表２３６は、セグメントＩＤ「Ｓ＃２２５」の高負荷セグメントのアクセス後のセグメントＩＤ「Ｓ＃３２２」の高負荷セグメントの頻度（アクセス数）を時刻差ごとに記録した表である。頻度表２３６は、頻度表２３０と同様の構成を有する。項目「頻度」は、セグメントＩＤ「Ｓ＃２２５」の高負荷セグメントのアクセス後の時刻差ごとの、セグメントＩＤ「Ｓ＃３２２」の高負荷セグメントへのアクセス数を記録する。
【００８０】
たとえば、セグメントＩＤ「Ｓ＃２２５」の高負荷セグメントへのアクセスの１分後に、セグメントＩＤ「Ｓ＃３２２」の高負荷セグメントへのアクセスが「２８」回あったことを示す。ここで頻度「２７＋１」の記載は、高負荷セグメントログテーブル２２０にもとづいて検出されたアクセスにより、頻度が１インクリメントされていることを表すものである。高負荷セグメントログテーブル２２０によれば、時刻「０」にセグメントＩＤ「Ｓ＃３２２」があり、その１分前（時刻「−１」）にセグメントＩＤ「Ｓ＃２２５」がある。
【００８１】
次に、第２の実施形態の多頻度カテゴリ探索処理について図１７を用いて説明する。図１７は、第２の実施形態の多頻度カテゴリ探索処理のフローチャートを示す図である。
多頻度カテゴリ探索処理は、頻度表を参照して時刻差あたりのアクセス頻度が大きな高負荷セグメントの組み合わせを探索する処理である。多頻度カテゴリ探索処理は、依存関係検出処理のステップＳ３４において制御部が実行する処理である。
【００８２】
［ステップＳ５１］制御部は、依存関係検出処理において直前のステップで実行した頻度表更新処理で更新された頻度表の１つを選択する。
［ステップＳ５２］制御部は、ステップＳ５１で選択した頻度表について、すべてのカテゴリ（時刻差）の合計頻度を算出する。
【００８３】
［ステップＳ５３］制御部は、時刻差が小さい順に並ぶ３つのカテゴリをグルーピングしてグループを生成する。なお、３つのカテゴリのグルーピングは、グルーピングの一例であって、グルーピングは、１カテゴリを対象としてもよいし、連続する２つまたは４以上のカテゴリを対象とするものであってもよい。
【００８４】
［ステップＳ５４］制御部は、ステップＳ５３で生成したグループの合計頻度を算出する。
［ステップＳ５５］制御部は、グループの合計頻度がすべてのカテゴリの合計頻度に占める割合が５０％以上であるか否かを判定する。制御部は、グループの合計頻度がすべてのカテゴリの合計頻度に占める割合が５０％以上である場合にステップＳ５６にすすみ、５０％未満である場合にステップＳ５７にすすむ。なお、閾値５０％は、一例であって、制御部は、判定に用いる閾値を使用環境（たとえば、通信帯域やＳＳＤ３０の記憶容量など）に応じて任意の値に設定可能にしてもよい。
【００８５】
［ステップＳ５６］制御部は、選択した頻度表で特定される依存関係について多頻度カテゴリを検出する。制御部は、多頻度カテゴリを識別可能にして一時保持する。
［ステップＳ５７］制御部は、ステップＳ５３でおこなったグルーピングについて時刻差が大きい方向に時刻差１つ分だけシフトする。
【００８６】
［ステップＳ５８］制御部は、すべてのグループの合計頻度を算出したか否かを判定する。制御部は、すべてのグループについて合計頻度を算出している場合にステップＳ５９にすすみ、すべてのグループについて合計頻度を算出していない場合にステップＳ５４にすすむ。
【００８７】
［ステップＳ５９］制御部は、更新された頻度表を全部選択したか否かを判定する。制御部は、更新された頻度表を全部選択していない場合にステップＳ５１にすすみ、別の頻度表を選択する。一方、制御部は、更新された頻度表を全部選択している場合に多頻度カテゴリ探索処理を終了する。
【００８８】
このようにして、制御部は、依存関係の強い高負荷セグメントの組み合わせと、その時刻差を検出することができる。なお、依存関係の強さの基準は、ステップＳ５５で設定した閾値により調整可能である。
【００８９】
次に、多頻度カテゴリを検出可能な頻度表について図１８と図１９を用いて説明する。図１８は、第２の実施形態の多頻度カテゴリを検出可能な頻度表にもとづくヒストグラムの一例を示す図である。
【００９０】
多頻度カテゴリを検出可能な頻度表は、特定の時刻差帯において大きな出現回数が現れる。制御部は、このような頻度表において時刻差「１」、時刻差「２」、時刻差「３」のカテゴリをグルーピングしたグループｇｐ０について全体に占める割合が閾値を超えるか否かを判定（評価）する。この場合、グループｇｐ０の評価は、全体に占める割合が閾値を超えないことから多頻度カテゴリを検出できないとなる。グループｇｐ０をシフトしたのが、時刻差「２」、時刻差「３」、時刻差「４」のカテゴリをグルーピングしたグループｇｐ１である。グループｇｐ１は、時刻差「３」、時刻差「４」において大きな出現回数を有する。したがって、グループｇｐ１の評価は、全体に占める割合が閾値を超えて、多頻度カテゴリを検出できたとなる。以降、グループｇｐ１をシフトしたグループｇｐ２以降の評価は、省略される。このようなヒストグラムは、特定の時刻差帯域にピークを有する。すなわち、このような高負荷セグメントの組み合わせは、特定の時刻差帯において依存関係が認められる。
【００９１】
一方、多頻度カテゴリを検出困難な頻度表は、図１９に示すようなヒストグラムとなる。図１９は、第２の実施形態の多頻度カテゴリを検出困難な頻度表にもとづくヒストグラムの一例を示す図である。このようなヒストグラムは、全体として平坦であり特定の時刻差帯域にピークを有しない。すなわち、このような高負荷セグメントの組み合わせは、すべての時刻差帯において依存関係が認められない。
【００９２】
次に、第２の実施形態の依存関係表更新処理について図２０を用いて説明する。図２０は、第２の実施形態の依存関係表更新処理のフローチャートを示す図である。
依存関係表更新処理は、依存関係検出処理のステップＳ３４で検出した依存関係を反映して依存関係表を更新する処理である。依存関係表更新処理は、依存関係検出処理のステップＳ３５において制御部が実行する処理である。
【００９３】
［ステップＳ６１］制御部は、多頻度のカテゴリの有無を判定する。制御部は、多頻度のカテゴリがあればステップＳ６４にすすみ、多頻度のカテゴリがなければステップＳ６２にすすむ。制御部は、多頻度カテゴリ探索処理のステップＳ５６における多頻度カテゴリの検出により多頻度のカテゴリの有無の判定をおこなうことができる。
【００９４】
［ステップＳ６２］制御部は、依存関係検出処理で多頻度のカテゴリでないと評価した依存関係が依存関係表にあるか否かを判定する。制御部は、多頻度のカテゴリでないと評価した依存関係が依存関係表にある場合にステップＳ６３にすすみ、依存関係表にない場合にステップＳ６８にすすむ。
【００９５】
［ステップＳ６３］制御部は、多頻度のカテゴリでないと評価した依存関係を依存関係表から削除してステップＳ６８にすすむ。
［ステップＳ６４］制御部は、依存関係検出処理で多頻度のカテゴリであると評価した依存関係が依存関係表にあるか否かを判定する。制御部は、多頻度のカテゴリであると評価した依存関係が依存関係表にある場合にステップＳ６６にすすみ、依存関係表にない場合にステップＳ６５にすすむ。
【００９６】
［ステップＳ６５］制御部は、多頻度のカテゴリであると評価した依存関係を依存関係表に追加する。
［ステップＳ６６］制御部は、多頻度のカテゴリであると評価した依存関係の時刻差と、すでに依存関係表に存在する依存関係の時刻差とを比較し、同じであるか否かを判定する。制御部は、２つの時刻差が同一である場合にステップＳ６８にすすみ、２つの時刻差が同一でない場合にステップＳ６７にすすむ。
【００９７】
［ステップＳ６７］制御部は、多頻度のカテゴリであると評価した依存関係の時刻差で依存関係表を更新する。
［ステップＳ６８］制御部は、更新対象のすべての依存関係の更新（追加、削除を含む）をおこなったか否かを判定する。制御部は、更新対象のすべての依存関係を更新していない場合にステップＳ６１にすすみ、更新対象のすべての依存関係を更新している場合に依存関係表更新処理を終了する。
【００９８】
次に、第２の実施形態の先読みデータ決定処理について図２１を用いて説明する。図２１は、第２の実施形態の先読みデータ決定処理のフローチャートを示す図である。
先読みデータ決定処理は、先読み対象となるデータを決定する処理である。先読みデータ決定処理は、先読み制御処理のステップＳ２５において制御部が実行する処理である。
【００９９】
［ステップＳ７１］制御部は、依存関係表に高負荷領域（高負荷セグメント）を起点にするエントリがあるか否かを判定する。制御部は、依存関係表に高負荷領域を起点にするエントリがある場合にステップＳ７２にすすみ、高負荷領域を起点にするエントリがない場合に先読みデータ決定処理を終了する。
【０１００】
［ステップＳ７２］制御部は、移送予定セグメント表に高負荷領域を起点にするエントリを追加する。移送予定セグメント表は、ＨＤＤ３１からＳＳＤ３０への移送対象となる高負荷セグメントを記録する表である。移送予定セグメント表の詳細は、図２２を用いて後で説明する。制御部は、移送予定セグメント表に高負荷領域を起点にするエントリを追加した後、先読みデータ決定処理を終了する。
【０１０１】
次に、移送予定セグメント表について図２２を用いて説明する。図２２は、第２の実施形態の移送予定セグメント表の一例を示す図である。
移送予定セグメント表２５０は、移送予定のセグメント、すなわちＨＤＤ３１からＳＳＤ３０への移送対象となる高負荷セグメントを記録する。
【０１０２】
移送予定セグメント表２５０は、項目「セグメントＩＤ」と項目「時刻」を含む。項目「セグメントＩＤ」は、セグメントを一意に識別可能な識別情報を記録する。項目「時刻」は、移送完了までの時刻を表す。
【０１０３】
たとえば、セグメントＩＤ「Ｓ＃１５」の高負荷セグメントは、ＨＤＤ３１からＳＳＤ３０への移送対象であり、「２分」後までの移送完了を要する。セグメントＩＤ「Ｓ＃１２」の高負荷セグメントは、ＨＤＤ３１からＳＳＤ３０への移送対象であり、「４分」後までの移送完了を要する。
【０１０４】
次に、第２の実施形態のデータ移送処理について図２３を用いて説明する。図２３は、第２の実施形態のデータ移送処理のフローチャートを示す図である。
データ移送処理は、先読み制御処理のステップＳ２５で決定したセグメントが記憶するデータをＳＳＤ３０に移送（転送）する処理である。データ移送処理は、先読み制御処理のステップＳ２６において制御部が実行する処理である。
【０１０５】
［ステップＳ８１］制御部は、移送予定セグメント表にある移行予定セグメント（高負荷セグメント）の優先度を算出する。優先度の算出は、たとえば、（１）式を用いることができる。
【０１０６】
優先度＝（成立確率×平均アクセス数）／移送完了までの時刻  ・・・（１）
（１）式における成立確率は、依存関係表の項目「成立確率」から取得できる。（１）式における平均アクセス数は、頻度表の項目「頻度」から平均値を算出して取得できる。（１）式における移送完了までの時刻は、移送予定セグメント表の項目「時刻」から取得できる。これによれば、制御部は、成立確率×平均アクセス数が同じ２以上の移行予定セグメントがある場合に、移送完了までの時刻が小さい移行予定セグメントを優先する。
【０１０７】
［ステップＳ８２］制御部は、移送予定セグメント表にある移行予定セグメントのうちから最も優先度の高い移行予定セグメントを決定する。
［ステップＳ８３］制御部は、最も優先度の高い移行予定セグメントにあるデータをＨＤＤ３１からＳＳＤ３０に移送する。すなわち、制御部は、セグメント単位でデータの移送をおこなう。このデータの移送は、次のデータ移送処理が実行されるまでに完了し、データ移送が不完全な状態で別のデータ移送がおこなわれることはない。言い換えれば、データ移送処理の実行間隔（たとえば、１分）は、１つの高負荷セグメントのデータの移送にかかる時間より大きい。制御部は、優先度にしたがいセグメント単位で１つずつデータの移送をおこなうこととし、２以上のデータ移送が並行することで両者がいずれも時間内に移送を完了しないことを防止する。
【０１０８】
このように、ストレージ装置１３は、時刻差を有するアクセスの依存関係を検出することで先読みの精度を向上し、ＳＳＤ３０およびＨＤＤ３１のアクセス性能の向上を図る。このような先読みは、シーケンシャルアクセスに対応する先読みやランダムアクセスに対応する先読みでは、改善を図ることができなかったところである。時刻差を有するアクセスの依存関係を検出しておこなう先読みは、従来から知られている先読みと比較してデータ移送にかかる猶予時間を大きくとることができることから、過度に多くの通信帯域を要しない。したがって、ストレージ装置１３は、時刻差を有するアクセスの依存関係を検出しておこなう先読みを、従来から知られている先読みと併用することができる。
【０１０９】
なお、多頻度カテゴリ探索処理において、ストレージ装置１３は、グループの合計頻度がすべてのカテゴリの合計頻度に占める割合と閾値とを比較することによりアクセス頻度の大きなカテゴリを探索したが、既知の統計的判断手法を用いるようにしてもよい。たとえば、ストレージ装置１３は、ポアソン分布との有意な差を検定手法を用いて検出することができる。
【０１１０】
なお、上記の処理機能は、コンピュータによって実現することができる。その場合、記憶制御装置２、ストレージ装置１３が有すべき機能の処理内容を記述したプログラムが提供される。そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、磁気記憶装置、光ディスク、光磁気記録媒体、半導体メモリなどがある。磁気記憶装置には、ハードディスク装置（ＨＤＤ）、フレキシブルディスク（ＦＤ）、磁気テープなどがある。光ディスクには、ＤＶＤ、ＤＶＤ−ＲＡＭ、ＣＤ−ＲＯＭ／ＲＷなどがある。光磁気記録媒体には、ＭＯ（Magneto-Optical disk）などがある。
【０１１１】
プログラムを流通させる場合には、たとえば、そのプログラムが記録されたＤＶＤ、ＣＤ−ＲＯＭなどの可搬型記録媒体が販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
【０１１２】
プログラムを実行するコンピュータは、たとえば、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムにしたがった処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムにしたがった処理を実行することもできる。また、コンピュータは、ネットワークを介して接続されたサーバコンピュータからプログラムが転送されるごとに、逐次、受け取ったプログラムにしたがった処理を実行することもできる。
【０１１３】
また、上記の処理機能の少なくとも一部を、ＤＳＰ、ＡＳＩＣ、ＰＬＤなどの電子回路で実現することもできる。
【符号の説明】
【０１１４】
１，１０  ストレージシステム
２  記憶制御装置
３  制御部
４  第１の記憶装置
４ａ  第１の記憶領域
４ｂ  第２の記憶領域
５  第２の記憶装置
１１  ホスト
１２  ネットワーク
１３  ストレージ装置
２０  ＣＭ
２１  プロセッサ
２２  メモリ
２３  ディスクアダプタ
２４  チャネルアダプタ
３０  ＳＳＤ
３１  ＨＤＤ
【図１】
2015210718.tif 000003
【図２】
2015210718.tif 000004
【図３】
2015210718.tif 000005
【図４】
2015210718.tif 000006
【図５】
2015210718.tif 000007
【図６】
2015210718.tif 000008
【図７】
2015210718.tif 000009
【図８】
2015210718.tif 000010
【図９】
2015210718.tif 000011
【図１０】
2015210718.tif 000012
【図１１】
2015210718.tif 000013
【図１２】
2015210718.tif 000014
【図１３】
2015210718.tif 000015
【図１４】
2015210718.tif 000016
【図１５】
2015210718.tif 000017
【図１６】
2015210718.tif 000018
【図１７】
2015210718.tif 000019
【図１８】
2015210718.tif 000020
【図１９】
2015210718.tif 000021
【図２０】
2015210718.tif 000022
【図２１】
2015210718.tif 000023
【図２２】
2015210718.tif 000024
【図２３】
2015210718.tif 000025