(57)【要約】      （修正有）【課題】ブロックアドレス空間の巨大化に対応しつつ、プリフェッチの対象領域を決定するデータ処理装置を提供する。【解決手段】データ処理装置のストレージ装置２において、予測モデル１２７は、Ｉ／Ｏトレースデータ１２を機械学習させたそれぞれ異なるビット範囲を担当する複数のニューラルネットワーク１０ｓ〜１９ｓを用いることで、ブロックアドレスを分割したビット範囲ごとにプリフェッチのアドレスを予測する。予測精度判定部１２２は、プリフェッチの予測精度が所定値より小さいビット範囲のアドレスに基づいて、プリフェッチの対象領域のサイズを決定し、予測値判定部１２３は、プリフェッチの予測精度が所定値以上のビット範囲のアドレスに基づいて、プリフェッチの対象領域のアドレスを決定する。プリフェッチ発行部１２４は、プリフェッチの対象領域のデータをＮＡＮＤフラッシュメモリ１２６からストレージクラスメモリ１２５にキャッシュする。【選択図】図１
2019204335.tif 000002
【特許請求の範囲】
【請求項１】
ビット位置に基づいてブロックアドレスを複数のビット範囲に分割し、
プリフェッチに用いられるアドレスの予測精度を前記ビット範囲ごとに判定し、
前記ビット範囲ごとに判定した前記予測精度に基づいて前記プリフェッチの対象領域を決定するデータ処理装置。
【請求項２】
前記予測精度が所定値より小さい前記ビット範囲のアドレスに基づいて、前記プリフェッチの対象領域のサイズを決定し、
前記予測精度が所定値以上の前記ビット範囲のアドレスに基づいて、前記プリフェッチの対象領域のアドレスを決定し、
前記プリフェッチの対象領域のサイズの決定に用いられるビット範囲は、前記プリフェッチの対象領域のアドレスの決定に用いられるビット範囲よりも下位ビット側にある請求項１に記載のデータ処理装置。
【請求項３】
過去の読み出しまたは書き込みに用いられたブロックアドレスが記録されたＩ／Ｏトレースデータを機械学習させたそれぞれ異なるビット範囲を担当する複数の予測モデルを使用し、前記ビット範囲ごとに前記プリフェッチのアドレスを予測する請求項１に記載のデータ処理装置。
【請求項４】
クエリおよびデータベース名に関連付けられた複数のニューラルネットワークを管理し、
前記クエリに基づいてニューラルネットワークを選択し、
前記選択されたニューラルネットワークは、前記クエリの実行に伴うＩ／Ｏトレースデータを学習し、前記プリフェッチのアドレスを予測する請求項３に記載のデータ処理装置。
【請求項５】
シーケンシャルアクセスとランダムアクセスとの比率に基づき、それぞれに対するキャッシュ領域を割り当て、
前記ランダムアクセス用のキャッシュに対して、前記機械学習に基づいて前記ビット範囲ごとに前記プリフェッチのアドレスを予測する請求項３に記載のデータ処理装置。
【請求項６】
ランダムな読み出しとランダムな書き込みとの比率に基づき、それぞれに対するキャッシュ領域を割り当て、
前記読み出しと前記書き込みとで別個に学習されたニューラルネットワークを使用し、前記ビット範囲ごとに前記プリフェッチのアドレスを予測する請求項５に記載のデータ処理装置。
【請求項７】
前記ブロックアドレスのビット範囲、前記クエリおよび前記データベース名に対応するニューラルネットワークのトレーニング履歴情報および予測精度情報を管理し、
前記ニューラルネットワークの学習および前記ブロックアドレスの予測に基づく前記プリフェッチの適用を操作する請求項４に記載のデータ処理装置。
【請求項８】
ランダムアクセスに対するシーケンシャルアクセスの比率が大きい場合、過去の読み出しまたは書き込みに用いられたブロックアドレスが記録されたＩ／Ｏトレースデータを機械学習させた予測モデルを使用して、連続するアドレスでアクセスされるブロック数を予測し、前記連続するアドレスでアクセスされるデータをプリフェッチする請求項１に記載のデータ処理装置。
【請求項９】
プリフェッチ処理プログラムを実行するプロセッサを備え、
前記プロセッサは、前記プリフェッチ処理プログラムを実行することにより、
ビット位置に基づいてブロックアドレスを複数のビット範囲に分割し、
プリフェッチに用いられる前記ビット範囲のアドレスが、前記プリフェッチ後の読み出しまたは書き込みに用いられる前記ビット範囲のアドレスに一致する確率に基づいて、前記プリフェッチの対象領域を決定するプリフェッチ方法。
【請求項１０】
前記プロセッサは、前記プリフェッチ処理プログラムを実行することにより、
前記確率が所定値より小さい前記ビット範囲のアドレスに基づいて、前記プリフェッチの対象領域のサイズを決定し、
前記確率が所定値以上の前記ビット範囲のアドレスに基づいて、前記プリフェッチの対象領域のアドレスを決定し、
前記プリフェッチの対象領域のサイズの決定に用いられるビット範囲は、前記プリフェッチの対象領域のアドレスの決定に用いられるビット範囲よりも下位ビット側にある請求項９に記載のプリフェッチ方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ストレージクラスメモリに適用可能なデータ処理装置およびプリフェッチ方法に関する。
【背景技術】
【０００２】
ストレージクラスメモリは、計算機における記憶階層ギャップ、すなわち、ＤＲＡＭで構成される主記憶装置と、ＮＡＮＤフラッシュメモリで構成されるストレージ装置とのアクセスタイムにおける約１０００倍のギャップを埋める新しいメモリである。例えば、ＩｎｔｅｌとＭｉｃｒｏｎはストレージクラスメモリとして使用できる大容量不揮発メモリ技術である３Ｄ  ＸＰｏｉｎｔ  Ｔｅｃｈｎｏｌｏｇｙを発表した。それによると、ＮＡＮＤフラッシュメモリに対して１０００倍長寿命かつ高速であり、ＤＲＡＭに対して１０倍の容量を有し、ＤＲＡＭと同じインタフェースでバイト単位にアクセス可能な不揮発メモリが実現できる。
【０００３】
情報処理システムにおけるストレージクラスメモリの基本的な使用方法は、ＮＡＮＤ  フラッシュメモリのストレージキャッシュとして、ＤＲＡＭに格納できない規模の使用頻度が高いデータを格納し、比較的小さいアクセスタイムで使用可能とすることである。ストレージキャッシュへの格納対象となる使用頻度が高いデータを決定する手段として、機械学習を使用する公知例がある。
【０００４】
特許文献１には、特定のソフトウェアがストレージにアクセスするデータブロックを学習して、当該ソフトウェアがスタートすると、学習されたデータブロックをプリフェッチする実施形態が記載されている。
【０００５】
特許文献２には、主記憶に展開するデータレイアウトを変えて性能を測定するステップを繰り返すことによって、最適なデータレイアウトを決定する実施形態が記載されている。
【０００６】
特許文献３には、ユーザから見たレイテンシを最小化するために、ページアウトするデータの決定において、複数の予測方法を用いて予測精度を向上するオペレーティングシステムによるインテリジェントなメモリ管理方法が記載されている。
【０００７】
特許文献４には、アプリケーションが最初のファイルにアクセスした時に、ストレージに対するデータアクセスパターンを含むアプリケーションモデルをフェッチして、次にアクセスするファイルを特定してプリフェッチする方法が記載されている。
【０００８】
特許文献５には、埋め込まれたルールと推論エンジンにより生成されたメタデータを基に、ファイルの主記憶へプリフェッチするインテリジェントなデータ管理が記載されている。
【０００９】
特許文献６には、ストレージおよびストレージキャッシュに対する入出力要求をモニタし、プリフェッチアルゴリズムを適用することによって、将来の書き込み要求を予測して、データ保護を効率的に行う方法が記載されている。
【先行技術文献】
【特許文献】
【００１０】
【特許文献１】米国特許第８６０７００５号明細書
【特許文献２】米国特許第７８０５５８０号明細書
【特許文献３】米国特許第８１１２７５５号明細書
【特許文献４】米国特許出願公開第２０１６／０３８１１７６号明細書
【特許文献５】米国特許第８１４０７４６号明細書
【特許文献６】米国特許第９２９８６３３号明細書
【発明の概要】
【発明が解決しようとする課題】
【００１１】
ストレージを構成する記憶素子であるＮＡＮＤフラッシュメモリのアクセスタイムが、主記憶を構成するＤＲＡＭと比較して約１０００倍大きいという記憶階層ギャップがある。このため、大規模データの解析において、解析対象のデータを主記憶に格納するインメモリデータベースが使用されている。しかし、主記憶容量の合計がデータサイズを超える台数の計算機を使用する必要があり、システムが高コスト化する。
【００１２】
そこで、記憶階層ギャップを埋めるストレージクラスメモリを適用することにより、主記憶容量を拡張して必要な計算機の台数を削減することが考えられる。主記憶容量の拡張にストレージクラスメモリを使用する場合、ＤＲＡＭをキャッシュメモリとして、記憶容量が大きい記憶階層が一段増加した従来のメモリアクセス制御をハードウェアが行う計算機において、従来以上のサイズのデータを主記憶上で処理するプログラムを実行させることができる。
【００１３】
一方、ストレージクラスメモリから溢れたデータをストレージ格納データとスワップする機構は、ページフォールト割込みを契機にオペレーティングシステムがストレージに対する書き込みと読み出しを行うのが基本であり、ストレージクラスメモリの有無によらないオーバーヘッドを要する。
【００１４】
そこで、インメモリデータベースがアクセス頻度の高いデータを主記憶に保持する機構を実装して、データ配置を最適化するための書き込みと読み出しを行うことになるが、記憶階層の増加を伴うためデータ配置機構の大幅な改変が必要となる。また、データの格納形式に対応してデータベースごとに別の実装を行うよりも、プラットフォームレベルでストレージからのプリフェッチ機能を持つ方が効率が良い。
【００１５】
過去に行われたストレージへの書き込みと読み出しのパターンを機械学習する機能を設け、その予測結果に基づきプリフェッチに用いる公知例において、ストレージのブロックアドレス空間は巨大であるため、ブロック単位で将来アクセスされるデータを予測するには、複雑な構造を持つニューラルネットワークを学習させるための大量のデータと、強力な計算機資源が必要となる。また、機械学習では、応用分野に合わせて最適なニューラルネットワークの構造が異なるため、新しいモデルの考案を含む試行錯誤が必要となる。
【００１６】
本発明は、上記事情に鑑みなされたものであり、その目的は、ブロックアドレス空間の巨大化に対応しつつ、プリフェッチの対象領域を決定することが可能なデータ処理装置を提供することにある。
【課題を解決するための手段】
【００１７】
上記目的を達成するため、第１の観点に係るデータ処理装置は、ビット位置に基づいてブロックアドレスをビット範囲に分割し、プリフェッチに用いられるブロックアドレスの予測精度を前記ビット範囲ごとに判定し、前記ビット範囲ごとに判定した前記予測精度に基づいて前記プリフェッチの対象領域を決定する。
【発明の効果】
【００１８】
本発明によれば、ブロックアドレス空間の巨大化に対応しつつ、プリフェッチの対象領域を決定することができる。
【図面の簡単な説明】
【００１９】
【図１】図１は、第１実施形態に係るデータ処理装置の構成を示すブロック図である。
【図２】図２は、ブロックアドレスを分割したビット範囲ごとのアドレス確率分布の生成方法を示すブロック図である。
【図３】図３は、ブロックアドレスを分割したビット範囲に基づいてプリフェッチの対象領域のサイズを決定する手順を示す図である。
【図４】図４は、ブロックアドレスを分割したビット範囲に基づいてプリフェッチの対象領域のアドレスを決定する手順を示す図である。
【図５】図５は、図１のストレージクラスメモリのキャッシュメモリ管理領域の管理方法を示すブロック図である。
【図６】図６は、ブロックアドレスを分割したビット範囲ごとのアドレス確率分布を予測するニューラルネットワークの学習方法を示すブロック図である。
【図７】図７は、図１のニューラルネットワークの学習に用いることが可能なカラムストア格納形式のＩ／Ｏトレースデータの一例を示すブロック図である。
【図８】図８は、クエリとデータベース名に基づく選択において用いられる、ニューラルネットワークの属性を示すデータ構造を示す図である。
【図９】図９は、図１のニューラルネットワークを管理するＮＮ管理画面の一例を示す図である。
【図１０】図１０は、第２実施形態に係るデータ処理装置の構成を示すブロック図である。
【図１１】図１１は、第３実施形態に係るデータ処理装置の構成を示すブロック図である。
【図１２】図１２は、図１のデータ処理装置のハードウェア構成例を示すブロック図である。
【発明を実施するための形態】
【００２０】
実施形態について、図面を参照して説明する。なお、以下に説明する実施形態は特許請求の範囲に係る発明を限定するものではなく、また、実施形態の中で説明されている諸要素及びその組み合わせの全てが発明の解決手段に必須であるとは限らない。
【００２１】
（第１実施形態）
図１は、第１実施形態に係るデータ処理装置の構成を示すブロック図である。
図１において、データ処理装置は、データ解析サーバ１、ストレージ装置２およびニューラルネットワーク管理システム３を備える。データ解析サーバ１は、ストレージ装置２に格納された大規模データを解析する。ニューラルネットワーク管理システム３は、ストレージのブロックアドレスを分割したビット範囲ごとにＩ／Ｏトレースデータ１２を機械学習させたニューラルネットワーク１０ａ〜１９ａ、１０ｂ〜１９ｂ、・・、１０ｚ〜１９ｚを管理する。Ｉ／Ｏトレースデータ１２には、過去の読み出しまたは書き込みに用いられたブロックアドレスが記録される。
【００２２】
ストレージ装置２は、データ解析サーバ１で解析される大規模データを記憶する。この時、ストレージ装置２は、読み出し対象または書き込み対象となるデータをストレージキャッシュすることができる。ここで、ストレージ装置２は、ビット位置に基づいてブロックアドレスを複数のビット範囲に分割し、プリフェッチに用いられるアドレスの予測精度をビット範囲ごとに判定し、ビット範囲ごとに判定した予測精度に基づいてプリフェッチの対象領域を決定する。プリフェッチの予測精度は、将来利用されるデータがキャッシュされる確率で示すことができる。例えば、プリフェッチの予測精度として、プリフェッチに用いられるビット範囲のアドレスが、プリフェッチ後の読み出しまたは書き込みに用いられるビット範囲のアドレスに一致する確率を用いることができる。ブロックアドレスを分割したビット範囲は一部が重複していてもよい。
【００２３】
データ解析サーバ１は、統計解析ソフトウェア１１１、ＤＢ（Ｄａｔａ  Ｂａｓｅ）クライアント１１２、データベース管理システム１１３、ファイルシステム１１４、ブロックＩ／Ｏレイヤ１１５およびデバイスドライバ１１６を備える。
【００２４】
統計解析ソフトウェア１１１は、大規模データの解析に用いられるプログラムである。ＤＢクライアント１１２は、クエリを受け付け、データベース管理システム１１３に対応したインタフェースを介してクエリを伝達する。データベース管理システム１１３は、ストレージ装置２に格納された解析対象のデータを管理する。ファイルシステム１１４は、データの格納位置を示すブロックアドレスとブロック数を指定して読み出しまたは書き込み要求を行う。ブロックＩ／Ｏレイヤ１１５は、ストレージ装置２に対応するデバイスドライバ１１６に読み出しまたは書き込み要求を行う。デバイスドライバ１１６は、ストレージ装置２に対応するインタフェースを介してデータの読み出しまたは書き込みを行う。
【００２５】
ストレージ装置２は、ストレージコントローラ１２１、予測精度判定部１２２、予測値判定部１２３、プリフェッチ発行部１２４、ストレージクラスメモリ１２５、ＮＡＮＤフラッシュメモリ１２６および予測モデル１２７を備える。
【００２６】
ストレージコントローラ１２１は、ストレージクラスメモリ１２５の読み出しまたは書き込みを制御する。ストレージクラスメモリ１２５は、ＮＡＮＤフラッシュメモリ１２６に対して１０００倍程度長寿命かつ高速であり、ＤＲＡＭに対して１０倍程度の容量を有し、ＤＲＡＭと同じインタフェースでバイト単位にアクセス可能な不揮発性メモリである。ストレージクラスメモリ１２５は、ＮＡＮＤフラッシュメモリ１２６のストレージキャッシュとして用いることができる。ストレージクラスメモリ１２５としては、例えば、磁気抵抗メモリ（ＭＲＡＭ）、抵抗変化メモリ（ＲｅＲＡＭ）、相変化メモリ（ＰＲＡＭ／ＰＣＭ）、強誘電体メモリ（ＦｅＲＡＭ）、スピン注入型磁気メモリ（ＳＴＴ−ＭＲＡＭ）、カーボンナノチューブメモリまたは３Ｄクロスポイントメモリを用いることができる。ＮＡＮＤフラッシュメモリ１２６は、ページ単位で読み出しまたは書き込みが可能で、ブロック単位で消去が可能な不揮発性メモリである。
【００２７】
予測モデル１２７は、ブロックアドレスを分割したビット範囲ごとにプリフェッチのアドレスを予測する。この時、予測モデル１２７は、Ｉ／Ｏトレースデータ１２を機械学習させたそれぞれ異なるビット範囲を担当する複数のニューラルネットワーク１０ｓ〜１９ｓを用いることができる。予測精度判定部１２２は、プリフェッチの予測精度が所定値より小さいビット範囲のアドレスに基づいて、プリフェッチの対象領域のサイズを決定する。予測値判定部１２３は、プリフェッチの予測精度が所定値以上のビット範囲のアドレスに基づいて、プリフェッチの対象領域のアドレスを決定する。プリフェッチ発行部１２４は、プリフェッチの対象領域のデータをＮＡＮＤフラッシュメモリ１２６からストレージクラスメモリ１２５にキャッシュする。
【００２８】
ニューラルネットワーク管理システム３は、ニューラルネットワーク選択部１３１、機械学習用計算機１３２、Ｉ／Ｏトレースデータ用ストレージ１３３およびニューラルネットワーク管理領域１３４を備える。
【００２９】
ニューラルネットワーク選択部１３１は、クエリおよびデータベース名１１に対応したニューラルネットワーク１０ｓ〜１９ｓをニューラルネットワーク１０ａ〜１９ａ、１０ｂ〜１９ｂ、・・、１０ｚ〜１９ｚから選択し、予測モデル１２７として使用できるようにする。機械学習用計算機１３２は、クエリの実行に伴うＩ／Ｏトレースデータ１２をビット範囲ごとに、１０ａ〜１９ａ、１０ｂ〜１９ｂ、・・、１０ｚ〜１９ｚから選択したニューラルネットワークに学習させる。Ｉ／Ｏトレースデータ用ストレージ１３３は、Ｉ／Ｏトレースデータ１２を記憶する。
【００３０】
ニューラルネットワーク管理領域１３４は、複数のニューラルネットワーク１０ａ〜１９ａ、１０ｂ〜１９ｂ、・・、１０ｚ〜１９ｚを備える。ニューラルネットワーク１０ａ〜１９ａ、１０ｂ〜１９ｂ、・・、１０ｚ〜１９ｚは、ブロックアドレスを分割したビット範囲ごとかつクエリおよびデータベース名１１ごとに設けることができる。この時、異なるクエリおよびデータベース名１１を担当するニューラルネットワーク１０ａ〜１９ａ、１０ｂ〜１９ｂ、・・、１０ｚ〜１９ｚをＸ方向に配列し、異なるビット範囲を担当するニューラルネットワーク１０ａ〜１９ａ、１０ｂ〜１９ｂ、・・、１０ｚ〜１９ｚをＹ方向に配列することができる。
【００３１】
以下、ニューラルネットワーク１０ｓ〜１９ｓによる予測に基づくプリフェッチ方法を用いて、ストレージ装置２からデータ解析サーバ１に読み出された大規模データの解析を行う場合の動作について説明する。
【００３２】
ＤＢクライアント１１２がクエリを受け付けると、データベース管理システム１１３にクエリを伝達する。データベース管理システム１１３は、クエリを実行し、ファイルシステム１１４上のファイルに対してクエリの記述に対応したデータの読み出しを行う。この時、統計解析ソフトウェア１１１が動作し、そのクエリを実行して取得したデータの統計解析を行う。
【００３３】
ストレージ装置２に対しては、例えば、５１２バイトのブロック単位でデータの読み出しまたは書き込みが行われる。この時、ファイルシステム１１４は、ブロックＩ／Ｏレイヤ１１５に対して、データの格納位置を示すブロックアドレスとブロック数を指定して読み出し要求を行う。ブロックＩ／Ｏレイヤ１１５は、ファイルシステム１１４からの要求をキューイングして連続したブロックに対する要求はマージして、ストレージ装置２に対応するデバイスドライバ１１６に読み出し要求を行う。デバイスドライバ１１６は、ストレージ装置２に対応するインタフェースを介してデータの読み出しを行う。
【００３４】
また、ＤＢクライアント１１２がクエリを受け付けると、データベース管理システム１１３にクエリを伝達するとともに、ニューラルネットワーク管理システム３に対して、受け付けたクエリとデータベース名１１を送信する。
【００３５】
ニューラルネットワーク管理システム３は、複数のクエリ及びデータベース名１１に対応するニューラルネットワーク１０ａ〜１９ａ、１０ｂ〜１９ｂ、・・、１０ｚ〜１９ｚを管理している。そして、ニューラルネットワーク選択部１３１は、受け付けたクエリとデータベース名１１に対応するニューラルネットワーク１０ｓ〜１９ｓを選択し、そのニューラルネットワーク１０ｓ〜１９ｓを定義するパラメータ群をストレージ装置２に送信する。このパラメータ群は、ニューラルネットワーク１０ｓ〜１９ｓの重みとバイアスを含むことができる。この選択されたニューラルネットワーク１０ｓ〜１９ｓのそれぞれは、ブロックアドレスを構成するビットを分割したビット範囲を担当してブロックアドレスの一部について予測を行う。例えば、３０ビットからなるブロックアドレス［２９：０］を、［２９：２４］、［２５：２０］、［２１：１６］、［１７：１２］、［１３：８］、［９：４］、［５：０］と重複するビットを含む６ビットずつの７個のビット範囲に分割し、ニューラルネットワーク１０ｓ〜１９ｓのうちの異なるニューラルネットワークが、それぞれのビット範囲を担当する。
【００３６】
ブロックアドレスをビット範囲ごとに予測するために、データ解析サーバ１は、ブロックＩ／Ｏレイヤ１１５の動作をモニタすることでＩ／Ｏトレースデータ１２を取得し、ストレージ装置２およびニューラルネットワーク管理システム３に送信する。Ｉ／Ｏトレースデータ１２は、読み出しおよび書き込み要求が行われた時刻、ブロックアドレス、ブロック数などの情報を含むことができる。Ｉ／Ｏトレースデータ１２は、ニューラルネットワーク１０ａ〜１９ａ、１０ｂ〜１９ｂ、・・、１０ｚ〜１９ｚの学習に用いるために、Ｉ／Ｏトレースデータ用ストレージ１３３に格納される。
【００３７】
また、データ解析サーバ１は、受け付けたクエリとデータベース名１１をニューラルネットワーク管理システム３に送信する。そして、機械学習用計算機１３２は、クエリとデータベース名に対応して１０ａ〜１９ａ、１０ｂ〜１９ｂ、・・、１０ｚ〜１９ｚから選択したニューラルネットワークに対し、Ｉ／Ｏトレースデータ１２を用いて学習させる。
【００３８】
この学習により、クエリおよびデータベース名１１に対応して選択されるニューラルネットワーク１０ｓ〜１９ｓは、将来行われる読み出しまたは書き込みのブロックアドレスをビット範囲ごとに予測することができる。
【００３９】
各ニューラルネットワーク１０ｓ〜１９ｓで予測されたブロックアドレスの予測値はビット範囲ごとに予測精度判定部１２２および予測値判定部１２３に出力される。そして、予測精度判定部１２２は、ブロックアドレスの予測値を、その予測後の読み出しまたは書き込みに用いられるブロックアドレスとビット範囲ごとに比較することにより、ブロックアドレスの予測値の予測精度を判定する。
【００４０】
そして、予測精度判定部１２２は、予測精度が低いビット範囲のアドレスに基づいて、プリフェッチの対象領域のサイズを決定する。また、予測値判定部１２３は、予測精度が高いビット範囲のアドレスに基づいて、プリフェッチの対象領域のアドレスを決定する。そして、プリフェッチ発行部１２４は、予測値判定部１２３で決定されたアドレスで指定されるデータを、予測精度判定部１２２で決定されたサイズ分だけＮＡＮＤフラッシュメモリ１２６からストレージクラスメモリ１２５にキャッシュする。
【００４１】
ここで、ブロックアドレスを分割したビット範囲ごとの予測精度に基づいてプリフェッチの対象領域を決定することにより、分割前のブロックアドレスよりも小さなアドレス単位で将来アクセスされるデータを予測することができる。このため、将来アクセスされるデータを分割前のブロックアドレス単位で予測させる場合に比べて、ニューラルネットワークの構造を簡素化することができ、計算機資源を節約することができる。また、将来アクセスされるデータを分割前のブロックアドレス単位で予測させる場合に比べて、学習データ量を減少させることが可能となり、学習にかかる時間を短縮することができる。
【００４２】
また、ブロックアドレスをビット範囲ごとに分割した場合、上位ビット側のビット範囲は、下位ビット側のビット範囲に比べてランダムアクセス性が減少し、上位ビット側のビット範囲のアドレスのうちの一部のアドレスにアクセスが集中する傾向がある。このため、上位ビット側のビット範囲のアドレスは、下位ビット側のビット範囲のアドレスよりも予測精度を高めることができる。この時、上位ビット側のビット範囲のアドレスに基づいてプリフェッチの対象領域のアドレスを決定し、下位ビット側のビット範囲のアドレスに基づいてプリフェッチの対象領域のサイズを決定することにより、プリフェッチ精度を確保可能なデータを確実にプリフェッチしつつ、プリフェッチ精度を確保できないデータのプリフェッチ漏れを低減させることができる。この結果、データ解析サーバ１からストレージ装置２にランダムアクセスされる場合においても、ランダムアクセスされる可能性の高いデータを漏れなくプリフェッチすることができ、データ解析サーバ１からストレージ装置２へのアクセスタイムを減少させることができる。
【００４３】
このプリフェッチ方法は、ＮＡＮＤフラッシュメモリ１２６にランダムアクセスされる場合、ＮＡＮＤフラッシュメモリ１２６のメモリ領域の中にアクセスが集中する範囲がある場合に特に有効である。この時、上述したプリフェッチ方法を用いることにより、アクセスが集中する範囲のアドレスとサイズを決定するこができ、ＮＡＮＤフラッシュメモリ１２６のメモリ領域の中からアクセスが集中する範囲のデータをプリフェッチすることができる。
【００４４】
以下、図１のデータ処理装置のプリフェッチ方法について詳細に説明する。
図２は、ブロックアドレスを分割したビット範囲ごとのアドレス確率分布の生成方法を示すブロック図である。
図２において、データ解析サーバ１は、モニタプログラム１１７を介してブロックＩ／Ｏレイヤ１１５の動作をモニタすることでＩ／Ｏトレースデータ１２を取得する。Ｉ／Ｏトレースデータ１２は、｛時刻、読み出し／書き込み種別、ブロックアドレス、ブロック数｝の４次元ベクトルを、時系列データとして一定数Ｌだけ記録した４×Ｌの２次元データ１２０に加工され、ニューラルネットワーク１０ｓ〜１９ｓに入力される。
【００４５】
それぞれのニューラルネットワーク１０ｓ〜１９ｓにおいて、予測を担当するブロックアドレスのビット範囲のビット数をＥ（Ｅは２以上の整数）とすると、そのビット範囲には、２のＥ乗通りのブロックアドレスが含まれるので、２のＥ乗通りの予測値があり得る。ここ言う予測値はビット範囲ごとの予測アドレスである。例えば、ニューラルネットワーク１２ｓが第１３ビットから第８ビットまでの６ビット分のビット範囲を担当する場合、そのビット範囲には、２の６乗通りのブロックアドレス［１３：８］が含まれるので、２の６乗通りの予測値があり得る。この時、ニューラルネットワーク１２ｓは、ブロックアドレス［１３：８］のそれぞれの予測値が出現する確率分布２２ｓを出力する。なお、ブロックアドレス［１３：８］のそれぞれの予測値の予測精度は、ブロックアドレス［１３：８］のそれぞれの予測値が出現する確率Ｋで表すことができる。
【００４６】
ここで、各ビット範囲のブロックアドレスの確率分布は、下位ビットから上位ビットに向かって規則性が増加する傾向がある。この場合、下位ビット側のビット範囲から上位ビット側のビット範囲に向かって確率分布のピーク値が大きくなる。この時、確率分布のピーク値に対応するブロックアドレスにはアクセスが集中すると判断することができる。
【００４７】
例えば、ニューラルネットワーク１０ｓは、ブロックアドレス［５：０］のそれぞれの予測値が出現する確率分布２０ｓを出力し、ニューラルネットワーク１１ｓは、ブロックアドレス［９：４］のそれぞれの予測値が出現する確率分布２１ｓを出力し、ニューラルネットワーク１２ｓは、ブロックアドレス［１３：８］のそれぞれの予測値が出現する確率分布２２ｓを出力し、ニューラルネットワーク１９ｓは、ブロックアドレス［２９：２４］のそれぞれの予測値が出現する確率分布２９ｓを出力するものとする。確率分布２０ｓ、２１ｓ、２２ｓ、２９ｓのピーク値をそれぞれＫ０、Ｋ１、Ｋ２、Ｋ９とすると、Ｋ０＜Ｋ１＜Ｋ２＜Ｋ９となる傾向がある。なお、図２では、確率分布２１ｓ、２２ｓ、２９ｓのピークがそれぞれ１つある例を示したが、各確率分布においてピークが複数あってもよい。
【００４８】
この時、例えば、上位ビット側のブロックアドレス［１３：８］〜ブロックアドレス［２９：２４］からそれぞれ選択したピーク値Ｋ２〜Ｋ９に対応するアドレスをプリフェッチのアドレスの決定に用いることができる。また、下位ビット側のブロックアドレス［５：０］〜ブロックアドレス［９：４］をプリフェッチのサイズの決定に用いることができる。
【００４９】
図３は、ブロックアドレスを分割したビット範囲に基づいてプリフェッチの対象領域のサイズを決定する手順を示す図である。
図３において、ニューラルネットワーク１０ｓ〜１９ｓによる予測結果として出力された確率分布２０ｓ〜２９ｓのそれぞれについて、ブロックアドレス［ｂ：ａ］の予測値を算出する（３１）。ステップ３１で算出する予測値は、確率分布２０ｓ〜２９ｓの確率が最大となる分割されたブロックアドレス［ｂ：ａ］の値とすることができる。なお、ａは、ブロックアドレスを分割した各ビット範囲の最下位のビット位置を示す。ｂは、ブロックアドレスを分割した各ビット範囲の最上位のビット位置を示す。
【００５０】
また、予測精度判定部１２２は、予測に使用したＩ／Ｏトレースデータ１２の記録直後に記録された実際の読み出しまたは書き込みのブロックアドレス［ｂ：ａ］の値３００を取得する。そして、予測精度判定部１２２は、ニューラルネットワーク１０ｓ〜１９ｓから取得した確率分布に基づく予測値と、実際の読み出しまたは書き込みのブロックアドレス［ｂ：ａ］の値３００との一致判定を行う（３２）。
【００５１】
ブロックアドレス［ｂ：ａ］が完全にランダムであり、そのブロックアドレス［ｂ：ａ］の予測値の予測が不可能な場合、ステップ３２で一致する確率（以下、一致率と言う）は予測対象のブロックアドレスビット数＝ｂ−ａ＋１に対して、１／（２の（ｂ−ａ＋１）乗）となる。そこで、ステップ３２の一致判定の結果を記録しておき、過去Ｐ回（Ｐは２以上の整数）の一致判定における一致率と、予測が不可能な一致率の定数倍、すなわち、ｃ／（２の（ｂ−ａ＋１）乗）との大小比較を行う（３３）。なお、ｃは定数である。そして、ｃ／（２の（ｂ−ａ＋１）乗）より一致率が小さい場合、ブロックアドレス［ｂ：ａ］はランダムアクセスに近く、予測値の予測が困難と判定する。
【００５２】
さらに、予測精度判定部１２２は、確率分布２０ｓ〜２９ｓのそれぞれについて、確率分布の確率の最大値とｃ／（２の（ｂ−ａ＋１）乗）との大小比較を行う（３４）。確率の最大値とｃ／（２の（ｂ−ａ＋１）乗）との大小比較を行うことで、確率分布２０ｓ〜２９ｓのそれぞれの偏りを判別することができる。確率の最大値がｃ／（２の（ｂ−ａ＋１）乗）より小さい場合、確率分布に偏りがないと判断し、ブロックアドレス［ｂ：ａ］はランダムアクセスに近く、予測値の予測が困難と判定する。
【００５３】
次に、予測精度判定部１２２は、確率分布２０ｓ〜２９ｓのそれぞれについて、ステップ３３またはステップ３４で予測値の予測が困難と判定された場合、ビット位置ｂの最大値ｂｍａｘを算出する（３５）。次に、予測精度判定部１２２は、プリフェッチ対象領域のサイズを２のｂｍａｘ乗と決定する（３６）。この処理は、統計解析ソフトウェア１１１が発行したクエリを実行するためにデータベース管理システム１１３が実行するストレージに対する読み出しまたは書き込みがある領域内でランダムに行われる場合に、その領域のサイズを予測する。この時、３３または３４のステップで予測値の予測が困難と判定されたブロックアドレス［ｂ：ａ］で指定される全てのデータをプリフェッチすることができる。このため、予測が困難と判定されたブロックアドレス［ｂ：ａ］のプリフェッチ漏れを防止することができ、予測が困難と判定されたブロックアドレス［ｂ：ａ］で指定されるデータへのアクセスタイムを減少させることができる。
【００５４】
一方、予測精度判定部１２２は、ステップ３３で予測精度がｃ／（２の（ｂ−ａ＋１）乗）以上と判断し、かつステップ３４で確率の最大値がｃ／（２の（ｂ−ａ＋１）乗）以上と判断した場合、そのブロックアドレス［ｂ：ａ］は予測可能と判定する（４０）。この時、予測値判定部１２３は、予測可能と判定されたブロックアドレス［ｂ：ａ］に基づいてプリフェッチの対象領域のアドレスを決定する。これにより、予測可能と判定されたブロックアドレス［ｂ：ａ］に基づいてプリフェッチの対象領域を限定することができ、キャッシュ領域のサイズを低減することができる。
【００５５】
図４は、ブロックアドレスを分割したビット範囲に基づいてプリフェッチの対象領域のアドレスを決定する手順を示す図である。
図４において、図３のステップ４０で予測可能なブロックアドレス［ｂ：ａ］が判定されると、予測可能なビット範囲が複数存在するかどうかを判定する（４１）。予測可能なビット範囲が複数存在する場合、ビット範囲の重複の有無の判定する（４２）。ビット範囲に重複がある場合は、重複したビットについて予測値の一致判定を行う（４３）。それらの予測値が一致しない場合、複数通りの予測値の組合せが生じる。この時、予測値の確率の大小比較による予測値の順位付けを行う（４４）。そして、予測値の組合せの順位が高いものから、図３のステップＳ３６で決定したサイズで、ストレージクラスメモリ１２５のキャッシュ領域を割当てる（４５）。
【００５６】
ステップ４１で予測可能なビット範囲が１つしか存在しないと判断した場合、予測値に対応する確率の大小比較による予測値の順位付けを行う（４６）。また、ステップ４２で予測可能な複数のビット範囲に重複するビットがないと判断した場合、それぞれのビット範囲の確率値の積を、連結した予測値の確率として順位付けを行う。
【００５７】
ストレージクラスメモリ１２５にキャッシュ領域を割当てた後、ストレージクラスメモリ１２５のキャッシュ領域に空きがあるかどうかを判断する（４７）。ストレージクラスメモリ１２５のキャッシュ領域に空きがある場合、予測値の確率の値が第２位のビット範囲とその予測値の判定を行い、重複ビットについて予測値の組合せに対する順位付けと、ストレージクラスメモリ１２５のキャッシュ領域の割当てを行う。ここで、複数のビット範囲について第２位の候補がある場合には、それぞれの第１位の確率値との比を計算して、第１位に最も近いものを第２位とする。
【００５８】
以下、ストレージクラスメモリ１２５のキャッシュ領域に空きがなくなるまで、第３位以下のビット範囲とその予測値について、重複ビットの予測値の組合せの順位付けとキャッシュ領域の割当てを行う。ストレージ装置２は、上記の方法で予測したプリフェッチ対象領域のデータをＮＡＮＤフラッシュ１２６から読み出し、ストレージクラスメモリ１２５のキャッシュ領域に格納する。
【００５９】
図５は、図１のストレージクラスメモリのキャッシュメモリ管理領域の管理方法を示すブロック図である。
図５において、ストレージクラスメモリ１２５は、キャッシュメモリとして使用されるだけでなく、例えばストレージコントローラ１２１が管理するメタデータの格納領域５０１としても使用される。また、ストレージクラスメモリ１２５は、キャッシュメモリとして使用する領域についても、シーケンシャルアクセス向けに連続するブロックアドレス領域を先読みするキャッシュ領域５０２と、上述した方法でプリフェッチを行うランダムアクセス向けのキャッシュ領域５０３とを備える。また、ストレージクラスメモリ１２５は予備領域５０４を備える。
【００６０】
ストレージコントローラ１２１は、メタデータ使用量がストレージクラスメモリ１２５にあらかじめ割り当てた容量に近づいたら、予備領域５０４から追加割当てを行う。さらに、ストレージコントローラ１２１は、シーケンシャルにアクセスしたブロック数とランダムアクセスしたブロック数をカウントし、これらのカウント値の比率５０に合わせて一定期間ごとにキャッシュ領域５０２、５０３の容量比を変更する。
【００６１】
図３の方法で決定したプリフェッチ対象領域サイズ３６を単位にランダムアクセス向けキャッシュ領域５０３を分割し、割当領域Ｒ１〜Ｒ８を生成する。そして、図４の方法で順位付けを行ったプリフェッチ対象領域のブロックアドレス４５１〜４５８に基づきＮＡＮＤフラッシュ１２６からシーケンシャルにデータＤ１〜Ｄ８を読み出す。そして、データＤ１〜Ｄ８をキャッシュ領域５０３の割当領域Ｒ１〜Ｒ８に格納することでプリフェッチを実行する。ニューラルネットワーク１０ｓ〜１９ｓへの入力となるＩ／Ｏトレースデータ１２の変化に対応して、図４の方法で決定した順位に変動があった場合には、キャッシュ領域５０３の分割数より大きい順位に落ちたプリフェッチ対象領域と、分割数以下の順位に入ったプリフェッチ対象領域とのスワップを行う。
【００６２】
キャッシュ領域５０３にキャッシュされたデータＤ１〜Ｄ８は、ブロック単位に状態を管理される。データ解析サーバ１から読み出し要求されたブロックのデータは、キャッシュ領域５０３からデータ解析サーバ１に転送される。データ解析サーバ１から書き込み要求されたブロックのデータは、キャッシュ領域５０３のデータ書き換えが行われ、順位付けの変動によるスワップアウトを行う時に、書き換えのあったブロックのＮＡＮＤフラッシュ１２６への書き込みを行う。
【００６３】
プリフェッチ対象領域の予測と並行して、図１の機械学習用計算機１３２は、Ｉ／Ｏトレースデータ１２を使用し、クエリおよびデータベース名１１に基づき選択されたニューラルネットワーク１０ｓ〜１９ｓを学習させる。この時、機械学習用計算機１３２は、Ｉ／Ｏトレースデータ１２から、一定数の読み出しおよび書き込みを含む部分を切り出し、これらに引き続いて行われる読み出しおよび書き込みブロックアドレスの分割ビット範囲について、予測値と実際のアドレス値の差が小さくなるように、ニューラルネットワーク１０ｓ〜１９ｓそれぞれの変数を調整する。
【００６４】
図６は、ブロックアドレスを分割したビット範囲ごとのアドレス確率分布を予測するニューラルネットワークの学習方法を示すブロック図である。
図６において、Ｉ／Ｏトレースデータ１２は、｛時刻、ブロックアドレス、ブロック数、読み出し／書き込み種別｝の４次元ベクトルを時系列データとして一定数：Ｌ＋Ｍだけ記録した、４×Ｌの２次元データ２００と、４×Ｍの２次元データ６００に加工される。４×Ｌの２次元データ２００は、図２の場合と同じくニューラルネットワーク１０ｓ〜１９ｓに入力されて、ブロックアドレスビットを分割したビット範囲のそれぞれの予測値が出現する確率分布２０ｓ〜２９ｓを出力する。
【００６５】
一方、４×Ｍの２次元データ６００について、ブロックアドレスを分割したビット範囲のそれぞれのヒストグラムを算出する（６０１）。このヒストグラムは、ビット範囲のそれぞれのアドレスの出現頻度を示すことができる。このヒストグラムは、過去のアクセスパターンから予測した確率分布２０ｓ〜２９ｓに対する、実際に起こったアクセスパターンとすることができる。そして、実際に起こったアクセスパターンに対する確率分布２０ｓ〜２９ｓの予測誤差を計算し、損失関数６０ｓ〜６９ｓとする。損失関数６０ｓ〜６９ｓの値が小さくなるようにニューラルネットワーク１０ｓ〜１９ｓの変数を調整することによって、ニューラルネットワーク１０ｓ〜１９ｓをトレーニングする。
【００６６】
図７は、図１のニューラルネットワークの学習に用いることが可能なカラムストア格納形式のＩ／Ｏトレースデータの一例を示すブロック図である。
図７において、ニューラルネットワーク管理システム３は、データ解析サーバ１においてＩ／Ｏトレースデータ１２を一意に識別可能なＩＤ、データ解析サーバ名、Ｉ／Ｏトレースデータ１２を採取した時刻、クエリおよびデータベース名１１をメタデータ７０としてＩ／Ｏトレースデータ１２を関連付ける。そして、その関連付けを行ったＩ／Ｏトレースデータ１２をＩ／Ｏトレースデータ用ストレージ１３３に蓄積する。
【００６７】
本実施形態におけるＩ／Ｏトレースデータ１２は、｛時刻、読み出し／書き込み種別、ブロックアドレス、ブロック数｝の４次元ベクトルである多数のレコードを、時系列データとして格納したものである。この時、同じ属性のＩ／Ｏトレースデータ１２を連続領域に格納し、属性名、格納位置、レコード数および圧縮方式等の情報をメタデータ７０の一部として別に管理するカラムストア格納形式をとることができる。例えば、属性７１のＩ／Ｏトレースデータ１２を格納位置Ａ７１で示される連続領域に格納し、属性７２のＩ／Ｏトレースデータ１２を格納位置Ａ７２で示される連続領域に格納し、属性７９のＩ／Ｏトレースデータ１２を格納位置Ａ７９で示される連続領域に格納する。これにより、一般に多次元テンソルとして扱われる機械学習に使用されるＩ／Ｏトレースデータ１２の読み出しを効率良く行うことができる。
【００６８】
例えば、読み出し／書き込み種別のデータは２種類の値しかとらず連続して同じ値をとる場合がある。このため、カラムストア格納形式をとることによって、連続して出現するデータ数を記録することで圧縮を行うｒｕｎ−ｌｅｎｇｔｈ方式の圧縮率が良くなり、一定量の読み出しで取得できるレコード数を増加することが可能となる。また、Ｉ／Ｏトレースデータ１２として上記４種のデータの他に、入出力を行ったプロセス名等のデータも記録できる一方で、機械学習で使用するＩ／Ｏトレースデータ１２は、一部の属性のみを選択して行うことが可能である。その場合には、学習に使用しない属性のデータがレコードに含まれることになるため、レコードを連続領域に格納する場合より、属性毎に連続領域に格納するカラムストア形式の方が読み出しの効率が良くなる。
【００６９】
プリフェッチ対象領域の予測とは非同期に、ニューラルネットワーク管理領域１３４からクエリおよびデータベース名１１に基づいて選択したニューラルネットワーク１０ｓ〜１９ｓをトレーニングする。この場合、蓄積されたＩ／Ｏトレースデータ１２からＮ（Ｎは正の整数）セットの４×（Ｌ＋Ｍ）の２次元の時系列データをランダムに選択して、４×（Ｌ＋Ｍ）×Ｎの３次元データを使用してトレーニングする。
【００７０】
図８は、クエリとデータベース名に基づく選択において用いられる、ニューラルネットワークの属性を示すデータ構造を示す図である。図８において、図１のそれぞれのニューラルネットワーク１０ａ〜１９ａ、１０ｂ〜１９ｂ、・・、１０ｚ〜１９ｚには固有のＩＤ８０が与えられる。ニューラルネットワーク管理システム３は、ニューラルネットワーク１０ａ〜１９ａ、１０ｂ〜１９ｂ、・・、１０ｚ〜１９ｚの属性情報として、ニューラルネットワークを定義するデータ８１、すなわち、種別、構造と変数値、予測を担当するブロックアドレスのビット範囲の他に、学習データ量および予測精度８２を管理する。
【００７１】
さらに、ニューラルネットワーク１０ａ〜１９ａ、１０ｂ〜１９ｂ、・・、１０ｚ〜１９ｚのそれぞれがデータベース名８３およびクエリ８４に関連付けられている。ニューラルネットワーク管理システム３は、クエリ８４の実行にあたってアクセスされるテーブル８５のカラム名８６、コマンド８７、条件式８８の情報を管理する。
【００７２】
クエリ８４に関する情報には、クエリ類似度を算出するための一致スコア値を付加することができる。例えば、データベース名８３が不一致であればクエリ類似度＝０、データベース名８３が一致すれば、クエリ類似度＝（カラム名が一致するスコア値の総和＋コマンドが一致する場合のスコア値＋条件式が一致する場合のスコア値）と計算することができる。
【００７３】
クエリ類似度は、クエリ８４に類似する類似クエリの検出に用いることができる。ＤＢクライアント１１２が受け付けたクエリに関連付けられたニューラルネットワーク１０ａ〜１９ａ、１０ｂ〜１９ｂ、・・、１０ｚ〜１９ｚがない場合、そのクエリに類似する類似クエリに関連付けられたニューラルネットワーク１０ａ〜１９ａ、１０ｂ〜１９ｂ、・・、１０ｚ〜１９ｚを選択することができる。
【００７４】
図９は、図１のニューラルネットワークを管理するＮＮ管理画面の一例を示す図である。
図９において、ＮＮ管理画面８９には、図８のＩＤ８０、データベース名８３、クエリ８４、学習データ量および予測精度８２が表示される。また、ＮＮ管理画面８９には、類似クエリ、クエリ類似度、成績および操作が表示される。
【００７５】
成績は、ニューラルネットワークをトレーニングすることでどれだけ予測精度が上がったかを示すことができる。操作は、予測に基づくプリフェッチ機能をオフしてトレーニングのみを行う操作や、トレーニングの結果、予測精度に向上が見られないニューラルネットワークの使用を禁止する操作、クエリ類似度の算出に用いるスコア値を変更する操作などを含むことができる。
【００７６】
ストレージ装置２の管理者は、ＮＮ管理画面８９を通じて、予測精度およびトレーニング履歴情報を参考に各種操作を行うことができる。トレーニング履歴情報は、学習データ量、成績および蓄積されたＩ／Ｏトレースデータ１２のうちどのデータを学習に使用したかの情報などを含むことができる。トレーニング履歴情報は、図７のカラムストア格納形式のメタデータ７０の一部として保持してもよい。
【００７７】
（第２実施形態）
図１０は、第２実施形態に係るデータ処理装置の構成を示すブロック図である。
図１０のデータ処理装置は、図１のストレージ装置２およびニューラルネットワーク管理システム３の代わりにストレージ装置２Ａを備える。ストレージ装置２Ａは、図１のストレージ装置２の構成に機械学習用計算機１３２ＡおよびＩ／Ｏトレースデータ用ストレージ９が追加されている。Ｉ／Ｏトレースデータ用ストレージ９は、Ｉ／Ｏトレースデータ１２を図７のカラムストア形式で格納する。ストレージ装置２Ａのストレージクラスメモリ１２５Ａは、図５の格納領域５０１、キャッシュ領域５０２、５０３および予備領域５０４に加えニューラルネットワーク管理領域５０５を備える。ニューラルネットワーク管理領域５０５は、図１のニューラルネットワーク管理領域１３４と同様に構成することができる。
【００７８】
学習データであるＩ／Ｏトレースデータ１２は、ストレージコントローラ１２１によって採取され、Ｉ／Ｏトレースデータ用ストレージ９にカラムストア形式で格納される。ニューラルネットワーク管理領域５０５で管理されるニューラルネットワークを定義する変数や属性等のデータは、メタデータ５０１などとともに、ストレージクラスメモリ１２５Ａに格納される。
【００７９】
機械学習用計算機１３２Ａは、未学習のＩ／Ｏトレースデータ１２を使用したトレーニングを管理下のニューラルネットワークに実行させ、ューラルネットワーク管理領域５０５に格納されるニューラルネットワークを定義する変数値を更新する。
【００８０】
ここで、ニューラルネットワーク管理領域５０５をストレージクラスメモリ１２５Ａに設けることにより、図１のストレージ装置２とは別にニューラルネットワーク管理システム３を設ける必要がなくなり、システム構成を簡素化することができる。
（第３実施形態）
図１１は、第３実施形態に係るデータ処理装置の構成を示すブロック図である。
図１１のデータ処理装置は、データ解析サーバ１Ｂ、ストレージ装置２Ｂおよびニューラルネットワーク管理システム３Ｂを備える。
【００８１】
データ解析サーバ１Ｂは、統計解析ソフトウェア１１１、ＤＢクライアント１１２、データベース管理システム１１３、ファイルシステム１１４、ブロックＩ／Ｏレイヤ１１５、デバイスドライバ１１６Ｂ、ストレージクラスメモリ１１７および機械学習用プロセッサ１１８を備える。
【００８２】
デバイスドライバ１１６Ｂは、図１の予測精度判定部１２２、予測値判定部１２３、プリフェッチ発行部１２４および予測モデル１２７を備える。ストレージクラスメモリ１１７は、図５のキャッシュ領域５０３を備える。ストレージクラスメモリ１１７は、キャッシュ領域５０３の他、主記憶領域および予備領域を備えてもよい。機械学習用プロセッサ１１８は、クエリの実行に伴うＩ／Ｏトレースデータ１２をビット範囲ごとにニューラルネットワーク１０ａ〜１９ａ、１０ｂ〜１９ｂ、・・、１０ｚ〜１９ｚに学習させる。
【００８３】
ストレージ装置２Ｂは、ストレージコントローラ１２１、ストレージクラスメモリ１２５ＢおよびＮＡＮＤフラッシュメモリ１２６を備える。ストレージクラスメモリ１２５Ｂは、図５の格納領域５０１、キャッシュ領域５０２および予備領域５０４を備える。
【００８４】
ニューラルネットワーク管理システム３Ｂは、Ｉ／Ｏトレースデータ用ストレージ１３３およびニューラルネットワーク管理領域１３４を備える。
【００８５】
デバイスドライバ１１６は、ニューラルネットワークによる予測に基づきストレージ装置２Ｂからプリフェッチを行う。ブロックＩ／Ｏレイヤ１１５の動作をモニタして採取された学習データであるＩ／Ｏトレースデータ１２は、ニューラルネットワーク管理システム３ＢのＩ／Ｏトレースデータ用ストレージ１３３に格納される。Ｉ／Ｏトレースデータ１２を用いたニューラルネットワークのトレーニングは、機械学習用プロセッサ１１８の空き時間に行われる。
【００８６】
ここで、プリフェッチを行うランダムアクセス向けのキャッシュ領域５０３をデータ解析サーバ１Ｂに設けることにより、プリフェッチされたデータを統計解析ソフトウェア１１１が利用する際に、ストレージ装置２Ｂにアクセスする必要がなくなり、プリフェッチされたデータへのアクセスを高速化することができる。
【００８７】
（第４実施形態）
データベース管理システムによっては、ランダムアクセスに対するシーケンシャルアクセスの比率が大きいものがある。シーケンシャルアクセスの比率が一定値より高いデータベース管理システムに対して、Ｉ／Ｏトレースデータ１２を入力とするニューラルネットワークを使用して連続アドレスでアクセスされるブロック数を予測して、シーケンシャルアクセス向けのキャッシュ領域５０２に対するプリフェッチを行う。これにより、連続アドレスでアクセスされるデータ全体をプリフェッチすることができ、連続アドレスでアクセスされるデータへのアクセスタイムを減少させることができる。
【００８８】
（第５実施形態）
過去のＩ／Ｏトレースからランダムな読み出しブロック数とランダムな書き込みブロック数の比率を算出する。そして、ランダムな読み出しブロック数とランダムな書き込みブロック数の比率に基づき、ランダムアクセス向けのキャッシュ領域５０３を、読み出しアクセス向けの領域と書き込みアクセス向けの領域に分割する。ランダムな読み出しブロックアドレスのパターンを認識するニューラルネットワークと、ランダムな書き込みブロックアドレスのパターンを認識するニューラルネットワークを別個にトレーニングして、それぞれのブロックアドレス予測に基づき、それぞれのキャッシュ領域に対するプリフェッチを行う。これにより、読み出しおよび書き込みのデータ量に応じてキャッシュ領域を割り当てることができ、キャッシュ領域を有効活用することができる。
【００８９】
（第６実施形態）
図１２は、図１のデータ処理装置のハードウェア構成例を示すブロック図である。
図１２において、データ処理装置１００は、プロセッサ１０１、通信制御デバイス１０２、通信インタフェース１０３、主記憶デバイス１０４および外部記憶デバイス１０５を備える。プロセッサ１０１、通信制御デバイス１０２、通信インタフェース１０３、主記憶デバイス１０４および外部記憶デバイス１０５は、内部バス１０６を介して相互に接続されている。主記憶デバイス１０４および外部記憶デバイス１０５は、プロセッサ１０１からアクセス可能である。
【００９０】
プロセッサ１０１は、データ処理装置１００全体の動作制御を司るハードウェアである。主記憶デバイス１０４は、例えば、ＳＲＡＭまたはＤＲＡＭなどの半導体メモリから構成することができる。主記憶デバイス１０４には、プロセッサ１０１が実行中のプログラムを格納したり、プロセッサ１０１がプログラムを実行するためのワークエリアを設けたりすることができる。
【００９１】
外部記憶デバイス１０５は、大容量の記憶容量を有する記憶デバイスである。外部記憶デバイス１０５は、ストレージクラスメモリおよびＮＡＮＤフラッシュメモリを備える。外部記憶デバイス１０５は、各種プログラムの実行ファイルやプログラムの実行に用いられるデータを保持することができる。外部記憶デバイス１０５には、プリフェッチ処理プログラム１０５Ａを格納することができる。プリフェッチ処理プログラム１０５Ａは、データ処理装置１００にインストール可能なソフトウェアであってもよいし、データ処理装置１００にファームウェアとして組み込まれていてもよい。
【００９２】
通信制御デバイス１０２は、外部との通信を制御する機能を有するハードウェアである。通信制御デバイス１０２は、通信インタフェース１０３を介してネットワーク１０９に接続される。ネットワーク１０９は、インターネットなどのＷＡＮ（Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）であってもよいし、ＷｉＦｉなどのＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）であってもよいし、ＷＡＮとＬＡＮが混在していてもよい。
【００９３】
プロセッサ１０１がプリフェッチ処理プログラム１０５Ａを主記憶デバイス１０４に読み出し、プリフェッチ処理プログラム１０５Ａを実行することにより、ビット位置に基づいてブロックアドレスを複数のビット範囲に分割し、プリフェッチに用いられるアドレスの予測精度をビット範囲ごとに判定し、ビット範囲ごとに判定した予測精度に基づいてプリフェッチの対象領域を決定することができる。
【００９４】
この時、プリフェッチ処理プログラム１０５Ａは、図１の予測精度判定部１２２、予測値判定部１２３、プリフェッチ発行部１２４および予測モデル１２７の機能を実現することができる。なお、プリフェッチ処理プログラム１０５Ａの実行は、複数のプロセッサやコンピュータに分担させてもよい。または、プロセッサ１０１は、ネットワーク１０９を介してクラウドコンピュータなどにプリフェッチ処理プログラム１０５Ａの全部または一部の実行を指示し、その実行結果を受け取るようにしてもよい。
【００９５】
以上、本発明の実施形態について説明したが、本発明は上述した実施形態に限定されるものではなく、添付した特許請求の範囲の趣旨内における様々な変形例および同等の構成が含まれる。例えば、上述した実施形態は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに本発明は限定されない。
【００９６】
例えば、上述した実施形態では、図２の確率分布２０ｓ〜２９ｓを予測するために、Ｉ／Ｏトレースデータを学習させたニューラルネットワーク１０ｓ〜１９ｓを用いる方法について説明したが、必ずしもニューラルネットワーク１０ｓ〜１９ｓを用いる必要はない。例えば、Ｉ／Ｏトレースデータに基づいて図２の確率分布２０ｓ〜２９ｓを計算するアルゴリズムに基づいて図２の確率分布２０ｓ〜２９ｓを予測するようにしてもよい。また、上述した実施形態では、ストレージクラスメモリ１２５をキャッシュとして使用した場合について説明したが、ＤＲＡＭやＳＲＡＭをキャッシュとして使用した場合に適用してもよい。
【符号の説明】
【００９７】
１  データ解析サーバ、２  ストレージ装置、３  ニューラルネットワーク管理システム、１０ｓ〜１９ｓ  ニューラルネットワーク、１２１  ストレージコントローラ、１２２  予測精度判定部、１２３  予測値判定部、１２４  プリフェッチ発行部、１２５  ストレージクラスメモリ、１２６  ＮＡＮＤフラッシュメモリ
【図１】
2019204335.tif 000003
【図２】
2019204335.tif 000004
【図３】
2019204335.tif 000005
【図４】
2019204335.tif 000006
【図５】
2019204335.tif 000007
【図６】
2019204335.tif 000008
【図７】
2019204335.tif 000009
【図８】
2019204335.tif 000010
【図９】
2019204335.tif 000011
【図１０】
2019204335.tif 000012
【図１１】
2019204335.tif 000013
【図１２】
2019204335.tif 000014