JP2020135499A - データ処理装置、ストレージ装置およびプリフェッチ方法 - Google Patents

データ処理装置、ストレージ装置およびプリフェッチ方法 Download PDF

Info

Publication number
JP2020135499A
JP2020135499A JP2019029009A JP2019029009A JP2020135499A JP 2020135499 A JP2020135499 A JP 2020135499A JP 2019029009 A JP2019029009 A JP 2019029009A JP 2019029009 A JP2019029009 A JP 2019029009A JP 2020135499 A JP2020135499 A JP 2020135499A
Authority
JP
Japan
Prior art keywords
prefetch
storage unit
data
unit
device driver
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.)
Granted
Application number
JP2019029009A
Other languages
English (en)
Other versions
JP7261037B2 (ja
Inventor
裕治 佐伯
Yuji Saeki
裕治 佐伯
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP2019029009A priority Critical patent/JP7261037B2/ja
Priority to US16/572,230 priority patent/US11194723B2/en
Publication of JP2020135499A publication Critical patent/JP2020135499A/ja
Application granted granted Critical
Publication of JP7261037B2 publication Critical patent/JP7261037B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0685Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0862Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing 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/0868Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/903Querying
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0608Saving storage space on storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/0644Management of space entities, e.g. partitions, extents, pools
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0647Migration mechanisms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0647Migration mechanisms
    • G06F3/0649Lifecycle management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N5/00Computing arrangements using knowledge-based models
    • G06N5/04Inference or reasoning models
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0877Cache access modes
    • G06F12/0882Page mode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1041Resource optimization
    • G06F2212/1044Space efficiency improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/50Control mechanisms for virtual memory, cache or TLB
    • G06F2212/502Control mechanisms for virtual memory, cache or TLB using adaptive policy
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/6022Using a prefetch buffer or dedicated prefetch cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • G06F3/0607Improving or facilitating administration, e.g. storage management by facilitating the process of upgrading existing storage systems, e.g. for improving compatibility between host and storage device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Artificial Intelligence (AREA)
  • Evolutionary Computation (AREA)
  • Software Systems (AREA)
  • Mathematical Physics (AREA)
  • Computing Systems (AREA)
  • Biomedical Technology (AREA)
  • Molecular Biology (AREA)
  • General Health & Medical Sciences (AREA)
  • Biophysics (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

【課題】データパターンに応じてプリフェッチ制御を適性化する。【解決手段】モデル選択部24は、推論部P1〜P3・・をデバイスドライバ23の外部から選択し、データ解析の種類などに応じて各推論部P1〜P3・・を入れ替え、ニューラルネットワークである各推論部P1〜P3・・は、デバイスドライバ23で採取されたI/Oトレースデータに基づいてSSD201のアドレス領域を予測し、その予測結果に基づいてデバイスドライバ23に外部からプリフェッチを指示し、プリフェッチ実行部D4は、クエリとデータベースに関連付けられたニューラルネットワークによる予測に基づいて、SCM202に割り当てられるストレージキャッシュに対するプリフェッチを行う。【選択図】図1

Description

本発明は、ストレージクラスメモリ(SCM:Storage Class Memory)をキャッシュとして用いることが可能なデータ処理装置、ストレージ装置およびプリフェッチ方法に関する。
フラッシュストレージのアクセスタイムは、DRAM(Dynamic Random Access Memory)の格納データにアクセスする場合と比較して約1000倍のギャップがある。このため、インメモリデータベースを用いるビッグデータ解析において、主記憶容量の合計が解析対象のデータサイズ以上になるだけのサーバ台数が必要となり、コストアップを招く。そこで、記憶階層ギャップを埋めるストレージクラスメモリとして市場に登場しつつあるIntel社の3D XPointメモリに代表される次世代不揮発性メモリを適用することにより、主記憶容量を拡張してサーバ台数を削減することが期待されている。
3D XPointメモリは、DRAMの場合と同じ形状のDIMM(Dual Inline Memory Module)に搭載し、キャッシュライン単位でのアクセスが可能で、DRAMを3D XPointメモリのキャッシュとして使用することができる。つまり、記憶容量と階層が一段増加した従来型のメモリアクセス制御をハードウェアが行うシステムとして、従来以上のサイズのデータを主記憶上で処理するプログラムを実行することができる。
一方、3D XPointメモリから溢れたデータをフラッシュストレージの格納データとスワップする機構は、ページフォールト割り込みを契機にオペレーティングシステム(OS:Operating System)がフラッシュストレージにリード/ライトを行うのが基本であり、3D XPointメモリの有無によらないオーバーヘッドを要する。そこで、インメモリデータベースがアクセス頻度の高いデータを主記憶に保持する機構を実装し、データ配置を最適化するためのリード/ライトを行うことになるが、記憶階層が増加することによるデータ配置機構には大幅な改変が必要となる。また、データベースに依存せずに、プラットフォームレベルでフラッシュストレージから3D XPointメモリへのプリフェッチ機構がある方が、データ形式に対応して複数のデータベースが別のプリフェッチ機構を実装することなく実現できて効率が良い。
Dell/EMC社のフラッシュストレージであるPowerMaxにおいて、ストレージOSが過去のリード/ライトパターンを機械学習し、アクセス頻度が高いと予測されるデータをストレージクラスメモリに格納すると発表されている。
また、Intel社のSSDカードタイプの3D XPoint製品であるOptaneでは、機械学習等のアルゴリズムによりOptaneから主記憶にデータをプリフェッチすることで性能を向上させるハイパーバイザを含むIntel Memory Drive Technologyが利用できる。
米国特許第8607005号明細書 米国特許第7805580号明細書 米国特許第8112755号明細書 米国特許出願公開第2016/0381176号明細書 米国特許第8140746号明細書 米国特許第9298633号明細書
しかしながら、上述した従来技術は、実行される応用プログラムによるプリフェッチの制御方法およびアルゴリズムの適否があり、柔軟な制御方法の変更が必要になると予想される。また、製品にビルトインされるストレージOSや、CPUハードウェアを仮想化するハイパーバイザに対して、新規の予測モデルおよびアルゴリズムを簡単には追加できない。
本発明は、上記事情に鑑みなされたものであり、その目的は、データパターンに応じてプリフェッチ制御を適性化することが可能なデータ処理装置、ストレージ装置およびプリフェッチ方法を提供することにある。
上記目的を達成するため、第1の観点に係るデータ処理装置は、第1記憶部と、前記第1記憶部より容量が大きく、アクセス速度が遅い第2記憶部と、前記第1記憶部より容量が大きく、前記第2記憶部よりアクセス速度が遅い第3記憶部と、前記第3記憶部に記憶されたデータを前記第2記憶部にプリフェッチし、前記第2記憶部にプリフェッチしたデータを前記第1記憶部にコピーするデバイスドライバと、前記デバイスドライバの外部に設けられた推論部とを備え、前記デバイスドライバは、前記プリフェッチの指示を前記推論部から受け取る第1インターフェースと、前記第1インターフェースで受け取られた前記プリフェッチの指示に基づいて、前記プリフェッチを実行するプリフェッチ実行部とを備え、前記推論部は、前記第3記憶部からのプリフェッチに用いられるアドレスを予測し、前記予測結果に基づいて前記デバイスドライバに前記プリフェッチを指示する。
本発明によれば、データパターンに応じてプリフェッチ制御を適性化することができる。
図1は、第1実施形態に係るデータ処理装置の機能的な構成を示すブロック図である。 図2は、図1のデータ処理装置のハードウェア構成例を示すブロック図である。 図3は、図1のデバイスドライバと外部プログラムとの連携処理の流れを示す図である。 図4は、図1のプリフェッチ対象のSSDの記憶領域とSCMの記憶領域との関係を示す図である。 図5は、図1のデバイスドライバによる初期化処理を示すフローチャートである。 図6は、図1のデバイスドライバによるページ固定処理を示すフローチャートである。 図7は、図1のデバイスドライバによるプリフェッチ実行処理を示すフローチャートである。 図8は、第2実施形態に係るデータ処理装置の機能的な構成を示すブロック図である。 図9は、第3実施形態に係るデータ処理装置の機能的な構成を示すブロック図である。 図10は、第4実施形態に係るデータ処理装置の機能的な構成を示すブロック図である。
実施形態について、図面を参照して説明する。なお、以下に説明する実施形態は特許請求の範囲に係る発明を限定するものではなく、また、実施形態の中で説明されている諸要素およびその組み合わせの全てが発明の解決手段に必須であるとは限らない。
図1は、第1実施形態に係るデータ処理装置の構成を示すブロック図である。以下の説明では、“○○部は”と動作主体を記した場合、CPU(Central Processing Unit)27がHDD(Hard Disk Drive)25からプログラムである○○部を読み出し、DRAM203にロードした上で○○部の機能を実現することを意味するものとする。
図1において、データ解析サーバ10は、大規模データを解析する。データ解析サーバ10は、解析部11を備える。解析部11はクエリを解析し、データ処理装置20に出力する。
データ処理装置20は、インメモリデータベース21、デバイスドライバ23、モデル選択部24、HDD25、割当て部26、推論部P1、CPU27、メモリコントローラ28、I/O(Input/Output)サブシステム29、SSD(Solid State Drive)201、SCM202およびDRAM203を備える。
インメモリデータベース21は、SCM202およびDRAM203にデータを配置して処理を実行する。インメモリデータベース21は、データ解析サーバ10で解析される大規模データを記憶する。
デバイスドライバ23は、SSD201のリード/ライト処理を実行したり、SCM202にプリフェッチしたデータをDRAM203にコピーしたりする。SSD201のリード/ライト処理を実行する場合、デバイスドライバ23は、例えば、NVM(non−volatile memory) Expressに準拠することができる。デバイスドライバ23は、オペレーティングシステム22に実装される。
CPU27は、データ処理装置20全体の動作制御を司るハードウェアである。メモリコントローラ28は、CPU27がDRAM203のデータをリード/ライトする際にDRAM203の動作を制御する。なお、メモリコントローラ28は、CPU27に内蔵されていてもよい。I/Oサブシステム29は、SSD201のデータの入出力を管理する。I/Oサブシステム29とSSD201との間のデータ伝送は、PCI Expressを用いることができる。
DRAM203は、CPU27が実行中のプログラムを格納したり、CPU27がプログラムを実行するためのワークエリアを設けたりすることができる。DRAM203は、CPU27のメインメモリとして用いられる。
SCM202は、メインメモリの容量を拡張するために用いられる。SCM202は、DRAM203と同じインターフェースでバイト単位にアクセス可能な不揮発性メモリである。SCM202には、SSD201からリードされたデータを一時的に保持するプリフェッチバッファを割り当てることができる。SCM202は、SSD201のストレージキャッシュとして用いることができる。このとき、SCM202は、DRAM203に格納できない規模の使用頻度が高いデータを格納し、SSD201よりも小さいアクセスタイムで使用可能とすることができる。例えば、SCM202は、SSD201に対して1000倍程度長寿命かつ高速であり、DRAM203に対して10倍程度の容量を有することができる。
SCM202は、例えば、磁気抵抗メモリ(MRAM)、抵抗変化メモリ(ReRAM)、相変化メモリ(PRAM/PCM)、強誘電体メモリ(FeRAM)、スピン注入型磁気メモリ(STT−MRAM)、カーボンナノチューブメモリまたは3Dクロスポイントメモリである。
ここで、SCM202をプリフェッチバッファとして用いることにより、DRAM203の容量を増大させることなく、プリフェッチ領域を拡大することができ、コストアップの増大を抑制しつつ、DRAM203に格納できない規模のデータ処理のスループットを向上させることができる。
SSD201は、メインメモリの補助記憶部として用いられるストレージデバイスである。SSD201は、NANDフラッシュメモリにデータを記憶する。NANDフラッシュメモリは、ページ単位で読み出しまたは書き込みが可能で、ブロック単位で消去が可能な不揮発性メモリである。
HDD25は、補助記憶部の容量を拡張するために用いられる。HDD25は、NN(Neural Network)変数VB1およびI/Oトレース圧縮データ25Bを記憶する。NN変数VB1は、ニューラルネットワークで推論部P1を構成するために用いることができる。NN変数VB1は、例えば、CSV(Comma Separated Value)ファイルに格納することができる。I/Oトレース圧縮データ25Bは、I/Oトレースデータを圧縮したデータである。I/Oトレースデータは、DRAM203に対して過去の読み出しまたは書き込みに用いられたデータである。I/Oトレースデータの属性として、例えば、時刻、ブロックアドレス、ブロック数、読み出し/書き込み種別が記録される。
各推論部P1〜P3・・は、SSD201からのプリフェッチに用いられるアドレスを予測し、その予測結果に基づいてデバイスドライバ23に外部からプリフェッチを指示する。このとき、各推論部P1〜P3・・は、sourceアドレスおよびdestinationアドレスを指定してプリフェッチを指示する。sourceアドレスは、プリフェッチ対象となるデータが格納されているSSD201のアドレスである。destinationアドレスはプリフェッチ対象となるデータが格納されるSCM202のアドレスである。
各推論部P1〜P3・・は、I/Oトレースデータのデータパターンに応じて異なる予測モデルまたはアルゴリズムを持つ。各推論部P1〜P3・・が持つ予測モデルまたはアルゴリズムは、I/Oトレースデータのデータパターンに応じてアクセス頻度が高いデータを予測できるように構築することができる。例えば、各推論部P1〜P3・・がニューラルネットワークである場合、I/Oトレースデータのデータパターンに応じてアクセス頻度が高いデータを予測できるように学習した学習済みモデルを用いることができる。各推論部P1〜P3・・は、データ解析サーバ10で用いられるクエリとデータベースに関連付けることができる。
また、各推論部P1〜P3・・は、デバイスドライバ23から性能情報を取得し、プリフェッチに用いるI/O帯域の使用率がしきい値を超えると、プリフェッチを延期するように指示することができる。これにより、プリフェッチによるI/O帯域の占有を回避するとともに、適切なタイミングでの予測に基づいてプリフェッチデータの入れ替えを実行させることができる。
なお、各推論部P1〜P3・・は、SSD201からのプリフェッチ対象となるアドレスを予測する予測モデルの他、プリフェッチに用いるI/O帯域の使用率を予測する予測モデルをさらに備えてもよい。このとき、各推論部P1〜P3・・は、その予測モデルで予測されたI/O帯域の使用率に基づいて、プリフェッチのタイミングを決定するようにしてもよい。
割当て部26は、デバイスドライバ23の外部に設けられ、SSD201からリードされたデータを一時的に保持するプリフェッチバッファをSCM202に割り当てる。このとき、割当て部26は、各推論部P1〜P3・・によるアドレス予測に対して適正化されたプリフェッチバッファの面数およびサイズをデバイスドライバ23に外部から指示することができる。
モデル選択部24は、各推論部P1〜P3・・をデバイスドライバ23の外部から選択し、デバイスドライバ23の外部に配置する。このとき、モデル選択部24は、インメモリデータベース21から与えられる実行中のクエリと一致するまたは類似度が高いクエリに関連付けられた推論部P1〜P3・・を選択することができる。このため、モデル選択部24は、データ解析の種類などに応じて予測精度が高くなるように各推論部P1〜P3・・を入れ替えることができる。
また、モデル選択部24は、プリフェッチのヒット率などの性能情報を取得し、その性能情報に基づいて各推論部P1〜P3・・を入れ替えることができる。例えば、モデル選択部24は、プリフェッチのヒット率が低い場合、各推論部P1〜P3・・を入れ替えることで、プリフェッチのヒット率を向上させることができる。また、ニューラルネットワークの追加学習が行われた場合、例えば、推論部P1として、追加学習前のニューラルネットワークを追加学習済みのニューラルネットワークに置き換えることができ、推論部P1の予測精度を向上させることができる。
デバイスドライバ23は、I/Oトレース採取部D1、モニタ部D2、ページ固定部D3、プリフェッチ部D4、ヒット判定部D5、コピー部D6およびインターフェースF1〜F4を備える。
I/Oトレース採取部D1は、I/Oトレースデータを採取する。モニタ部D2は、プリフェッチを含むI/Oトラフィックをモニタし、プリフェッチのヒット率などの性能情報を取得する。
ページ固定部D3は、SCM202に割り当てられたプリフェッチバッファをページ固定する。このとき、ページ固定部D3は、SSD201のリード性能が最大化するサイズ(例えば、128KB)を単位としてSCM202の記憶領域を分割し、この単位を束にして可変サイズのプリフェッチバッファを構成することができる。これにより、ページ固定部D3は、クエリおよびデータベースに関連付けられたニューラルネットワークの構造に応じてプリフェッチバッファの面数およびサイズを変化させることができ、プリフェッチデータのヒット率を向上させることができる。ここで、ページ固定部D3は、プリフェッチバッファをページ固定することにより、プリフェッチバッファのページングを防止することができる。
プリフェッチ実行部D4は、クエリとデータベースに関連付けられ各推論部P1〜P3・・による予測に基づいて、SCM202に割り当てられるストレージキャッシュに対するプリフェッチを実行する(M1)。
ヒット判定部D5は、プリフェッチが成功したバッファ領域に対応するSSD201へのアクセスを判定する。そして、ヒットしない場合は、ヒット判定部D5は、リード要求があったデータをSSD201から読み出し、DRAM203にライトする(M3)。
コピー部D6は、ヒット判定部D5にてヒットと判定されたときに、SCM202のプリフェッチデータをDRAM203にメモリコピーし(M2)、I/O要求の完了処理を実行する。メモリコピーでは、例えば、C言語で記述されたmemcpy関数を用いることができる。このとき、メモリコピーは、コピー元の先頭アドレスから指定バイト数だけコピー先にコピーする。
コピー部D6は、ヒットした場合に、SCM202のプリフェッチデータをDRAM203にメモリコピーすることで、SSD201へのコマンドを発行する必要がなくなり、プリフェッチ性能を向上させることができる。また、メモリコピーは、DDR(Double−Data−Rate)にてバイト単位でデータをコピーすることができ、SSD201からのリード/ライトに比べてスループットおよびレイテンシを向上させることができる。
インターフェースF1は、I/Oトレース採取部D1で採取されたI/Oトレースデータをデバイスドライバ23の外部に提供する。インターフェースF2は、モニタ部D2で取得されたプリフェッチに関する性能情報を外部に提供する。インターフェースF3は、割当て部26からの指示をページ固定部D3に通知する。インターフェースF4は、各推論部P1〜P3・・からのプリフェッチの指示をプリフェッチ実行部D4に通知する。
機械学習用サーバ30は、機械学習させた予測モデルを作成する。機械学習用サーバ30は、機械学習フレームワーク31を備える。機械学習フレームワーク31は、機械学習に用いるためのソフトウェアライブラリである。機械学習フレームワーク31は、例えば、テンソルフローを用いることができる。
機械学習フレームワーク31は、学習部32、推論部33および変換部34を備える。学習部32は、デバイスドライバ23がデータ解析実行中のI/Oトレースデータに基づいて、ニューラルネットワークを学習させ、NN変数VA1〜VA3・・を求める。このとき、ニューラルネットワークの学習に用いる学習データは、クエリとデータベースに関連付けられている。そして、学習部32は、クエリとデータベースごとにアクセス頻度が高いデータを予測できるようにNN変数VA1〜VA3・・を求める。また、学習部32は、クエリとデータベースの類似度に基づいて追加学習させるニューラルネットワークを選択することができる。
推論部33は、NN変数VA1〜VA3・・に基づいて生成されるニューラルネットワークを予測モデルとしてアクセス頻度が高いデータを予測する。変換部34は、NN変数VA1〜VA3のデータ形式を機械学習フレームワーク31で扱われるデータ形式からデータ処理装置20で扱われるデータ形式に変換する。
プリフェッチの処理手順としては、デバイスドライバ23は、SSD初期化処理において、プリフェッチ専用のsubmitキューおよびcompletionキューの領域を確保し、割り込みを起こさない簡素化したSSDリード完了処理の設定を行う。
モデル選択部24は、クエリとデータベースに応じて推論部P1を選択すると、その推論部P1に対応した学習済のNN変数VB1を読み込み、推論部P1が予測対象とするSSD201のブロックアドレス領域の位置とサイズをデバイスドライバ23に設定する。そして、デバイスドライバ23は、プリフェッチバッファをSCM202に割り当て、プリフェッチ専用のSSD201のリード/ライトコマンドを予め作成するとともに、ページ固定処理を実行する。
デバイスドライバ23は、SSD201に対するI/O要求をトレースしており、過去のI/Oトレースデータの一定数を保持する。推論部P1は、デバイスドライバ23に対して予測モデルが入力として必要とする数のデータ取得要求を行い、SSD201のブロックアドレス領域のアクセス頻度を予測する。このとき、推論部P1は、デバイスドライバ23がモニタするプリフェッチによるものを含むI/Oトラフィック情報を事前に取得することによって、I/O帯域に空きがあるときに推論とプリフェッチを行うようにタイミングを調整することができる。
予測されたアクセス頻度の順位をもとに、SSD201のどのブロックアドレス領域からプリフェッチバッファのどこにデータをリードするかは、データ解析の種類などに応じて予測モデルごとに最適化することができる。このため、予測モデルをオペレーティングシステム22の外部に実装することにより、オペレーティングシステム22を入れ替えることなく、予測モデルを切り替えることができる。一方、プリフェッチ実行部D4をオペレーティングシステム22内に実装することにより、プラットフォームレベルでプリフェッチ機構を持たせることができる。このため、データ形式に対応して複数のデータベースに別個のプリフェッチ機構を実装する必要がなくなり、プリフェッチ機構の実装を効率化することができる。
デバイスドライバ23は、プリフェッチが成功したプリフェッチバッファ領域に対応するSSD201へのアクセスを判定し、ヒットした場合はプリフェッチデータのメモリコピーと、I/O要求の完了処理を実行する。このとき、デバイスドライバ23は、SSD201へのリード/ライトコマンドを発行することなく、SCM202のプリフェッチデータをDRAM203にメモリコピーすることができ、アクセス性能を改善することができる。
図2は、図1のデータ処理装置のハードウェア構成例を示すブロック図である。
図2において、データ処理装置20は、プロセッサ101、通信制御デバイス102、通信インターフェース103、主記憶部104、主記憶拡張部105、補助記憶部106および補助記憶拡張部107を備える。プロセッサ101、通信制御デバイス102、通信インターフェース103、主記憶部104、主記憶拡張部105、補助記憶部106および補助記憶拡張部107は、内部バス108を介して相互に接続されている。
プロセッサ101は、データ処理装置20全体の動作制御を司るハードウェアである。プロセッサ101は、CPUであってもよいし、GPU(Graphics Processing Unit)であってもよい。プロセッサ101は、シングルコアロセッサであってもよいし、マルチコアロセッサであってもよい。プロセッサ101は、処理の一部または全部を行うハードウェア回路(例えば、FPGA(Field−Programmable Gate Array)またはASIC(Application Specific Integrated Circuit))を備えていてもよい。プロセッサ101は、ニューラルネットワークを備えていてもよい。
主記憶部104は、例えば、SRAMまたはDRAMなどの揮発性半導体メモリから構成することができる。主記憶部104には、プロセッサ101が実行中のプログラムを格納したり、プロセッサ101がプログラムを実行するためのワークエリアを設けたりすることができる。
主記憶拡張部105は、主記憶部104の容量を拡張する。主記憶拡張部105は、SCMなどの不揮発性半導体メモリから構成することができる。主記憶拡張部105は、補助記憶部106のストレージキャッシュとして用いることができる。主記憶拡張部105の容量は、主記憶部104の容量より大きい。主記憶拡張部105のアクセス速度は、補助記憶部106のアクセス速度より速い。
補助記憶部106は、大容量の記憶容量を有する不揮発性半導体メモリから構成することができる。補助記憶部106は、例えば、SSDなどのストレージデバイスである。補助記憶部106は、主記憶拡張部105に比べて単位容量当たりのコストを安くすることができる。
補助記憶拡張部107は、補助記憶部106の容量を拡張する。補助記憶部106は、例えば、HDDなどのストレージデバイスである。補助記憶拡張部107は、補助記憶部106に比べて単位容量当たりのコストを安くすることができる。補助記憶拡張部107は、各種プログラムの実行ファイルやプログラムの実行に用いられるデータを保持することができる。補助記憶拡張部107には、デバイスドライバプログラム107Aおよび外部プログラム107Bを格納することができる。
デバイスドライバプログラム107Aは、オペレーティングシステム上で動作するプログラムである。外部プログラム107Bは、オペレーティングシステム外で動作するプログラムである。デバイスドライバプログラム107Aおよび外部プログラム107Bは、データ処理装置20にインストール可能なソフトウェアであってもよいし、データ処理装置20にファームウェアとして組み込まれていてもよい。
通信制御デバイス102は、外部との通信を制御する機能を有するハードウェアである。通信制御デバイス102は、通信インターフェース103を介してネットワーク109に接続される。ネットワーク109は、インターネットなどのWAN(Wide Area Network)であってもよいし、WiFiまたはイーサネット(登録商標)などのLAN(Local Area Network)であってもよいし、WANとLANが混在していてもよい。また、ネットワーク109には、データ解析サーバ10および機械学習用サーバ30が接続されている。
プロセッサ101がデバイスドライバプログラム107Aを主記憶部104に読み出し、デバイスドライバプログラム107Aを実行することにより、図1のデバイスドライバ23の機能を実現することができる。また、プロセッサ101が外部プログラム107Bを主記憶部104に読み出し、外部プログラム107Bを実行することにより、図1のモデル選択部24、推論部P1および割当て部26の機能を実現することができる。
図3は、図1のデバイスドライバと外部プログラムとの連携処理の流れを示す図である。
図3において、図1のSSD201の初期化処理として、デバイスドライバ23は、プリフェッチ専用のsubmitキューおよびcompletionキューをDRAM203に作成し(B11)、SSD201を初期化する(C11)。SSD201の初期化では、例えば、completionキューにリード/ライト完了通知が入ると、どの関数を呼ぶかなどを設定する。submitキューは、SSD201へのリード/ライト要求コマンドを保持する。completionキューは、SSD201からのリード/ライト完了通知を保持する。リード/ライト完了通知は、リード/ライトの正常終了通知または異常終了通知を含むことができる。
オペレーティングシステム外に実装された外部プログラムは、図1の推論部P1として用いる予測モデルおよび変数を外部からデータ処理装置20に取り込み(A11、A12)、プリフェッチバッファをSCM202に割り当てる(A13)。なお、外部プログラムによる処理は、図1のCPU27が外部プログラムを実行することで実現される。
次に、外部プログラムは、コマンド作成のioctlを実行する(A14)。ioctlは、外部プログラムがデバイスドライバ23を制御したり、デバイスドライバ23と通信したりするためのシステムコールである。このとき、外部プログラムは、デバイスドライバ23のインターフェースを呼び出し、引数を設定した関数を実行させることができる。デバイスドライバ23は、コマンド作成のioctlが実行されると、プリフェッチ専用のSSD201のリード/ライトコマンドを作成する(B12)。
次に、外部プログラムは、性能情報採取のioctlを実行する(A15)。デバイスドライバ23は、性能情報採取のioctlが実行されると、プリフェッチに関する性能情報を採取し、外部プログラムに送信する(B13)。次に、外部プログラムは、性能情報に基づいてプリフェッチ性能を監視するとともに、プリフェッチ頻度を調整する(A16)。
次に、外部プログラムは、I/Oトレース採取のioctlを実行する(A17)。デバイスドライバ23は、I/Oトレース採取のioctlが実行されると、I/Oトレースデータを採取し、外部プログラムに送信する(B14)。次に、外部プログラムは、I/Oトレースデータに基づいてブロックアドレス領域を予測し(A18)、プリフェッチバッファに入れ替えられる入替データを決定する(A19)。
次に、外部プログラムは、リードサブミットのioctlを実行する(A17)。デバイスドライバ23は、リードサブミットのioctlが実行されると、SSD201のリードコマンドのサブミットを実行する(B15)。次にデバイスドライバ23は、SSD201から送られたSSD201のリード完了を確認し、プリフェッチバッファの状態を更新するとともに、外部プログラムに通知する(B16)。
外部プログラムは、SSD201のリード完了が通知されるたびに、A15〜A20の処理を繰り返す。このとき、デバイスドライバ23は、プリフェッチ専用のSSD201のリード/ライトコマンドのサブミットおよび完了確認のたびにプリフェッチバッファの状態を更新する。
次に、デバイスドライバ23は、プリフェッチが成功したバッファ領域に対応するSSD201へのアクセスを判定する(B17)。そして、ヒットした場合は、デバイスドライバ23は、SCM202のプリフェッチデータをDRAM203にメモリコピーし(B18)、サブミットせずにI/O要求の完了処理を実行する(B19)。
次に、外部プログラムは、コマンド領域解放のioctlを実行する(A21)。デバイスドライバ23は、コマンド領域解放のioctlが実行されると、プリフェッチ専用のSSD201のリード/ライトコマンドの領域を解放する。次に、外部プログラムは、SCM202に割り当てたプリフェッチバッファを解放する。
ここで、プリフェッチ専用のコマンドキューおよび完了通知キューを用いたプリフェッチ処理では、デバイスドライバ23がコマンドキューにサブミットした数だけ、SSD201からの正常完了通知が完了通知キューに設定されると、SSD201からのリード処理を完了することができ、プリフェッチ処理を簡素化してプリフェッチのオーバーヘッドを削減することができる。
一方、B17のヒットチェックにおいて、ヒットしない場合は、デバイスドライバ23は、割り込みハンドラ処理を伴う通常のプリフェッチを実行する。このとき、デバイスドライバ23は、SSD201にサブミットを行い(B21)、SSD201からのリードの完了通知があると(B22)、割り込み処理を実行する(B23)。次に、デバイスドライバ23は、ハンドラ処理を実行した後(B24)、完了処理を実行する(B25)。
なお、プリフェッチバッファのページ固定時には、外部プログラムは、以下の構造体へのポインタを引数とするioctl関数を呼び出すことができる。
struct prfbf_user_pg{
int hmx_num_du;//プリフェッチバッファ面数
int lba_int_du;//プリフェッチバッファサイズ/面数
void **prfbf_du;//プリフェッチバッファ仮想アドレスの配列
};
プリフェッチ対象となるSSD領域の指定時には、外部プログラムは、以下の構造体へのポインタを引数とするioctl関数を呼び出すことができる。
struct prflba_param{
long prfssd_addr;//プリフェッチ対象となるSSD領域の位置
};
I/Oトレースデータの取得時には、外部プログラムは、以下の構造体へのポインタを引数とするioctl関数を呼び出すことができる。
struct trdtbf_user{
int mxln_du;//取得するI/Oトレース数
long *trdbf_du;//I/Oトレースデータの長さ
};
プリフェッチ実行時には、デバイスドライバ23は、以下の構造体へのポインタを引数とするioctl関数を実行することができる。
struct subprf_user{
int src_du;//SSD高頻度アクセス領域を分割した領域番号
int dest_du;//分割して割当てたプリフェッチバッファの番号
};
性能モニタデータの取得時には、外部プログラムは、以下の構造体へのポインタを引数とするioctl関数を呼び出すことができる。
struct dbgdtbf_user{
int mxln_du;//取得する性能モニタデータの数
long *dbgbf_du;//性能モニタデータの長さ
};
図4は、図1のプリフェッチ対象のSSDの記憶領域とSCMの記憶領域との関係を示す図である。
図4において、SSD201のプリフェッチ対象領域R1は、プリフェッチ対象となるSSD領域の位置prfssd_addrが設定され、プリフェッチバッファサイズlba_int_duで分割される。SSD201の各分割領域には、分割領域番号が付されている。SSD201の記憶領域はブロックアドレスが割り当てられる。
SCM202のプリフェッチ領域R2は、プリフェッチバッファサイズlba_int_duで分割され、面数lba_int_duだけ割り当てられる。図4では、面数hmx_num_du=4の例を示した。プリフェッチ領域R2の各面には、仮想アドレスprfbf_duが割り当てられる。図1のデバイスドライバ23は、SSD201の各分割領域の分割領域番号をプリフェッチ領域R2の各面の仮想アドレスに変換することができる。
プリフェッチバッファの各面の状態変数配列[hmx_num_du]には、prf_dt[i]、prfsv_dt[i]およびprfdrt_dt[i]を設定することができる。
ただし、iは、プリフェッチバッファの各面の番号、prf_dt[i]は、プリフェッチ済のSSD分割領域番号、prfsv_dt[i]は、SSD201のリードが正常終了したことを示すコマンドの個数、prfdrt_dt[i]は、ダーティ状態を示すビットマップである。
SSD201の各分割領域は、シーケンシャルリード性能が高くなるデータサイズを単位として再分割することができる。再分割領域R11のデータサイズは固定値とすることができる。そして、この再分割領域R11を束として分割領域を構成し、各分割領域に含まれる再分割領域R11を可変とすることにより、プリフェッチバッファの面数およびサイズを可変とすることができる。
ここで、プリフェッチバッファのサイズが大きくなると、遠い未来まで予測されたデータをプリフェッチする必要があり、ヒット率が低下する。プリフェッチバッファのサイズが小さくなると、予測対象となるデータが増大し、ヒット率が低下する。このため、プリフェッチバッファのサイズには、ヒット率が最大化する最適なサイズがあり、プリフェッチバッファのサイズを可変とすることより、プリフェッチバッファのサイズを最適化することができる。
このとき、予測に最適なサイズは、I/Oトレースデータのデータパターンに応じて変化する。このため、I/Oトレースデータのデータパターンに応じてアクセス頻度が高いデータを予測できるように構築された予測モデルに対し、その予測モデルに最適なプリフェッチバッファのサイズおよび面数を組で学習することができる。そして、図1のデバイスドライバ23は、その予測モデルに最適なプリフェッチバッファのサイズおよび面数に基づいて、SCM202のプリフェッチ領域R2を設定することができる。
図5は、図1のデバイスドライバによる初期化処理を示すフローチャートである。
図5において、デバイスドライバ23は、一定数のI/Oトレースデータを格納するデータ配列をDRAM203に割り当て、初期化する(S11)。次に、デバイスドライバ23は、プリフェッチに関する性能モニタデータを格納するデータ配列をDRAM203に割り当て、初期化する(S12)。次に、デバイスドライバ23は、プリフェッチバッファの割当て状態を示す変数を未割当に設定する(S13)。
次に、デバイスドライバ23は、プリフェッチとは関係なく作成されるsubmitキューおよびcompletionキューのペア数がシステムの上限値より小さいかどうかを判断する(S14)。プリフェッチとは関係なく作成されるsubmitキューおよびcompletionキューのペア数が上限値より小さい場合、デバイスドライバ23は、プリフェッチ専用のsubmitキューおよびcompletionキューのポインタ変数を割り当てる(S15)。
次に、デバイスドライバ23は、submitキューおよびcompletionキューのペア数をインクリメントする(S16)。次に、デバイスドライバ23は、プリフェッチ専用のsubmitキューおよびcompletionキューの領域をDRAM203に割り当て、初期化する(S17)。次に、デバイスドライバ23は、プリフェッチ専用のcompletionキューに、割り込みハンドラ処理を伴わない簡素化した完了処理関数(#)を設定する(S18)。なお、完了処理関数(#)は、完了状態の確認とヘッドポインタの更新のみを実行する。
一方、プリフェッチとは関係なく作成されるsubmitキューおよびcompletionキューのペア数が上限値以上の場合、デバイスドライバ23は、キューIDが上限値−1であるsubmitキューおよびcompletionキューをプリフェッチに使用する(S19)。submitキューおよびcompletionキューのキューIDが上限値−1の場合、デバイスドライバ23は、S18に進む。
一方、submitキューおよびcompletionキューのキューIDが上限値−1でない場合、デバイスドライバ23は、プリフェッチ専用のsubmitキューおよびcompletionキューの領域割当てを初期化する(S20)。次に、デバイスドライバ23は、completionキューに完了処理関数を設定する(S21)。
図6は、図1のデバイスドライバによるページ固定処理を示すフローチャートである。
図6において、図1のページ固定部D3は、プリフェッチバッファの面数およびサイズを引数の構造体から取得する(S31)。この引数の構造体は、上述したstruct prfbf_user_pgで定義される。
次に、ページ固定部D3は、プリフェッチバッファの各面の仮想アドレスを取得する(S32)。次に、ページ固定部D3は、プリフェッチバッファの各面の状態を格納するデータ配列をDRAM203に割り当て、初期化する(S33)。プリフェッチバッファの各面の状態は、例えば、プリフェッチ中、プリフェッチ済またはライト中でダーティなどである。
次に、ページ固定部D3は、プリフェッチ専用のSSD201のリード/ライトコマンドの領域をDRAM203に割り当て、初期化する(S34)。次に、ページ固定部D3は、プリフェッチバッファをSCM202にページ固定する(S35)。このとき、プリフェッチバッファとして、S31で取得したサイズ×面数の領域がSCM202に設定される。ここで、プリフェッチバッファをページ固定することにより、メモリが枯渇したときに補助記憶装置にページアウトされるのを防止することができる。
次に、ページ固定部D3は、プリフェッチバッファのスキャッタギャザーリストを作成する(S36)。このスキャッタギャザーリストは、プリフェッチバッファの物理ページリストである。
次に、ページ固定部D3は、プリフェッチ専用のSSD201のリード/ライトコマンドに対応するプリフェッチバッファの物理ページリストをDRAM203に設定する(S37)。この物理ページリストは、SSD201のリード/ライトコマンドの格納場所を示すことができる。
次に、ページ固定部D3は、プリフェッチに関する性能モニタデータを格納するデータ配列をリセットする(S38)。次に、ページ固定部D3は、プリフェッチバッファの割当て状態を示す変数を割当済に設定する(S39)。
図7は、図1のデバイスドライバによるプリフェッチ実行処理を示すフローチャートである。
図7において、図1のプリフェッチ実行部D4は、sourceアドレスおよびdestinationアドレスを引数の構造体から取得する(S41)。この引数の構造体は、上述したstruct subprf_userで定義される。
次に、プリフェッチ実行部D4は、プリフェッチバッファが割当済かどうかを判断する(S42)。プリフェッチバッファが割当済でない場合、処理を終了する。一方、プリフェッチバッファが割当済の場合、プリフェッチ実行部D4は、プリフェッチバッファがダーティかどうかを判断する(S43)。プリフェッチバッファがダーティとは、プリフェッチバッファに格納されたプリフェッチデータが、プリフェッチ元のSSD201のデータと一致しないことである。プリフェッチデータ以外のデータがプリフェッチバッファに書き込まれると、プリフェッチバッファがダーティになる。
次に、プリフェッチバッファがダーティの場合、プリフェッチ実行部D4は、現在プリフェッチしているSSD201の分割領域の分割領域番号からSSD201のブロックアドレスを算出する(S44)。次に、プリフェッチ実行部D4は、S41で取得した引数で指定されたプリフェッチバッファ番号から、予め作成したプリフェッチ専用のSSD201のリード/ライトコマンドを選択する(S45)。
次に、プリフェッチ実行部D4は、S44で算出したブロックアドレスをセットし、SSD201のライトコマンドをサブミットする(S46)。次に、プリフェッチ実行部D4は、SSD201から送られたSSD201のライト完了を確認する(S47)。プリフェッチバッファがダーティの場合、S44〜S47の処理により、プリフェッチバッファに書込まれたデータをSSD201に書き戻すことができる。
次に、プリフェッチ実行部D4は、S41で取得した引数で指定されたSSD201の分割領域の分割領域番号からSSD201のブロックアドレスを算出する(S48)。次に、プリフェッチ実行部D4は、S41で取得した引数で指定されたプリフェッチバッファ番号から、プリフェッチ専用のSSD201のリード/ライトコマンドを選択する(S49)。
次に、プリフェッチ実行部D4は、S48で算出したブロックアドレスをセットし、SSD201のリードコマンドをサブミットする(S50)。次に、プリフェッチ実行部D4は、SSD201から送られたSSD201のリード完了を確認する(S51)。次に、プリフェッチ実行部D4は、プリフェッチしているSSD201の分割領域の分割領域番号を更新する(S52)。S48〜S52の処理により、新しく入れ替えるデータをSSD201から読み出し、プリフェッチバッファに上書きすることができる。
一方、S43において、プリフェッチバッファがダーティでない場合、プリフェッチ実行部D4は、S44〜S47の処理をスキップし、S48に進む。
なお、プリフェッチ実行部D4は、プリフェッチ専用のSSD201のリード/ライトコマンドのサブミットおよび完了確認のたびにプリフェッチバッファの状態を更新する。
図8は、第2実施形態に係るデータ処理装置の機能的な構成を示すブロック図である。
図8において、データ処理装置20Aは、図1のHDD25が除去されている。データ処理装置20Aは、データ解析サーバ10およびストレージ装置40に接続されている。それ以外の構成については、データ処理装置20Aは、図1のデータ処理装置20と同様である。
ストレージ装置40は、図1の機械学習用サーバ30と同様の構成を備えるとともに、I/Oトレース圧縮データ25Bを保持する。また、ストレージ装置40は、CPU41およびGPU42を備える。
図1の構成では、データ処理装置20がI/Oトレース圧縮データ25Bを保持するのに対して、図8の構成では、ストレージ装置40がI/Oトレース圧縮データ25Bを保持する。この点以外は、データ処理装置20Aは、データ処理装置20と同様に動作し、ストレージ装置40は、機械学習用サーバ30と同様に動作する。
これにより、データ処理装置20Aは、I/Oトレース圧縮データ25Bを保持する必要がなくなり、データ処理装置20に比べてデータ処理装置20Aの規模を低減することができる。
図9は、第3実施形態に係るデータ処理装置の機能的な構成を示すブロック図である。
図9において、このデータ処理装置は、図1のオペレーティングシステム22の代わりにオペレーティングシステム22Aを備える。オペレーティングシステム22Aは、デバイスドライバ23に加え、ブロックI/Oレイヤ23Aを備える。ブロックI/Oレイヤ23Aは、デバイスドライバ23に読み出しまたは書き込み要求を行う。
モニタプログラム51は、ブロックI/Oレイヤ23Aの動作をモニタすることでI/Oトレースデータを取得する。前処理部52は、I/Oトレースデータに含まれる{時刻、読み出し/書き込み種別、ブロックアドレス、ブロック数}の4次元ベクトルを、時系列データとして一定数だけ記録したテンソル形式データ54に加工し、HDD53に格納する。
これにより、I/Oトレースデータの採取をデバイスドライバ23の上位層で実行することができ、I/Oトレースデータの採取、格納および管理の柔軟性を向上させることができる。また、I/Oトレースデータをテンソル形式データ54に加工することにより、、一般に多次元テンソルとして扱われる機械学習に使用されるI/Oトレースデータの読み出しを効率良く行うことができる。
図10は、第4実施形態に係るデータ処理装置の機能的な構成を示すブロック図である。
図10において、各データ処理装置20−1〜20−N(Nは2以上の整数)は、図1のデータ処理装置20および機械学習用サーバ30と同様の機能を備える。各データ処理装置20−1〜20−Nは、ネットワークを介して接続される。
ここで、各データ処理装置20−1〜20−Nは、インメモリデータベース21−1〜21−N、デバイスドライバ23−1〜23−N、SSD1−1〜1−N、SCM2−1〜2−N、DRAM3−1〜3−N、HDD62−1〜62−N、機械学習フレームワーク60−1〜60−Nおよび分散ファイルシステム61−1〜61−Nを備える。各HDD62−1〜62−Nは、NN変数63−1〜63−NおよびI/Oトレース圧縮データ63−1〜63−Nを記憶する。各分散ファイルシステム61−1〜61−Nは、未学習のI/Oトレースデータの格納場所を管理する。
各機械学習フレームワーク60−1〜60−Nは、未学習のI/Oトレースデータを保持するデータ処理装置20−1〜20−Nにニューラルネットワークの変数を転送し、その移動場所で未学習のI/Oトレースデータを学習した後、元のデータ処理装置20−1〜20−Nに戻る。
これにより、各データ処理装置20−1〜20−Nが保持する学習データのデータ量を低減しつつ、学習に使用可能な学習データのデータ量を増大させることができる。このため、各HDD62−1〜62−Nの容量を増大させることなく、プリフェッチの予測モデルの予測精度を向上させることができる。
以上、本発明の実施形態について説明したが、本発明は上述した実施形態に限定されるものではなく、添付した特許請求の範囲の趣旨内における様々な変形例および同等の構成が含まれる。例えば、上述した実施形態は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに本発明は限定されない。
例えば、上述した実施形態では、図1の推論部P1〜P3・・として、I/Oトレースデータを学習させたニューラルネットワークを用いる方法について説明したが、必ずしもニューラルネットワークを用いる必要はない。例えば、I/Oトレースデータに基づいてアクセス頻度が高いデータを予測するアルゴリズムを構築し、そのアルゴリズムを推論部P1〜P3・・に用いるようにしてもよい。
10 データ解析サーバ、11 解析部、20 データ処理装置、21 インメモリデータベース、22 オペレーティングシステム、23 デバイスドライバ、24 モデル選択部、25 HDD、26 割当て部、P1〜P3、33 推論部、F1〜F4 インターフェース、D1 I/Oトレース採取部、D2 モニタ部、D3 ページ固定部、D4 プリフェッチ実行部、D5 ヒット判定部、D6 コピー部、VA1〜VA3、VB1 NN変数、25B I/Oトレース圧縮データ、27 CPU、28 メモリコントローラ、29 I/Oサブシステム、201 SSD、202 SCM、203 DRAM、30 機械学習用サーバ、31 機械学習フレームワーク、32 学習部、34 変換部

Claims (15)

  1. 第1記憶部と、
    前記第1記憶部より容量が大きく、アクセス速度が遅い第2記憶部と、
    前記第1記憶部より容量が大きく、前記第2記憶部よりアクセス速度が遅い第3記憶部と、
    前記第3記憶部に記憶されたデータを前記第2記憶部にプリフェッチし、前記第2記憶部にプリフェッチしたデータを前記第1記憶部にコピーするデバイスドライバと、
    前記デバイスドライバの外部に設けられた推論部とを備え、
    前記デバイスドライバは、
    前記プリフェッチの指示を前記推論部から受け取る第1インターフェースと、
    前記第1インターフェースで受け取られた前記プリフェッチの指示に基づいて、前記プリフェッチを実行するプリフェッチ実行部とを備え、
    前記推論部は、前記第3記憶部からのプリフェッチに用いられるアドレスを予測し、前記予測結果に基づいて前記デバイスドライバに前記プリフェッチを指示するデータ処理装置。
  2. 前記第1記憶部はDRAM(Dynamic Random Access Memory)、前記第2記憶部はストレージクラスメモリ、前記第3記憶部はSSD(Solid State Drive)である請求項1に記載のデータ処理装置。
  3. 前記推論部は、I/Oトレースデータに基づいて、前記プリフェッチに用いられるアドレスを学習したニューラルネットワークである請求項1に記載のデータ処理装置。
  4. 前記デバイスドライバは、
    前記第2記憶部にプリフェッチされたデータのヒット判定を実行し、前記データがヒットしないときに前記第3記憶部に記憶されたデータを前記第1記憶部にライトするヒット判定部と、
    前記第2記憶部にプリフェッチされたデータがヒットしたときに前記第2記憶部にプリフェッチされたデータを前記第1記憶部にコピーするコピー部とを備える請求項1に記載のデータ処理装置。
  5. 前記デバイスドライバの外部に設けられ、前記第2記憶部にプリフェッチバッファを割り当てる割当て部をさらに備え、
    前記デバイスドライバは、前記第2記憶部に割り当てられたプリフェッチバッファをページ固定するページ固定部をさらに備える請求項1に記載のデータ処理装置。
  6. 前記デバイスドライバは、
    前記プリフェッチの対象とする前記第3記憶部のブロックアドレス領域の面数、位置およびサイズを設定し、
    前記プリフェッチバッファの面数、位置およびサイズを指定する請求項5に記載のデータ処理装置。
  7. 前記デバイスドライバは、シーケンシャルリード性能に基づいて決定したデータサイズで前記プリフェッチバッファを分割し、前記プリフェッチバッファに対する前記第3記憶部からのリードコマンドをプリフェッチ専用に予め作成する請求項5に記載のデータ処理装置。
  8. 前記デバイスドライバは、
    前記第2記憶部の記憶領域を一定のデータサイズで分割した分割領域を単位としてプリフェッチバッファを構成し、
    前記プリフェッチバッファを構成する前記分割領域の個数を可変とすることで、前記プリフェッチバッファの面数およびサイズを可変とする請求項5に記載のデータ処理装置。
  9. 前記デバイスドライバは、I/Oトレースデータを取得する第2インターフェースをさらに備え、
    前記I/Oトレースデータを取得する関数は、前記I/Oトレースデータの属性のうちから前記予測に使用する属性と、前記I/Oトレースデータの長さを選択する引数を含む請求項1に記載のデータ処理装置。
  10. 前記デバイスドライバは、前記プリフェッチに関する性能情報を取得する第3インターフェースをさらに備え、
    前記推論部は、前記第3インターフェースから前記性能情報を取得し、前記プリフェッチに用いるI/O帯域の使用率に基づいて、前記プリフェッチのタイミングを決定する請求項1に記載のデータ処理装置。
  11. 前記プリフェッチに用いるI/O帯域の使用率を予測する予測モデルをさらに備え、
    前記推論部は、前記予測モデルで予測された前記I/O帯域の使用率に基づいて、前記プリフェッチのタイミングを決定する請求項1に記載のデータ処理装置。
  12. 前記デバイスドライバは、
    前記プリフェッチ専用のコマンドキューと完了通知キューを作成し、
    前記デバイスドライバが前記コマンドキューにサブミットした数だけ、前記完了通知キューに正常完了通知が設定されると、前記第3記憶部からのリード処理を完了する請求項1に記載のデータ処理装置。
  13. 第1記憶部と、
    前記第1記憶部より容量が大きく、アクセス速度が遅い第2記憶部と、
    前記第1記憶部より容量が大きく、前記第2記憶部よりアクセス速度が遅い第3記憶部と、
    前記第3記憶部に記憶されたデータを前記第2記憶部にプリフェッチするデバイスドライバとを備え、
    前記デバイスドライバは、ヒット判定に基づいて、前記第2記憶部にプリフェッチされたデータを前記第1記憶部にコピーするか、前記第3記憶部に記憶されたデータを前記第1記憶部にライトするかを選択するストレージ装置。
  14. 前記デバイスドライバは、
    前記プリフェッチの指示を外部から受け取るインターフェースと、
    前記インターフェースで受け取られた前記プリフェッチの指示に基づいて、前記プリフェッチを実行するプリフェッチ実行部とを備える請求項13に記載のストレージ装置。
  15. ストレージデバイスに記憶されたデータをストレージクラスメモリにプリフェッチするプリフェッチ方法であって、
    前記プリフェッチを実行するデバイスドライバが実装されたオペレーティングシステムの外部に前記プリフェッチを指示する推論部が設けられ、
    前記推論部は、前記ストレージデバイスからのプリフェッチに用いられるアドレスを予測し、前記予測結果に基づいて前記デバイスドライバに前記プリフェッチを指示するプリフェッチ方法。

JP2019029009A 2019-02-21 2019-02-21 データ処理装置、ストレージ装置およびプリフェッチ方法 Active JP7261037B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2019029009A JP7261037B2 (ja) 2019-02-21 2019-02-21 データ処理装置、ストレージ装置およびプリフェッチ方法
US16/572,230 US11194723B2 (en) 2019-02-21 2019-09-16 Data processing device, storage device, and prefetch method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2019029009A JP7261037B2 (ja) 2019-02-21 2019-02-21 データ処理装置、ストレージ装置およびプリフェッチ方法

Publications (2)

Publication Number Publication Date
JP2020135499A true JP2020135499A (ja) 2020-08-31
JP7261037B2 JP7261037B2 (ja) 2023-04-19

Family

ID=72141677

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019029009A Active JP7261037B2 (ja) 2019-02-21 2019-02-21 データ処理装置、ストレージ装置およびプリフェッチ方法

Country Status (2)

Country Link
US (1) US11194723B2 (ja)
JP (1) JP7261037B2 (ja)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11436041B2 (en) * 2019-10-03 2022-09-06 Micron Technology, Inc. Customized root processes for groups of applications
US11474828B2 (en) 2019-10-03 2022-10-18 Micron Technology, Inc. Initial data distribution for different application processes
US11599384B2 (en) 2019-10-03 2023-03-07 Micron Technology, Inc. Customized root processes for individual applications
US11429445B2 (en) 2019-11-25 2022-08-30 Micron Technology, Inc. User interface based page migration for performance enhancement
US11157285B2 (en) * 2020-02-06 2021-10-26 International Business Machines Corporation Dynamic modification of instructions that do not modify the architectural state of a processor
US11327883B2 (en) * 2020-03-12 2022-05-10 International Business Machines Corporation Solid-state drive performance and lifespan based on data affinity
US11366752B2 (en) 2020-03-19 2022-06-21 Micron Technology, Inc. Address mapping between shared memory modules and cache sets
US11943294B1 (en) * 2020-09-30 2024-03-26 Amazon Technologies, Inc. Storage medium and compression for object stores
US11836087B2 (en) 2020-12-23 2023-12-05 Micron Technology, Inc. Per-process re-configurable caches
US11625519B2 (en) * 2021-04-05 2023-04-11 Mythic, Inc. Systems and methods for intelligent graph-based buffer sizing for a mixed-signal integrated circuit
WO2022213736A1 (zh) * 2021-04-08 2022-10-13 华为技术有限公司 一种将数据写入固态硬盘的方法
WO2023055462A1 (en) * 2021-09-30 2023-04-06 Micron Technology, Inc. Delta predictions for page scheduling
CN114065947B (zh) * 2021-11-15 2022-07-22 深圳大学 一种数据访问推测方法、装置、存储介质及电子设备
US11989142B2 (en) * 2021-12-10 2024-05-21 Samsung Electronics Co., Ltd. Efficient and concurrent model execution
US11966597B1 (en) 2022-09-29 2024-04-23 Amazon Technologies, Inc. Multi-domain configurable data compressor/de-compressor

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10171653A (ja) * 1996-10-09 1998-06-26 Nkk Corp 情報処理装置の分岐予測方式及びそれを用いた装置
US20040003179A1 (en) * 2002-06-28 2004-01-01 Fujitsu Limited Pre-fetch control device, data processing apparatus and pre-fetch control method
JP2008159057A (ja) * 2006-12-22 2008-07-10 Intel Corp ダイナミック・ランダムアクセスメモリからスタティック・ランダムアクセスメモリへのプリフェッチ
JP2008269331A (ja) * 2007-04-20 2008-11-06 Media Logic Corp デバイスドライバ
JP2018022404A (ja) * 2016-08-05 2018-02-08 富士通株式会社 ストレージシステム、ストレージ制御装置およびストレージ制御プログラム

Family Cites Families (9)

* Cited by examiner, † Cited by third party
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
JP2015192365A (ja) * 2014-03-28 2015-11-02 ソニー株式会社 通信制御装置、通信制御方法、およびプログラム
US10397368B2 (en) 2015-06-25 2019-08-27 International Business Machines Corporation Data prefetching for large data systems
JP2017117179A (ja) * 2015-12-24 2017-06-29 富士通株式会社 情報処理装置、キャッシュ制御プログラムおよびキャッシュ制御方法
JP7132491B2 (ja) * 2018-05-14 2022-09-07 富士通株式会社 メモリ制御装置、メモリ制御プログラムおよびメモリ制御方法

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10171653A (ja) * 1996-10-09 1998-06-26 Nkk Corp 情報処理装置の分岐予測方式及びそれを用いた装置
US20040003179A1 (en) * 2002-06-28 2004-01-01 Fujitsu Limited Pre-fetch control device, data processing apparatus and pre-fetch control method
JP2004038345A (ja) * 2002-06-28 2004-02-05 Fujitsu Ltd プリフェッチ制御装置、情報処理装置及びプリフェッチ制御方法
JP2008159057A (ja) * 2006-12-22 2008-07-10 Intel Corp ダイナミック・ランダムアクセスメモリからスタティック・ランダムアクセスメモリへのプリフェッチ
JP2008269331A (ja) * 2007-04-20 2008-11-06 Media Logic Corp デバイスドライバ
JP2018022404A (ja) * 2016-08-05 2018-02-08 富士通株式会社 ストレージシステム、ストレージ制御装置およびストレージ制御プログラム
US20180039439A1 (en) * 2016-08-05 2018-02-08 Fujitsu Limited Storage system, storage control device, and method of controlling a storage system

Also Published As

Publication number Publication date
JP7261037B2 (ja) 2023-04-19
US11194723B2 (en) 2021-12-07
US20200272566A1 (en) 2020-08-27

Similar Documents

Publication Publication Date Title
JP7261037B2 (ja) データ処理装置、ストレージ装置およびプリフェッチ方法
Lagar-Cavilla et al. Software-defined far memory in warehouse-scale computers
KR102371916B1 (ko) 가상 머신을 지원하는 스토리지 장치, 그것을 포함하는 스토리지 시스템 및 그것의 동작 방법
JP6248808B2 (ja) 情報処理装置、情報処理システム、情報処理装置の制御方法、及び、情報処理装置の制御プログラム
US20180275899A1 (en) Hardware based map acceleration using forward and reverse cache tables
US10282292B2 (en) Cluster-based migration in a multi-level memory hierarchy
JP2007328734A (ja) ストレージ装置及びストレージ装置の制御方法
JP2019204335A (ja) データ処理装置およびプリフェッチ方法
US9858191B2 (en) Electronic system with data management mechanism and method of operation thereof
Brown et al. Taming the Memory Hogs: Using {Compiler-Inserted} Releases to Manage Physical Memory Intelligently
US11907129B2 (en) Information processing device, access controller, information processing method, and computer program for issuing access requests from a processor to a sub-processor
KR20200121372A (ko) 하이브리드 메모리 시스템
US20230315309A1 (en) Techniques to predict or determine time-to-ready for a storage device
WO2019032197A1 (en) HYBRID DATA STORAGE MATRIX
US11561834B2 (en) Methods and systems for adaptive memory-resource management
JP6800904B2 (ja) モデル生成装置、情報処理装置、モデル生成方法およびプログラム
KR20200117032A (ko) 하이브리드 메모리 시스템
KR101456370B1 (ko) 스토리지 관리 방법 및 장치
Wu et al. Reducing SSD access latency via NAND flash program and erase suspension
Xie et al. Exploiting internal parallelism for address translation in solid-state drives
JP6988231B2 (ja) 情報処理装置、情報処理システム、情報処理方法及び情報処理プログラム
JP6873942B2 (ja) 推定装置、推定方法およびプログラム
JP6243884B2 (ja) 情報処理装置、プロセッサ、および情報処理方法
JP6254986B2 (ja) 情報処理装置、アクセスコントローラ、および情報処理方法
WO2017082323A1 (ja) 分散処理システム、分散処理装置、方法および記憶媒体

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20210705

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20220316

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20220329

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220524

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20221011

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20221205

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20230314

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20230407

R150 Certificate of patent or registration of utility model

Ref document number: 7261037

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150