JP2019204335A - データ処理装置およびプリフェッチ方法 - Google Patents
データ処理装置およびプリフェッチ方法 Download PDFInfo
- Publication number
- JP2019204335A JP2019204335A JP2018099700A JP2018099700A JP2019204335A JP 2019204335 A JP2019204335 A JP 2019204335A JP 2018099700 A JP2018099700 A JP 2018099700A JP 2018099700 A JP2018099700 A JP 2018099700A JP 2019204335 A JP2019204335 A JP 2019204335A
- Authority
- JP
- Japan
- Prior art keywords
- prefetch
- address
- data
- bit
- bit range
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0862—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
- G06F12/0868—Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/047—Probabilistic or stochastic networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N7/00—Computing arrangements based on specific mathematical models
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/903—Querying
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1041—Resource optimization
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/21—Employing a record carrier using a specific recording technology
- G06F2212/214—Solid state disk
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/22—Employing cache memory using specific memory technology
- G06F2212/222—Non-volatile memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/28—Using a specific disk cache architecture
- G06F2212/283—Plural cache memories
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/31—Providing disk cache in a specific location of a storage system
- G06F2212/313—In storage device
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/46—Caching storage objects of specific type in disk cache
- G06F2212/461—Sector or disk block
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/46—Caching storage objects of specific type in disk cache
- G06F2212/466—Metadata, control data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/60—Details of cache memory
- G06F2212/6024—History based prefetching
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computing Systems (AREA)
- Software Systems (AREA)
- Mathematical Physics (AREA)
- Artificial Intelligence (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Biomedical Technology (AREA)
- Molecular Biology (AREA)
- General Health & Medical Sciences (AREA)
- Computational Linguistics (AREA)
- Biophysics (AREA)
- Life Sciences & Earth Sciences (AREA)
- Health & Medical Sciences (AREA)
- Mathematical Analysis (AREA)
- Algebra (AREA)
- Computational Mathematics (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Probability & Statistics with Applications (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
【課題】ブロックアドレス空間の巨大化に対応しつつ、プリフェッチの対象領域を決定するデータ処理装置を提供する。【解決手段】データ処理装置のストレージ装置2において、予測モデル127は、I/Oトレースデータ12を機械学習させたそれぞれ異なるビット範囲を担当する複数のニューラルネットワーク10s〜19sを用いることで、ブロックアドレスを分割したビット範囲ごとにプリフェッチのアドレスを予測する。予測精度判定部122は、プリフェッチの予測精度が所定値より小さいビット範囲のアドレスに基づいて、プリフェッチの対象領域のサイズを決定し、予測値判定部123は、プリフェッチの予測精度が所定値以上のビット範囲のアドレスに基づいて、プリフェッチの対象領域のアドレスを決定する。プリフェッチ発行部124は、プリフェッチの対象領域のデータをNANDフラッシュメモリ126からストレージクラスメモリ125にキャッシュする。【選択図】図1
Description
本発明は、ストレージクラスメモリに適用可能なデータ処理装置およびプリフェッチ方法に関する。
ストレージクラスメモリは、計算機における記憶階層ギャップ、すなわち、DRAMで構成される主記憶装置と、NANDフラッシュメモリで構成されるストレージ装置とのアクセスタイムにおける約1000倍のギャップを埋める新しいメモリである。例えば、IntelとMicronはストレージクラスメモリとして使用できる大容量不揮発メモリ技術である3D XPoint Technologyを発表した。それによると、NANDフラッシュメモリに対して1000倍長寿命かつ高速であり、DRAMに対して10倍の容量を有し、DRAMと同じインタフェースでバイト単位にアクセス可能な不揮発メモリが実現できる。
情報処理システムにおけるストレージクラスメモリの基本的な使用方法は、NAND フラッシュメモリのストレージキャッシュとして、DRAMに格納できない規模の使用頻度が高いデータを格納し、比較的小さいアクセスタイムで使用可能とすることである。ストレージキャッシュへの格納対象となる使用頻度が高いデータを決定する手段として、機械学習を使用する公知例がある。
特許文献1には、特定のソフトウェアがストレージにアクセスするデータブロックを学習して、当該ソフトウェアがスタートすると、学習されたデータブロックをプリフェッチする実施形態が記載されている。
特許文献2には、主記憶に展開するデータレイアウトを変えて性能を測定するステップを繰り返すことによって、最適なデータレイアウトを決定する実施形態が記載されている。
特許文献3には、ユーザから見たレイテンシを最小化するために、ページアウトするデータの決定において、複数の予測方法を用いて予測精度を向上するオペレーティングシステムによるインテリジェントなメモリ管理方法が記載されている。
特許文献4には、アプリケーションが最初のファイルにアクセスした時に、ストレージに対するデータアクセスパターンを含むアプリケーションモデルをフェッチして、次にアクセスするファイルを特定してプリフェッチする方法が記載されている。
特許文献5には、埋め込まれたルールと推論エンジンにより生成されたメタデータを基に、ファイルの主記憶へプリフェッチするインテリジェントなデータ管理が記載されている。
特許文献6には、ストレージおよびストレージキャッシュに対する入出力要求をモニタし、プリフェッチアルゴリズムを適用することによって、将来の書き込み要求を予測して、データ保護を効率的に行う方法が記載されている。
ストレージを構成する記憶素子であるNANDフラッシュメモリのアクセスタイムが、主記憶を構成するDRAMと比較して約1000倍大きいという記憶階層ギャップがある。このため、大規模データの解析において、解析対象のデータを主記憶に格納するインメモリデータベースが使用されている。しかし、主記憶容量の合計がデータサイズを超える台数の計算機を使用する必要があり、システムが高コスト化する。
そこで、記憶階層ギャップを埋めるストレージクラスメモリを適用することにより、主記憶容量を拡張して必要な計算機の台数を削減することが考えられる。主記憶容量の拡張にストレージクラスメモリを使用する場合、DRAMをキャッシュメモリとして、記憶容量が大きい記憶階層が一段増加した従来のメモリアクセス制御をハードウェアが行う計算機において、従来以上のサイズのデータを主記憶上で処理するプログラムを実行させることができる。
一方、ストレージクラスメモリから溢れたデータをストレージ格納データとスワップする機構は、ページフォールト割込みを契機にオペレーティングシステムがストレージに対する書き込みと読み出しを行うのが基本であり、ストレージクラスメモリの有無によらないオーバーヘッドを要する。
そこで、インメモリデータベースがアクセス頻度の高いデータを主記憶に保持する機構を実装して、データ配置を最適化するための書き込みと読み出しを行うことになるが、記憶階層の増加を伴うためデータ配置機構の大幅な改変が必要となる。また、データの格納形式に対応してデータベースごとに別の実装を行うよりも、プラットフォームレベルでストレージからのプリフェッチ機能を持つ方が効率が良い。
過去に行われたストレージへの書き込みと読み出しのパターンを機械学習する機能を設け、その予測結果に基づきプリフェッチに用いる公知例において、ストレージのブロックアドレス空間は巨大であるため、ブロック単位で将来アクセスされるデータを予測するには、複雑な構造を持つニューラルネットワークを学習させるための大量のデータと、強力な計算機資源が必要となる。また、機械学習では、応用分野に合わせて最適なニューラルネットワークの構造が異なるため、新しいモデルの考案を含む試行錯誤が必要となる。
本発明は、上記事情に鑑みなされたものであり、その目的は、ブロックアドレス空間の巨大化に対応しつつ、プリフェッチの対象領域を決定することが可能なデータ処理装置を提供することにある。
上記目的を達成するため、第1の観点に係るデータ処理装置は、ビット位置に基づいてブロックアドレスをビット範囲に分割し、プリフェッチに用いられるブロックアドレスの予測精度を前記ビット範囲ごとに判定し、前記ビット範囲ごとに判定した前記予測精度に基づいて前記プリフェッチの対象領域を決定する。
本発明によれば、ブロックアドレス空間の巨大化に対応しつつ、プリフェッチの対象領域を決定することができる。
実施形態について、図面を参照して説明する。なお、以下に説明する実施形態は特許請求の範囲に係る発明を限定するものではなく、また、実施形態の中で説明されている諸要素及びその組み合わせの全てが発明の解決手段に必須であるとは限らない。
(第1実施形態)
図1は、第1実施形態に係るデータ処理装置の構成を示すブロック図である。
図1において、データ処理装置は、データ解析サーバ1、ストレージ装置2およびニューラルネットワーク管理システム3を備える。データ解析サーバ1は、ストレージ装置2に格納された大規模データを解析する。ニューラルネットワーク管理システム3は、ストレージのブロックアドレスを分割したビット範囲ごとにI/Oトレースデータ12を機械学習させたニューラルネットワーク10a〜19a、10b〜19b、・・、10z〜19zを管理する。I/Oトレースデータ12には、過去の読み出しまたは書き込みに用いられたブロックアドレスが記録される。
図1は、第1実施形態に係るデータ処理装置の構成を示すブロック図である。
図1において、データ処理装置は、データ解析サーバ1、ストレージ装置2およびニューラルネットワーク管理システム3を備える。データ解析サーバ1は、ストレージ装置2に格納された大規模データを解析する。ニューラルネットワーク管理システム3は、ストレージのブロックアドレスを分割したビット範囲ごとにI/Oトレースデータ12を機械学習させたニューラルネットワーク10a〜19a、10b〜19b、・・、10z〜19zを管理する。I/Oトレースデータ12には、過去の読み出しまたは書き込みに用いられたブロックアドレスが記録される。
ストレージ装置2は、データ解析サーバ1で解析される大規模データを記憶する。この時、ストレージ装置2は、読み出し対象または書き込み対象となるデータをストレージキャッシュすることができる。ここで、ストレージ装置2は、ビット位置に基づいてブロックアドレスを複数のビット範囲に分割し、プリフェッチに用いられるアドレスの予測精度をビット範囲ごとに判定し、ビット範囲ごとに判定した予測精度に基づいてプリフェッチの対象領域を決定する。プリフェッチの予測精度は、将来利用されるデータがキャッシュされる確率で示すことができる。例えば、プリフェッチの予測精度として、プリフェッチに用いられるビット範囲のアドレスが、プリフェッチ後の読み出しまたは書き込みに用いられるビット範囲のアドレスに一致する確率を用いることができる。ブロックアドレスを分割したビット範囲は一部が重複していてもよい。
データ解析サーバ1は、統計解析ソフトウェア111、DB(Data Base)クライアント112、データベース管理システム113、ファイルシステム114、ブロックI/Oレイヤ115およびデバイスドライバ116を備える。
統計解析ソフトウェア111は、大規模データの解析に用いられるプログラムである。DBクライアント112は、クエリを受け付け、データベース管理システム113に対応したインタフェースを介してクエリを伝達する。データベース管理システム113は、ストレージ装置2に格納された解析対象のデータを管理する。ファイルシステム114は、データの格納位置を示すブロックアドレスとブロック数を指定して読み出しまたは書き込み要求を行う。ブロックI/Oレイヤ115は、ストレージ装置2に対応するデバイスドライバ116に読み出しまたは書き込み要求を行う。デバイスドライバ116は、ストレージ装置2に対応するインタフェースを介してデータの読み出しまたは書き込みを行う。
ストレージ装置2は、ストレージコントローラ121、予測精度判定部122、予測値判定部123、プリフェッチ発行部124、ストレージクラスメモリ125、NANDフラッシュメモリ126および予測モデル127を備える。
ストレージコントローラ121は、ストレージクラスメモリ125の読み出しまたは書き込みを制御する。ストレージクラスメモリ125は、NANDフラッシュメモリ126に対して1000倍程度長寿命かつ高速であり、DRAMに対して10倍程度の容量を有し、DRAMと同じインタフェースでバイト単位にアクセス可能な不揮発性メモリである。ストレージクラスメモリ125は、NANDフラッシュメモリ126のストレージキャッシュとして用いることができる。ストレージクラスメモリ125としては、例えば、磁気抵抗メモリ(MRAM)、抵抗変化メモリ(ReRAM)、相変化メモリ(PRAM/PCM)、強誘電体メモリ(FeRAM)、スピン注入型磁気メモリ(STT−MRAM)、カーボンナノチューブメモリまたは3Dクロスポイントメモリを用いることができる。NANDフラッシュメモリ126は、ページ単位で読み出しまたは書き込みが可能で、ブロック単位で消去が可能な不揮発性メモリである。
予測モデル127は、ブロックアドレスを分割したビット範囲ごとにプリフェッチのアドレスを予測する。この時、予測モデル127は、I/Oトレースデータ12を機械学習させたそれぞれ異なるビット範囲を担当する複数のニューラルネットワーク10s〜19sを用いることができる。予測精度判定部122は、プリフェッチの予測精度が所定値より小さいビット範囲のアドレスに基づいて、プリフェッチの対象領域のサイズを決定する。予測値判定部123は、プリフェッチの予測精度が所定値以上のビット範囲のアドレスに基づいて、プリフェッチの対象領域のアドレスを決定する。プリフェッチ発行部124は、プリフェッチの対象領域のデータをNANDフラッシュメモリ126からストレージクラスメモリ125にキャッシュする。
ニューラルネットワーク管理システム3は、ニューラルネットワーク選択部131、機械学習用計算機132、I/Oトレースデータ用ストレージ133およびニューラルネットワーク管理領域134を備える。
ニューラルネットワーク選択部131は、クエリおよびデータベース名11に対応したニューラルネットワーク10s〜19sをニューラルネットワーク10a〜19a、10b〜19b、・・、10z〜19zから選択し、予測モデル127として使用できるようにする。機械学習用計算機132は、クエリの実行に伴うI/Oトレースデータ12をビット範囲ごとに、10a〜19a、10b〜19b、・・、10z〜19zから選択したニューラルネットワークに学習させる。I/Oトレースデータ用ストレージ133は、I/Oトレースデータ12を記憶する。
ニューラルネットワーク管理領域134は、複数のニューラルネットワーク10a〜19a、10b〜19b、・・、10z〜19zを備える。ニューラルネットワーク10a〜19a、10b〜19b、・・、10z〜19zは、ブロックアドレスを分割したビット範囲ごとかつクエリおよびデータベース名11ごとに設けることができる。この時、異なるクエリおよびデータベース名11を担当するニューラルネットワーク10a〜19a、10b〜19b、・・、10z〜19zをX方向に配列し、異なるビット範囲を担当するニューラルネットワーク10a〜19a、10b〜19b、・・、10z〜19zをY方向に配列することができる。
以下、ニューラルネットワーク10s〜19sによる予測に基づくプリフェッチ方法を用いて、ストレージ装置2からデータ解析サーバ1に読み出された大規模データの解析を行う場合の動作について説明する。
DBクライアント112がクエリを受け付けると、データベース管理システム113にクエリを伝達する。データベース管理システム113は、クエリを実行し、ファイルシステム114上のファイルに対してクエリの記述に対応したデータの読み出しを行う。この時、統計解析ソフトウェア111が動作し、そのクエリを実行して取得したデータの統計解析を行う。
ストレージ装置2に対しては、例えば、512バイトのブロック単位でデータの読み出しまたは書き込みが行われる。この時、ファイルシステム114は、ブロックI/Oレイヤ115に対して、データの格納位置を示すブロックアドレスとブロック数を指定して読み出し要求を行う。ブロックI/Oレイヤ115は、ファイルシステム114からの要求をキューイングして連続したブロックに対する要求はマージして、ストレージ装置2に対応するデバイスドライバ116に読み出し要求を行う。デバイスドライバ116は、ストレージ装置2に対応するインタフェースを介してデータの読み出しを行う。
また、DBクライアント112がクエリを受け付けると、データベース管理システム113にクエリを伝達するとともに、ニューラルネットワーク管理システム3に対して、受け付けたクエリとデータベース名11を送信する。
ニューラルネットワーク管理システム3は、複数のクエリ及びデータベース名11に対応するニューラルネットワーク10a〜19a、10b〜19b、・・、10z〜19zを管理している。そして、ニューラルネットワーク選択部131は、受け付けたクエリとデータベース名11に対応するニューラルネットワーク10s〜19sを選択し、そのニューラルネットワーク10s〜19sを定義するパラメータ群をストレージ装置2に送信する。このパラメータ群は、ニューラルネットワーク10s〜19sの重みとバイアスを含むことができる。この選択されたニューラルネットワーク10s〜19sのそれぞれは、ブロックアドレスを構成するビットを分割したビット範囲を担当してブロックアドレスの一部について予測を行う。例えば、30ビットからなるブロックアドレス[29:0]を、[29:24]、[25:20]、[21:16]、[17:12]、[13:8]、[9:4]、[5:0]と重複するビットを含む6ビットずつの7個のビット範囲に分割し、ニューラルネットワーク10s〜19sのうちの異なるニューラルネットワークが、それぞれのビット範囲を担当する。
ブロックアドレスをビット範囲ごとに予測するために、データ解析サーバ1は、ブロックI/Oレイヤ115の動作をモニタすることでI/Oトレースデータ12を取得し、ストレージ装置2およびニューラルネットワーク管理システム3に送信する。I/Oトレースデータ12は、読み出しおよび書き込み要求が行われた時刻、ブロックアドレス、ブロック数などの情報を含むことができる。I/Oトレースデータ12は、ニューラルネットワーク10a〜19a、10b〜19b、・・、10z〜19zの学習に用いるために、I/Oトレースデータ用ストレージ133に格納される。
また、データ解析サーバ1は、受け付けたクエリとデータベース名11をニューラルネットワーク管理システム3に送信する。そして、機械学習用計算機132は、クエリとデータベース名に対応して10a〜19a、10b〜19b、・・、10z〜19zから選択したニューラルネットワークに対し、I/Oトレースデータ12を用いて学習させる。
この学習により、クエリおよびデータベース名11に対応して選択されるニューラルネットワーク10s〜19sは、将来行われる読み出しまたは書き込みのブロックアドレスをビット範囲ごとに予測することができる。
各ニューラルネットワーク10s〜19sで予測されたブロックアドレスの予測値はビット範囲ごとに予測精度判定部122および予測値判定部123に出力される。そして、予測精度判定部122は、ブロックアドレスの予測値を、その予測後の読み出しまたは書き込みに用いられるブロックアドレスとビット範囲ごとに比較することにより、ブロックアドレスの予測値の予測精度を判定する。
そして、予測精度判定部122は、予測精度が低いビット範囲のアドレスに基づいて、プリフェッチの対象領域のサイズを決定する。また、予測値判定部123は、予測精度が高いビット範囲のアドレスに基づいて、プリフェッチの対象領域のアドレスを決定する。そして、プリフェッチ発行部124は、予測値判定部123で決定されたアドレスで指定されるデータを、予測精度判定部122で決定されたサイズ分だけNANDフラッシュメモリ126からストレージクラスメモリ125にキャッシュする。
ここで、ブロックアドレスを分割したビット範囲ごとの予測精度に基づいてプリフェッチの対象領域を決定することにより、分割前のブロックアドレスよりも小さなアドレス単位で将来アクセスされるデータを予測することができる。このため、将来アクセスされるデータを分割前のブロックアドレス単位で予測させる場合に比べて、ニューラルネットワークの構造を簡素化することができ、計算機資源を節約することができる。また、将来アクセスされるデータを分割前のブロックアドレス単位で予測させる場合に比べて、学習データ量を減少させることが可能となり、学習にかかる時間を短縮することができる。
また、ブロックアドレスをビット範囲ごとに分割した場合、上位ビット側のビット範囲は、下位ビット側のビット範囲に比べてランダムアクセス性が減少し、上位ビット側のビット範囲のアドレスのうちの一部のアドレスにアクセスが集中する傾向がある。このため、上位ビット側のビット範囲のアドレスは、下位ビット側のビット範囲のアドレスよりも予測精度を高めることができる。この時、上位ビット側のビット範囲のアドレスに基づいてプリフェッチの対象領域のアドレスを決定し、下位ビット側のビット範囲のアドレスに基づいてプリフェッチの対象領域のサイズを決定することにより、プリフェッチ精度を確保可能なデータを確実にプリフェッチしつつ、プリフェッチ精度を確保できないデータのプリフェッチ漏れを低減させることができる。この結果、データ解析サーバ1からストレージ装置2にランダムアクセスされる場合においても、ランダムアクセスされる可能性の高いデータを漏れなくプリフェッチすることができ、データ解析サーバ1からストレージ装置2へのアクセスタイムを減少させることができる。
このプリフェッチ方法は、NANDフラッシュメモリ126にランダムアクセスされる場合、NANDフラッシュメモリ126のメモリ領域の中にアクセスが集中する範囲がある場合に特に有効である。この時、上述したプリフェッチ方法を用いることにより、アクセスが集中する範囲のアドレスとサイズを決定するこができ、NANDフラッシュメモリ126のメモリ領域の中からアクセスが集中する範囲のデータをプリフェッチすることができる。
以下、図1のデータ処理装置のプリフェッチ方法について詳細に説明する。
図2は、ブロックアドレスを分割したビット範囲ごとのアドレス確率分布の生成方法を示すブロック図である。
図2において、データ解析サーバ1は、モニタプログラム117を介してブロックI/Oレイヤ115の動作をモニタすることでI/Oトレースデータ12を取得する。I/Oトレースデータ12は、{時刻、読み出し/書き込み種別、ブロックアドレス、ブロック数}の4次元ベクトルを、時系列データとして一定数Lだけ記録した4×Lの2次元データ120に加工され、ニューラルネットワーク10s〜19sに入力される。
図2は、ブロックアドレスを分割したビット範囲ごとのアドレス確率分布の生成方法を示すブロック図である。
図2において、データ解析サーバ1は、モニタプログラム117を介してブロックI/Oレイヤ115の動作をモニタすることでI/Oトレースデータ12を取得する。I/Oトレースデータ12は、{時刻、読み出し/書き込み種別、ブロックアドレス、ブロック数}の4次元ベクトルを、時系列データとして一定数Lだけ記録した4×Lの2次元データ120に加工され、ニューラルネットワーク10s〜19sに入力される。
それぞれのニューラルネットワーク10s〜19sにおいて、予測を担当するブロックアドレスのビット範囲のビット数をE(Eは2以上の整数)とすると、そのビット範囲には、2のE乗通りのブロックアドレスが含まれるので、2のE乗通りの予測値があり得る。ここ言う予測値はビット範囲ごとの予測アドレスである。例えば、ニューラルネットワーク12sが第13ビットから第8ビットまでの6ビット分のビット範囲を担当する場合、そのビット範囲には、2の6乗通りのブロックアドレス[13:8]が含まれるので、2の6乗通りの予測値があり得る。この時、ニューラルネットワーク12sは、ブロックアドレス[13:8]のそれぞれの予測値が出現する確率分布22sを出力する。なお、ブロックアドレス[13:8]のそれぞれの予測値の予測精度は、ブロックアドレス[13:8]のそれぞれの予測値が出現する確率Kで表すことができる。
ここで、各ビット範囲のブロックアドレスの確率分布は、下位ビットから上位ビットに向かって規則性が増加する傾向がある。この場合、下位ビット側のビット範囲から上位ビット側のビット範囲に向かって確率分布のピーク値が大きくなる。この時、確率分布のピーク値に対応するブロックアドレスにはアクセスが集中すると判断することができる。
例えば、ニューラルネットワーク10sは、ブロックアドレス[5:0]のそれぞれの予測値が出現する確率分布20sを出力し、ニューラルネットワーク11sは、ブロックアドレス[9:4]のそれぞれの予測値が出現する確率分布21sを出力し、ニューラルネットワーク12sは、ブロックアドレス[13:8]のそれぞれの予測値が出現する確率分布22sを出力し、ニューラルネットワーク19sは、ブロックアドレス[29:24]のそれぞれの予測値が出現する確率分布29sを出力するものとする。確率分布20s、21s、22s、29sのピーク値をそれぞれK0、K1、K2、K9とすると、K0<K1<K2<K9となる傾向がある。なお、図2では、確率分布21s、22s、29sのピークがそれぞれ1つある例を示したが、各確率分布においてピークが複数あってもよい。
この時、例えば、上位ビット側のブロックアドレス[13:8]〜ブロックアドレス[29:24]からそれぞれ選択したピーク値K2〜K9に対応するアドレスをプリフェッチのアドレスの決定に用いることができる。また、下位ビット側のブロックアドレス[5:0]〜ブロックアドレス[9:4]をプリフェッチのサイズの決定に用いることができる。
図3は、ブロックアドレスを分割したビット範囲に基づいてプリフェッチの対象領域のサイズを決定する手順を示す図である。
図3において、ニューラルネットワーク10s〜19sによる予測結果として出力された確率分布20s〜29sのそれぞれについて、ブロックアドレス[b:a]の予測値を算出する(31)。ステップ31で算出する予測値は、確率分布20s〜29sの確率が最大となる分割されたブロックアドレス[b:a]の値とすることができる。なお、aは、ブロックアドレスを分割した各ビット範囲の最下位のビット位置を示す。bは、ブロックアドレスを分割した各ビット範囲の最上位のビット位置を示す。
図3において、ニューラルネットワーク10s〜19sによる予測結果として出力された確率分布20s〜29sのそれぞれについて、ブロックアドレス[b:a]の予測値を算出する(31)。ステップ31で算出する予測値は、確率分布20s〜29sの確率が最大となる分割されたブロックアドレス[b:a]の値とすることができる。なお、aは、ブロックアドレスを分割した各ビット範囲の最下位のビット位置を示す。bは、ブロックアドレスを分割した各ビット範囲の最上位のビット位置を示す。
また、予測精度判定部122は、予測に使用したI/Oトレースデータ12の記録直後に記録された実際の読み出しまたは書き込みのブロックアドレス[b:a]の値300を取得する。そして、予測精度判定部122は、ニューラルネットワーク10s〜19sから取得した確率分布に基づく予測値と、実際の読み出しまたは書き込みのブロックアドレス[b:a]の値300との一致判定を行う(32)。
ブロックアドレス[b:a]が完全にランダムであり、そのブロックアドレス[b:a]の予測値の予測が不可能な場合、ステップ32で一致する確率(以下、一致率と言う)は予測対象のブロックアドレスビット数=b−a+1に対して、1/(2の(b−a+1)乗)となる。そこで、ステップ32の一致判定の結果を記録しておき、過去P回(Pは2以上の整数)の一致判定における一致率と、予測が不可能な一致率の定数倍、すなわち、c/(2の(b−a+1)乗)との大小比較を行う(33)。なお、cは定数である。そして、c/(2の(b−a+1)乗)より一致率が小さい場合、ブロックアドレス[b:a]はランダムアクセスに近く、予測値の予測が困難と判定する。
さらに、予測精度判定部122は、確率分布20s〜29sのそれぞれについて、確率分布の確率の最大値とc/(2の(b−a+1)乗)との大小比較を行う(34)。確率の最大値とc/(2の(b−a+1)乗)との大小比較を行うことで、確率分布20s〜29sのそれぞれの偏りを判別することができる。確率の最大値がc/(2の(b−a+1)乗)より小さい場合、確率分布に偏りがないと判断し、ブロックアドレス[b:a]はランダムアクセスに近く、予測値の予測が困難と判定する。
次に、予測精度判定部122は、確率分布20s〜29sのそれぞれについて、ステップ33またはステップ34で予測値の予測が困難と判定された場合、ビット位置bの最大値bmaxを算出する(35)。次に、予測精度判定部122は、プリフェッチ対象領域のサイズを2のbmax乗と決定する(36)。この処理は、統計解析ソフトウェア111が発行したクエリを実行するためにデータベース管理システム113が実行するストレージに対する読み出しまたは書き込みがある領域内でランダムに行われる場合に、その領域のサイズを予測する。この時、33または34のステップで予測値の予測が困難と判定されたブロックアドレス[b:a]で指定される全てのデータをプリフェッチすることができる。このため、予測が困難と判定されたブロックアドレス[b:a]のプリフェッチ漏れを防止することができ、予測が困難と判定されたブロックアドレス[b:a]で指定されるデータへのアクセスタイムを減少させることができる。
一方、予測精度判定部122は、ステップ33で予測精度がc/(2の(b−a+1)乗)以上と判断し、かつステップ34で確率の最大値がc/(2の(b−a+1)乗)以上と判断した場合、そのブロックアドレス[b:a]は予測可能と判定する(40)。この時、予測値判定部123は、予測可能と判定されたブロックアドレス[b:a]に基づいてプリフェッチの対象領域のアドレスを決定する。これにより、予測可能と判定されたブロックアドレス[b:a]に基づいてプリフェッチの対象領域を限定することができ、キャッシュ領域のサイズを低減することができる。
図4は、ブロックアドレスを分割したビット範囲に基づいてプリフェッチの対象領域のアドレスを決定する手順を示す図である。
図4において、図3のステップ40で予測可能なブロックアドレス[b:a]が判定されると、予測可能なビット範囲が複数存在するかどうかを判定する(41)。予測可能なビット範囲が複数存在する場合、ビット範囲の重複の有無の判定する(42)。ビット範囲に重複がある場合は、重複したビットについて予測値の一致判定を行う(43)。それらの予測値が一致しない場合、複数通りの予測値の組合せが生じる。この時、予測値の確率の大小比較による予測値の順位付けを行う(44)。そして、予測値の組合せの順位が高いものから、図3のステップS36で決定したサイズで、ストレージクラスメモリ125のキャッシュ領域を割当てる(45)。
図4において、図3のステップ40で予測可能なブロックアドレス[b:a]が判定されると、予測可能なビット範囲が複数存在するかどうかを判定する(41)。予測可能なビット範囲が複数存在する場合、ビット範囲の重複の有無の判定する(42)。ビット範囲に重複がある場合は、重複したビットについて予測値の一致判定を行う(43)。それらの予測値が一致しない場合、複数通りの予測値の組合せが生じる。この時、予測値の確率の大小比較による予測値の順位付けを行う(44)。そして、予測値の組合せの順位が高いものから、図3のステップS36で決定したサイズで、ストレージクラスメモリ125のキャッシュ領域を割当てる(45)。
ステップ41で予測可能なビット範囲が1つしか存在しないと判断した場合、予測値に対応する確率の大小比較による予測値の順位付けを行う(46)。また、ステップ42で予測可能な複数のビット範囲に重複するビットがないと判断した場合、それぞれのビット範囲の確率値の積を、連結した予測値の確率として順位付けを行う。
ストレージクラスメモリ125にキャッシュ領域を割当てた後、ストレージクラスメモリ125のキャッシュ領域に空きがあるかどうかを判断する(47)。ストレージクラスメモリ125のキャッシュ領域に空きがある場合、予測値の確率の値が第2位のビット範囲とその予測値の判定を行い、重複ビットについて予測値の組合せに対する順位付けと、ストレージクラスメモリ125のキャッシュ領域の割当てを行う。ここで、複数のビット範囲について第2位の候補がある場合には、それぞれの第1位の確率値との比を計算して、第1位に最も近いものを第2位とする。
以下、ストレージクラスメモリ125のキャッシュ領域に空きがなくなるまで、第3位以下のビット範囲とその予測値について、重複ビットの予測値の組合せの順位付けとキャッシュ領域の割当てを行う。ストレージ装置2は、上記の方法で予測したプリフェッチ対象領域のデータをNANDフラッシュ126から読み出し、ストレージクラスメモリ125のキャッシュ領域に格納する。
図5は、図1のストレージクラスメモリのキャッシュメモリ管理領域の管理方法を示すブロック図である。
図5において、ストレージクラスメモリ125は、キャッシュメモリとして使用されるだけでなく、例えばストレージコントローラ121が管理するメタデータの格納領域501としても使用される。また、ストレージクラスメモリ125は、キャッシュメモリとして使用する領域についても、シーケンシャルアクセス向けに連続するブロックアドレス領域を先読みするキャッシュ領域502と、上述した方法でプリフェッチを行うランダムアクセス向けのキャッシュ領域503とを備える。また、ストレージクラスメモリ125は予備領域504を備える。
図5において、ストレージクラスメモリ125は、キャッシュメモリとして使用されるだけでなく、例えばストレージコントローラ121が管理するメタデータの格納領域501としても使用される。また、ストレージクラスメモリ125は、キャッシュメモリとして使用する領域についても、シーケンシャルアクセス向けに連続するブロックアドレス領域を先読みするキャッシュ領域502と、上述した方法でプリフェッチを行うランダムアクセス向けのキャッシュ領域503とを備える。また、ストレージクラスメモリ125は予備領域504を備える。
ストレージコントローラ121は、メタデータ使用量がストレージクラスメモリ125にあらかじめ割り当てた容量に近づいたら、予備領域504から追加割当てを行う。さらに、ストレージコントローラ121は、シーケンシャルにアクセスしたブロック数とランダムアクセスしたブロック数をカウントし、これらのカウント値の比率50に合わせて一定期間ごとにキャッシュ領域502、503の容量比を変更する。
図3の方法で決定したプリフェッチ対象領域サイズ36を単位にランダムアクセス向けキャッシュ領域503を分割し、割当領域R1〜R8を生成する。そして、図4の方法で順位付けを行ったプリフェッチ対象領域のブロックアドレス451〜458に基づきNANDフラッシュ126からシーケンシャルにデータD1〜D8を読み出す。そして、データD1〜D8をキャッシュ領域503の割当領域R1〜R8に格納することでプリフェッチを実行する。ニューラルネットワーク10s〜19sへの入力となるI/Oトレースデータ12の変化に対応して、図4の方法で決定した順位に変動があった場合には、キャッシュ領域503の分割数より大きい順位に落ちたプリフェッチ対象領域と、分割数以下の順位に入ったプリフェッチ対象領域とのスワップを行う。
キャッシュ領域503にキャッシュされたデータD1〜D8は、ブロック単位に状態を管理される。データ解析サーバ1から読み出し要求されたブロックのデータは、キャッシュ領域503からデータ解析サーバ1に転送される。データ解析サーバ1から書き込み要求されたブロックのデータは、キャッシュ領域503のデータ書き換えが行われ、順位付けの変動によるスワップアウトを行う時に、書き換えのあったブロックのNANDフラッシュ126への書き込みを行う。
プリフェッチ対象領域の予測と並行して、図1の機械学習用計算機132は、I/Oトレースデータ12を使用し、クエリおよびデータベース名11に基づき選択されたニューラルネットワーク10s〜19sを学習させる。この時、機械学習用計算機132は、I/Oトレースデータ12から、一定数の読み出しおよび書き込みを含む部分を切り出し、これらに引き続いて行われる読み出しおよび書き込みブロックアドレスの分割ビット範囲について、予測値と実際のアドレス値の差が小さくなるように、ニューラルネットワーク10s〜19sそれぞれの変数を調整する。
図6は、ブロックアドレスを分割したビット範囲ごとのアドレス確率分布を予測するニューラルネットワークの学習方法を示すブロック図である。
図6において、I/Oトレースデータ12は、{時刻、ブロックアドレス、ブロック数、読み出し/書き込み種別}の4次元ベクトルを時系列データとして一定数:L+Mだけ記録した、4×Lの2次元データ200と、4×Mの2次元データ600に加工される。4×Lの2次元データ200は、図2の場合と同じくニューラルネットワーク10s〜19sに入力されて、ブロックアドレスビットを分割したビット範囲のそれぞれの予測値が出現する確率分布20s〜29sを出力する。
図6において、I/Oトレースデータ12は、{時刻、ブロックアドレス、ブロック数、読み出し/書き込み種別}の4次元ベクトルを時系列データとして一定数:L+Mだけ記録した、4×Lの2次元データ200と、4×Mの2次元データ600に加工される。4×Lの2次元データ200は、図2の場合と同じくニューラルネットワーク10s〜19sに入力されて、ブロックアドレスビットを分割したビット範囲のそれぞれの予測値が出現する確率分布20s〜29sを出力する。
一方、4×Mの2次元データ600について、ブロックアドレスを分割したビット範囲のそれぞれのヒストグラムを算出する(601)。このヒストグラムは、ビット範囲のそれぞれのアドレスの出現頻度を示すことができる。このヒストグラムは、過去のアクセスパターンから予測した確率分布20s〜29sに対する、実際に起こったアクセスパターンとすることができる。そして、実際に起こったアクセスパターンに対する確率分布20s〜29sの予測誤差を計算し、損失関数60s〜69sとする。損失関数60s〜69sの値が小さくなるようにニューラルネットワーク10s〜19sの変数を調整することによって、ニューラルネットワーク10s〜19sをトレーニングする。
図7は、図1のニューラルネットワークの学習に用いることが可能なカラムストア格納形式のI/Oトレースデータの一例を示すブロック図である。
図7において、ニューラルネットワーク管理システム3は、データ解析サーバ1においてI/Oトレースデータ12を一意に識別可能なID、データ解析サーバ名、I/Oトレースデータ12を採取した時刻、クエリおよびデータベース名11をメタデータ70としてI/Oトレースデータ12を関連付ける。そして、その関連付けを行ったI/Oトレースデータ12をI/Oトレースデータ用ストレージ133に蓄積する。
図7において、ニューラルネットワーク管理システム3は、データ解析サーバ1においてI/Oトレースデータ12を一意に識別可能なID、データ解析サーバ名、I/Oトレースデータ12を採取した時刻、クエリおよびデータベース名11をメタデータ70としてI/Oトレースデータ12を関連付ける。そして、その関連付けを行ったI/Oトレースデータ12をI/Oトレースデータ用ストレージ133に蓄積する。
本実施形態におけるI/Oトレースデータ12は、{時刻、読み出し/書き込み種別、ブロックアドレス、ブロック数}の4次元ベクトルである多数のレコードを、時系列データとして格納したものである。この時、同じ属性のI/Oトレースデータ12を連続領域に格納し、属性名、格納位置、レコード数および圧縮方式等の情報をメタデータ70の一部として別に管理するカラムストア格納形式をとることができる。例えば、属性71のI/Oトレースデータ12を格納位置A71で示される連続領域に格納し、属性72のI/Oトレースデータ12を格納位置A72で示される連続領域に格納し、属性79のI/Oトレースデータ12を格納位置A79で示される連続領域に格納する。これにより、一般に多次元テンソルとして扱われる機械学習に使用されるI/Oトレースデータ12の読み出しを効率良く行うことができる。
例えば、読み出し/書き込み種別のデータは2種類の値しかとらず連続して同じ値をとる場合がある。このため、カラムストア格納形式をとることによって、連続して出現するデータ数を記録することで圧縮を行うrun−length方式の圧縮率が良くなり、一定量の読み出しで取得できるレコード数を増加することが可能となる。また、I/Oトレースデータ12として上記4種のデータの他に、入出力を行ったプロセス名等のデータも記録できる一方で、機械学習で使用するI/Oトレースデータ12は、一部の属性のみを選択して行うことが可能である。その場合には、学習に使用しない属性のデータがレコードに含まれることになるため、レコードを連続領域に格納する場合より、属性毎に連続領域に格納するカラムストア形式の方が読み出しの効率が良くなる。
プリフェッチ対象領域の予測とは非同期に、ニューラルネットワーク管理領域134からクエリおよびデータベース名11に基づいて選択したニューラルネットワーク10s〜19sをトレーニングする。この場合、蓄積されたI/Oトレースデータ12からN(Nは正の整数)セットの4×(L+M)の2次元の時系列データをランダムに選択して、4×(L+M)×Nの3次元データを使用してトレーニングする。
図8は、クエリとデータベース名に基づく選択において用いられる、ニューラルネットワークの属性を示すデータ構造を示す図である。図8において、図1のそれぞれのニューラルネットワーク10a〜19a、10b〜19b、・・、10z〜19zには固有のID80が与えられる。ニューラルネットワーク管理システム3は、ニューラルネットワーク10a〜19a、10b〜19b、・・、10z〜19zの属性情報として、ニューラルネットワークを定義するデータ81、すなわち、種別、構造と変数値、予測を担当するブロックアドレスのビット範囲の他に、学習データ量および予測精度82を管理する。
さらに、ニューラルネットワーク10a〜19a、10b〜19b、・・、10z〜19zのそれぞれがデータベース名83およびクエリ84に関連付けられている。ニューラルネットワーク管理システム3は、クエリ84の実行にあたってアクセスされるテーブル85のカラム名86、コマンド87、条件式88の情報を管理する。
クエリ84に関する情報には、クエリ類似度を算出するための一致スコア値を付加することができる。例えば、データベース名83が不一致であればクエリ類似度=0、データベース名83が一致すれば、クエリ類似度=(カラム名が一致するスコア値の総和+コマンドが一致する場合のスコア値+条件式が一致する場合のスコア値)と計算することができる。
クエリ類似度は、クエリ84に類似する類似クエリの検出に用いることができる。DBクライアント112が受け付けたクエリに関連付けられたニューラルネットワーク10a〜19a、10b〜19b、・・、10z〜19zがない場合、そのクエリに類似する類似クエリに関連付けられたニューラルネットワーク10a〜19a、10b〜19b、・・、10z〜19zを選択することができる。
図9は、図1のニューラルネットワークを管理するNN管理画面の一例を示す図である。
図9において、NN管理画面89には、図8のID80、データベース名83、クエリ84、学習データ量および予測精度82が表示される。また、NN管理画面89には、類似クエリ、クエリ類似度、成績および操作が表示される。
図9において、NN管理画面89には、図8のID80、データベース名83、クエリ84、学習データ量および予測精度82が表示される。また、NN管理画面89には、類似クエリ、クエリ類似度、成績および操作が表示される。
成績は、ニューラルネットワークをトレーニングすることでどれだけ予測精度が上がったかを示すことができる。操作は、予測に基づくプリフェッチ機能をオフしてトレーニングのみを行う操作や、トレーニングの結果、予測精度に向上が見られないニューラルネットワークの使用を禁止する操作、クエリ類似度の算出に用いるスコア値を変更する操作などを含むことができる。
ストレージ装置2の管理者は、NN管理画面89を通じて、予測精度およびトレーニング履歴情報を参考に各種操作を行うことができる。トレーニング履歴情報は、学習データ量、成績および蓄積されたI/Oトレースデータ12のうちどのデータを学習に使用したかの情報などを含むことができる。トレーニング履歴情報は、図7のカラムストア格納形式のメタデータ70の一部として保持してもよい。
(第2実施形態)
図10は、第2実施形態に係るデータ処理装置の構成を示すブロック図である。
図10のデータ処理装置は、図1のストレージ装置2およびニューラルネットワーク管理システム3の代わりにストレージ装置2Aを備える。ストレージ装置2Aは、図1のストレージ装置2の構成に機械学習用計算機132AおよびI/Oトレースデータ用ストレージ9が追加されている。I/Oトレースデータ用ストレージ9は、I/Oトレースデータ12を図7のカラムストア形式で格納する。ストレージ装置2Aのストレージクラスメモリ125Aは、図5の格納領域501、キャッシュ領域502、503および予備領域504に加えニューラルネットワーク管理領域505を備える。ニューラルネットワーク管理領域505は、図1のニューラルネットワーク管理領域134と同様に構成することができる。
図10は、第2実施形態に係るデータ処理装置の構成を示すブロック図である。
図10のデータ処理装置は、図1のストレージ装置2およびニューラルネットワーク管理システム3の代わりにストレージ装置2Aを備える。ストレージ装置2Aは、図1のストレージ装置2の構成に機械学習用計算機132AおよびI/Oトレースデータ用ストレージ9が追加されている。I/Oトレースデータ用ストレージ9は、I/Oトレースデータ12を図7のカラムストア形式で格納する。ストレージ装置2Aのストレージクラスメモリ125Aは、図5の格納領域501、キャッシュ領域502、503および予備領域504に加えニューラルネットワーク管理領域505を備える。ニューラルネットワーク管理領域505は、図1のニューラルネットワーク管理領域134と同様に構成することができる。
学習データであるI/Oトレースデータ12は、ストレージコントローラ121によって採取され、I/Oトレースデータ用ストレージ9にカラムストア形式で格納される。ニューラルネットワーク管理領域505で管理されるニューラルネットワークを定義する変数や属性等のデータは、メタデータ501などとともに、ストレージクラスメモリ125Aに格納される。
機械学習用計算機132Aは、未学習のI/Oトレースデータ12を使用したトレーニングを管理下のニューラルネットワークに実行させ、ューラルネットワーク管理領域505に格納されるニューラルネットワークを定義する変数値を更新する。
ここで、ニューラルネットワーク管理領域505をストレージクラスメモリ125Aに設けることにより、図1のストレージ装置2とは別にニューラルネットワーク管理システム3を設ける必要がなくなり、システム構成を簡素化することができる。
(第3実施形態)
図11は、第3実施形態に係るデータ処理装置の構成を示すブロック図である。
図11のデータ処理装置は、データ解析サーバ1B、ストレージ装置2Bおよびニューラルネットワーク管理システム3Bを備える。
(第3実施形態)
図11は、第3実施形態に係るデータ処理装置の構成を示すブロック図である。
図11のデータ処理装置は、データ解析サーバ1B、ストレージ装置2Bおよびニューラルネットワーク管理システム3Bを備える。
データ解析サーバ1Bは、統計解析ソフトウェア111、DBクライアント112、データベース管理システム113、ファイルシステム114、ブロックI/Oレイヤ115、デバイスドライバ116B、ストレージクラスメモリ117および機械学習用プロセッサ118を備える。
デバイスドライバ116Bは、図1の予測精度判定部122、予測値判定部123、プリフェッチ発行部124および予測モデル127を備える。ストレージクラスメモリ117は、図5のキャッシュ領域503を備える。ストレージクラスメモリ117は、キャッシュ領域503の他、主記憶領域および予備領域を備えてもよい。機械学習用プロセッサ118は、クエリの実行に伴うI/Oトレースデータ12をビット範囲ごとにニューラルネットワーク10a〜19a、10b〜19b、・・、10z〜19zに学習させる。
ストレージ装置2Bは、ストレージコントローラ121、ストレージクラスメモリ125BおよびNANDフラッシュメモリ126を備える。ストレージクラスメモリ125Bは、図5の格納領域501、キャッシュ領域502および予備領域504を備える。
ニューラルネットワーク管理システム3Bは、I/Oトレースデータ用ストレージ133およびニューラルネットワーク管理領域134を備える。
デバイスドライバ116は、ニューラルネットワークによる予測に基づきストレージ装置2Bからプリフェッチを行う。ブロックI/Oレイヤ115の動作をモニタして採取された学習データであるI/Oトレースデータ12は、ニューラルネットワーク管理システム3BのI/Oトレースデータ用ストレージ133に格納される。I/Oトレースデータ12を用いたニューラルネットワークのトレーニングは、機械学習用プロセッサ118の空き時間に行われる。
ここで、プリフェッチを行うランダムアクセス向けのキャッシュ領域503をデータ解析サーバ1Bに設けることにより、プリフェッチされたデータを統計解析ソフトウェア111が利用する際に、ストレージ装置2Bにアクセスする必要がなくなり、プリフェッチされたデータへのアクセスを高速化することができる。
(第4実施形態)
データベース管理システムによっては、ランダムアクセスに対するシーケンシャルアクセスの比率が大きいものがある。シーケンシャルアクセスの比率が一定値より高いデータベース管理システムに対して、I/Oトレースデータ12を入力とするニューラルネットワークを使用して連続アドレスでアクセスされるブロック数を予測して、シーケンシャルアクセス向けのキャッシュ領域502に対するプリフェッチを行う。これにより、連続アドレスでアクセスされるデータ全体をプリフェッチすることができ、連続アドレスでアクセスされるデータへのアクセスタイムを減少させることができる。
データベース管理システムによっては、ランダムアクセスに対するシーケンシャルアクセスの比率が大きいものがある。シーケンシャルアクセスの比率が一定値より高いデータベース管理システムに対して、I/Oトレースデータ12を入力とするニューラルネットワークを使用して連続アドレスでアクセスされるブロック数を予測して、シーケンシャルアクセス向けのキャッシュ領域502に対するプリフェッチを行う。これにより、連続アドレスでアクセスされるデータ全体をプリフェッチすることができ、連続アドレスでアクセスされるデータへのアクセスタイムを減少させることができる。
(第5実施形態)
過去のI/Oトレースからランダムな読み出しブロック数とランダムな書き込みブロック数の比率を算出する。そして、ランダムな読み出しブロック数とランダムな書き込みブロック数の比率に基づき、ランダムアクセス向けのキャッシュ領域503を、読み出しアクセス向けの領域と書き込みアクセス向けの領域に分割する。ランダムな読み出しブロックアドレスのパターンを認識するニューラルネットワークと、ランダムな書き込みブロックアドレスのパターンを認識するニューラルネットワークを別個にトレーニングして、それぞれのブロックアドレス予測に基づき、それぞれのキャッシュ領域に対するプリフェッチを行う。これにより、読み出しおよび書き込みのデータ量に応じてキャッシュ領域を割り当てることができ、キャッシュ領域を有効活用することができる。
過去のI/Oトレースからランダムな読み出しブロック数とランダムな書き込みブロック数の比率を算出する。そして、ランダムな読み出しブロック数とランダムな書き込みブロック数の比率に基づき、ランダムアクセス向けのキャッシュ領域503を、読み出しアクセス向けの領域と書き込みアクセス向けの領域に分割する。ランダムな読み出しブロックアドレスのパターンを認識するニューラルネットワークと、ランダムな書き込みブロックアドレスのパターンを認識するニューラルネットワークを別個にトレーニングして、それぞれのブロックアドレス予測に基づき、それぞれのキャッシュ領域に対するプリフェッチを行う。これにより、読み出しおよび書き込みのデータ量に応じてキャッシュ領域を割り当てることができ、キャッシュ領域を有効活用することができる。
(第6実施形態)
図12は、図1のデータ処理装置のハードウェア構成例を示すブロック図である。
図12において、データ処理装置100は、プロセッサ101、通信制御デバイス102、通信インタフェース103、主記憶デバイス104および外部記憶デバイス105を備える。プロセッサ101、通信制御デバイス102、通信インタフェース103、主記憶デバイス104および外部記憶デバイス105は、内部バス106を介して相互に接続されている。主記憶デバイス104および外部記憶デバイス105は、プロセッサ101からアクセス可能である。
図12は、図1のデータ処理装置のハードウェア構成例を示すブロック図である。
図12において、データ処理装置100は、プロセッサ101、通信制御デバイス102、通信インタフェース103、主記憶デバイス104および外部記憶デバイス105を備える。プロセッサ101、通信制御デバイス102、通信インタフェース103、主記憶デバイス104および外部記憶デバイス105は、内部バス106を介して相互に接続されている。主記憶デバイス104および外部記憶デバイス105は、プロセッサ101からアクセス可能である。
プロセッサ101は、データ処理装置100全体の動作制御を司るハードウェアである。主記憶デバイス104は、例えば、SRAMまたはDRAMなどの半導体メモリから構成することができる。主記憶デバイス104には、プロセッサ101が実行中のプログラムを格納したり、プロセッサ101がプログラムを実行するためのワークエリアを設けたりすることができる。
外部記憶デバイス105は、大容量の記憶容量を有する記憶デバイスである。外部記憶デバイス105は、ストレージクラスメモリおよびNANDフラッシュメモリを備える。外部記憶デバイス105は、各種プログラムの実行ファイルやプログラムの実行に用いられるデータを保持することができる。外部記憶デバイス105には、プリフェッチ処理プログラム105Aを格納することができる。プリフェッチ処理プログラム105Aは、データ処理装置100にインストール可能なソフトウェアであってもよいし、データ処理装置100にファームウェアとして組み込まれていてもよい。
通信制御デバイス102は、外部との通信を制御する機能を有するハードウェアである。通信制御デバイス102は、通信インタフェース103を介してネットワーク109に接続される。ネットワーク109は、インターネットなどのWAN(Wide Area Network)であってもよいし、WiFiなどのLAN(Local Area Network)であってもよいし、WANとLANが混在していてもよい。
プロセッサ101がプリフェッチ処理プログラム105Aを主記憶デバイス104に読み出し、プリフェッチ処理プログラム105Aを実行することにより、ビット位置に基づいてブロックアドレスを複数のビット範囲に分割し、プリフェッチに用いられるアドレスの予測精度をビット範囲ごとに判定し、ビット範囲ごとに判定した予測精度に基づいてプリフェッチの対象領域を決定することができる。
この時、プリフェッチ処理プログラム105Aは、図1の予測精度判定部122、予測値判定部123、プリフェッチ発行部124および予測モデル127の機能を実現することができる。なお、プリフェッチ処理プログラム105Aの実行は、複数のプロセッサやコンピュータに分担させてもよい。または、プロセッサ101は、ネットワーク109を介してクラウドコンピュータなどにプリフェッチ処理プログラム105Aの全部または一部の実行を指示し、その実行結果を受け取るようにしてもよい。
以上、本発明の実施形態について説明したが、本発明は上述した実施形態に限定されるものではなく、添付した特許請求の範囲の趣旨内における様々な変形例および同等の構成が含まれる。例えば、上述した実施形態は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに本発明は限定されない。
例えば、上述した実施形態では、図2の確率分布20s〜29sを予測するために、I/Oトレースデータを学習させたニューラルネットワーク10s〜19sを用いる方法について説明したが、必ずしもニューラルネットワーク10s〜19sを用いる必要はない。例えば、I/Oトレースデータに基づいて図2の確率分布20s〜29sを計算するアルゴリズムに基づいて図2の確率分布20s〜29sを予測するようにしてもよい。また、上述した実施形態では、ストレージクラスメモリ125をキャッシュとして使用した場合について説明したが、DRAMやSRAMをキャッシュとして使用した場合に適用してもよい。
1 データ解析サーバ、2 ストレージ装置、3 ニューラルネットワーク管理システム、10s〜19s ニューラルネットワーク、121 ストレージコントローラ、122 予測精度判定部、123 予測値判定部、124 プリフェッチ発行部、125 ストレージクラスメモリ、126 NANDフラッシュメモリ
Claims (10)
- ビット位置に基づいてブロックアドレスを複数のビット範囲に分割し、
プリフェッチに用いられるアドレスの予測精度を前記ビット範囲ごとに判定し、
前記ビット範囲ごとに判定した前記予測精度に基づいて前記プリフェッチの対象領域を決定するデータ処理装置。 - 前記予測精度が所定値より小さい前記ビット範囲のアドレスに基づいて、前記プリフェッチの対象領域のサイズを決定し、
前記予測精度が所定値以上の前記ビット範囲のアドレスに基づいて、前記プリフェッチの対象領域のアドレスを決定し、
前記プリフェッチの対象領域のサイズの決定に用いられるビット範囲は、前記プリフェッチの対象領域のアドレスの決定に用いられるビット範囲よりも下位ビット側にある請求項1に記載のデータ処理装置。 - 過去の読み出しまたは書き込みに用いられたブロックアドレスが記録されたI/Oトレースデータを機械学習させたそれぞれ異なるビット範囲を担当する複数の予測モデルを使用し、前記ビット範囲ごとに前記プリフェッチのアドレスを予測する請求項1に記載のデータ処理装置。
- クエリおよびデータベース名に関連付けられた複数のニューラルネットワークを管理し、
前記クエリに基づいてニューラルネットワークを選択し、
前記選択されたニューラルネットワークは、前記クエリの実行に伴うI/Oトレースデータを学習し、前記プリフェッチのアドレスを予測する請求項3に記載のデータ処理装置。 - シーケンシャルアクセスとランダムアクセスとの比率に基づき、それぞれに対するキャッシュ領域を割り当て、
前記ランダムアクセス用のキャッシュに対して、前記機械学習に基づいて前記ビット範囲ごとに前記プリフェッチのアドレスを予測する請求項3に記載のデータ処理装置。 - ランダムな読み出しとランダムな書き込みとの比率に基づき、それぞれに対するキャッシュ領域を割り当て、
前記読み出しと前記書き込みとで別個に学習されたニューラルネットワークを使用し、前記ビット範囲ごとに前記プリフェッチのアドレスを予測する請求項5に記載のデータ処理装置。 - 前記ブロックアドレスのビット範囲、前記クエリおよび前記データベース名に対応するニューラルネットワークのトレーニング履歴情報および予測精度情報を管理し、
前記ニューラルネットワークの学習および前記ブロックアドレスの予測に基づく前記プリフェッチの適用を操作する請求項4に記載のデータ処理装置。 - ランダムアクセスに対するシーケンシャルアクセスの比率が大きい場合、過去の読み出しまたは書き込みに用いられたブロックアドレスが記録されたI/Oトレースデータを機械学習させた予測モデルを使用して、連続するアドレスでアクセスされるブロック数を予測し、前記連続するアドレスでアクセスされるデータをプリフェッチする請求項1に記載のデータ処理装置。
- プリフェッチ処理プログラムを実行するプロセッサを備え、
前記プロセッサは、前記プリフェッチ処理プログラムを実行することにより、
ビット位置に基づいてブロックアドレスを複数のビット範囲に分割し、
プリフェッチに用いられる前記ビット範囲のアドレスが、前記プリフェッチ後の読み出しまたは書き込みに用いられる前記ビット範囲のアドレスに一致する確率に基づいて、前記プリフェッチの対象領域を決定するプリフェッチ方法。 - 前記プロセッサは、前記プリフェッチ処理プログラムを実行することにより、
前記確率が所定値より小さい前記ビット範囲のアドレスに基づいて、前記プリフェッチの対象領域のサイズを決定し、
前記確率が所定値以上の前記ビット範囲のアドレスに基づいて、前記プリフェッチの対象領域のアドレスを決定し、
前記プリフェッチの対象領域のサイズの決定に用いられるビット範囲は、前記プリフェッチの対象領域のアドレスの決定に用いられるビット範囲よりも下位ビット側にある請求項9に記載のプリフェッチ方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2018099700A JP2019204335A (ja) | 2018-05-24 | 2018-05-24 | データ処理装置およびプリフェッチ方法 |
US16/294,092 US11055224B2 (en) | 2018-05-24 | 2019-03-06 | Data processing apparatus and prefetch method |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2018099700A JP2019204335A (ja) | 2018-05-24 | 2018-05-24 | データ処理装置およびプリフェッチ方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2019204335A true JP2019204335A (ja) | 2019-11-28 |
Family
ID=68613940
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2018099700A Pending JP2019204335A (ja) | 2018-05-24 | 2018-05-24 | データ処理装置およびプリフェッチ方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US11055224B2 (ja) |
JP (1) | JP2019204335A (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2021525404A (ja) * | 2018-11-19 | 2021-09-24 | グーグル エルエルシーGoogle LLC | マルチタスク再帰型ニューラルネットワーク |
US12033056B2 (en) | 2022-08-15 | 2024-07-09 | Google Llc | Multi-task recurrent neural networks |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11163707B2 (en) * | 2018-04-23 | 2021-11-02 | International Business Machines Corporation | Virtualization in hierarchical cortical emulation frameworks |
US11914860B2 (en) * | 2018-08-20 | 2024-02-27 | Macronix International Co., Ltd. | Data storage for artificial intelligence-based applications |
US11226741B2 (en) * | 2018-10-31 | 2022-01-18 | EMC IP Holding Company LLC | I/O behavior prediction based on long-term pattern recognition |
US20200320002A1 (en) * | 2019-04-04 | 2020-10-08 | EMC IP Holding Company LLC | Intelligently managing data facility caches |
US11562180B2 (en) * | 2019-05-03 | 2023-01-24 | Microsoft Technology Licensing, Llc | Characterizing failures of a machine learning model based on instance features |
US11151043B2 (en) | 2019-08-12 | 2021-10-19 | Micron Technology, Inc. | Demand delay and data value correlated memory pre-fetching systems and methods |
US20210173888A1 (en) * | 2019-12-08 | 2021-06-10 | Akamai Technologies Inc. | Proxy server caching of database content |
CN113435601A (zh) * | 2020-03-23 | 2021-09-24 | 华为技术有限公司 | 数据预取方法、装置以及存储设备 |
CN114968073A (zh) * | 2021-02-27 | 2022-08-30 | 华为技术有限公司 | 数据预取的方法、设备及系统 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8607005B2 (en) | 2006-02-17 | 2013-12-10 | International Business Machines Corporation | Monitoring program execution to learn data blocks accessed by software process for facilitating efficient prefetching |
US8112755B2 (en) | 2006-06-30 | 2012-02-07 | Microsoft Corporation | Reducing latencies in computing systems using probabilistic and/or decision-theoretic reasoning under scarce memory resources |
US7805580B2 (en) | 2007-01-08 | 2010-09-28 | International Business Machines Corporation | Method and system for determining optimal data layout using blind justice |
US8140746B2 (en) | 2007-12-14 | 2012-03-20 | Spansion Llc | Intelligent memory data management |
US9298633B1 (en) | 2013-09-18 | 2016-03-29 | Emc Corporation | Adaptive prefecth for predicted write requests |
US10496410B2 (en) * | 2014-12-23 | 2019-12-03 | Intel Corporation | Instruction and logic for suppression of hardware prefetchers |
US10397368B2 (en) | 2015-06-25 | 2019-08-27 | International Business Machines Corporation | Data prefetching for large data systems |
-
2018
- 2018-05-24 JP JP2018099700A patent/JP2019204335A/ja active Pending
-
2019
- 2019-03-06 US US16/294,092 patent/US11055224B2/en active Active
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2021525404A (ja) * | 2018-11-19 | 2021-09-24 | グーグル エルエルシーGoogle LLC | マルチタスク再帰型ニューラルネットワーク |
JP7057437B2 (ja) | 2018-11-19 | 2022-04-19 | グーグル エルエルシー | マルチタスク再帰型ニューラルネットワーク |
US12033056B2 (en) | 2022-08-15 | 2024-07-09 | Google Llc | Multi-task recurrent neural networks |
Also Published As
Publication number | Publication date |
---|---|
US20190361811A1 (en) | 2019-11-28 |
US11055224B2 (en) | 2021-07-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2019204335A (ja) | データ処理装置およびプリフェッチ方法 | |
US11797185B2 (en) | Solid-state drive control device and learning-based solid-state drive data access method | |
CN102841852B (zh) | 磨损均衡方法、存储装置及信息系统 | |
JP2020135499A (ja) | データ処理装置、ストレージ装置およびプリフェッチ方法 | |
CN111143243B (zh) | 一种基于nvm混合内存的缓存预取方法及系统 | |
US20130097387A1 (en) | Memory-based apparatus and method | |
Laga et al. | Lynx: A learning linux prefetching mechanism for ssd performance model | |
US11409657B2 (en) | Adaptive address tracking | |
US11422934B2 (en) | Adaptive address tracking | |
Yang et al. | Optimizing NoSQL DB on flash: a case study of RocksDB | |
Wang et al. | A novel buffer management scheme based on particle swarm optimization for SSD | |
Yang et al. | Ars: Reducing f2fs fragmentation for smartphones using decision trees | |
Carniel et al. | A generic and efficient framework for flash-aware spatial indexing | |
Fevgas et al. | LB-Grid: An SSD efficient grid file | |
JPWO2011019029A1 (ja) | データ処理装置、データ記録方法、データ記録プログラム | |
KR101456370B1 (ko) | 스토리지 관리 방법 및 장치 | |
CN112799590A (zh) | 一种针对在线主存储重删的差异化缓存方法 | |
Fisher et al. | A hybrid filesystem for hard disk drives in tandem with flash memory | |
US20170177476A1 (en) | System and method for automated data organization in a storage system | |
Ebrahimi et al. | Rc-rnn: Reconfigurable cache architecture for storage systems using recurrent neural networks | |
JP7013360B2 (ja) | 情報処理装置、情報処理方法、およびプログラム | |
US20180349036A1 (en) | Data Storage Map with Custom Map Attribute | |
Carniel et al. | Spatial index structures for modern storage devices: A survey | |
Yao et al. | Uniform scheduling of interruptible garbage collection and request IO to improve performance and wear-leveling of SSDs | |
KR102168464B1 (ko) | 인메모리 캐시를 관리하는 방법 |