JP4151977B2 - 先読み装置、先読み方法、および先読みプログラム - Google Patents

先読み装置、先読み方法、および先読みプログラム Download PDF

Info

Publication number
JP4151977B2
JP4151977B2 JP2005075672A JP2005075672A JP4151977B2 JP 4151977 B2 JP4151977 B2 JP 4151977B2 JP 2005075672 A JP2005075672 A JP 2005075672A JP 2005075672 A JP2005075672 A JP 2005075672A JP 4151977 B2 JP4151977 B2 JP 4151977B2
Authority
JP
Japan
Prior art keywords
prefetch
data
prefetching
program
group
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.)
Expired - Fee Related
Application number
JP2005075672A
Other languages
English (en)
Other versions
JP2006260067A (ja
Inventor
俊明 安江
秀昭 小松
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.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
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 International Business Machines Corp filed Critical International Business Machines Corp
Priority to JP2005075672A priority Critical patent/JP4151977B2/ja
Priority to US11/377,518 priority patent/US7383417B2/en
Publication of JP2006260067A publication Critical patent/JP2006260067A/ja
Priority to US12/060,772 priority patent/US20080301399A1/en
Application granted granted Critical
Publication of JP4151977B2 publication Critical patent/JP4151977B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • G06F9/383Operand prefetching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • G06F9/383Operand prefetching
    • G06F9/3832Value prediction for operands; operand history buffers

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

本発明は、先読み装置、先読み方法、および先読みプログラムに関する。特に本発明は、プログラムによるデータの読み出しに先立ってファイルからバッファにデータを先読みする先読み装置、先読み方法、および先読みプログラムに関する。
近年のプロセッサの高速化に伴い、ハードディスク・ドライブ等の外部記憶装置からデータを読み込むのに要する時間がプロセッサの処理時間と比較して非常に大きくなっている。このため、プロセッサは、外部記憶装置からデータを読み出して処理する場合において、外部記憶装置へ読み出しを要求してから読み出しの完了までの間頻繁に入出力待ち(IO wait)状態となってしまう。
この入出力待ち時間による性能低下を抑える方法として、外部記憶装置からデータを予め先読み(プリフェッチ)する技術が各種提案されている。
非特許文献1および2は、プログラムの実行時に、ファイルが逐次読み出しされているか否かを検出し、逐次読み出しされている場合には逐次的にファイルを先読みする技術を開示する。
非特許文献3から5は、プログラムを事前に実行してプログラムがアクセスするファイルの情報をプロファイルとして収集し、プロファイルに基づいてファイルを先読みする技術を開示する。非特許文献3から4は、各プログラムがアクセスする一連のファイルのアクセス順序をプロファイルに基づいて生成しておき、プログラムの実行時にあるファイルがアクセスされると、次のファイルを先読みする技術を開示する。非特許文献5は、ハードディスクのクラスタ毎に、当該クラスタの次にアクセスされる可能性が高いクラスタを指定する情報を記憶させておく。そして、あるクラスタが読み出されると、次にアクセスされる可能性が高いクラスタを先読みする。
非特許文献6および7は、外部記憶装置から先読みすべきデータをプログラム上で指定することにより、適切に先読みを行う方法を開示する。
非特許文献8は、プログラムをコンパイラにより解析してファイルのアクセスパターンを検出し、コンパイラにより実行コード中に先読み処理を挿入する方法を開示する。
非特許文献9および10は、実行するプログラムから不要な処理等を取り除いた先読み用プログラムを用いて先読みを行う方法を開示する。すなわち、先読み用プログラムを元のプログラムに先行して実行して先読みを行わせ、元のプログラムに先読みしたデータを利用させる。
非特許文献11および12は、ハードディスクに対して発行されたアクセス要求の順序を並べ替えて、ヘッドのシーク時間を短縮する技術を開示する。
R. J. Feiertang and E. I. Organisk, "The Multics Input/Output System", in Proceedings of Third Symposium on Operating System Principles, pp.35-41, 1971年 M. K. McKusick, W. J. Joy, S. J. Leffler, and R. S. Fabry, "A Fast File System for Unix", ACM Transactions on Computer Systems, 2(3), pp.181-197, 1984年 H. Lei and D. Duchamp, "An Analytical Approach to File Prefetching", USENIX 1997, 1997年 J. Griffioen and R. Appleton, "Reducing File System Latency using a Predictive Approach", in Proceedings of the USENIX Summer Technical Conference, pp. 197-207, 1994年 K. S. Grimsrud, J. K. Archibald, and B. E. Nelson, "Multiple Prefetch Adaptive Disk Caching", IEEE Transaction on Knowledge and Data Engineering, Vol. 5, No. 1, pp. 88-103, 1993年 Jeffrey Richter, "Advanced Windows - The Developer's Guide to the Win32(r) API for Windows NT(tm) 3.5 and Windows 95" , Microsoft Press, 1995年 R. H. Patterson, et. al., "Informed Prefetching and Caching", in Proceeding of Fifteenth Symposium on Operating System Principles, pp. 79-95, 1995年 T. C. Mowry, A. K. Demke, and O. Krieger, "Automatic Compiler-Inserted I/O Prefetching for Out-of-Core Application", in Proceedings of the 2nd USENIX Symposium on Operating Systems Design and Implementation, 1996年 C. K. Yang, T. Mitra, and T. C. Chiueh, "A Decoupled Architecture for Application-Specific File Prefetching", USENIX 2002, 2002年 K. Fraser and F. Chang, "Operating System I/O Speculation: How two invocations are faster than one", USENIX 2003, 2003年 C. C. Gotlieb and G. H. MacEwen, "Performance of Movable-Head Disk Strage Devices", Journal of ACM, Vol. 20, No. 4, pp. 604-623, 1973年 R. Geist and S. Daniel, "A Continuum of Disk Scheduling Algorithms, ACM Transactions on Computer Systems," Vol. 5, No. 1, pp. 77-92, 1987年
近年、ネットワーク上に複数の情報処理装置が接続された情報システムとして、Java(登録商標)によるプログラムを用いるシステムが普及している。Java(登録商標)のプログラム環境においては、プログラムの実行単位となる多数のクラスがJARファイル(Java(登録商標) ARchive File)に格納されている。このため、Java(登録商標)によるアプリケーションプログラムを実行する場合、アプリケーションプログラムの起動時に、多数のクラスをJARファイルから読み出す必要がある。
この起動時の読み出しにおいては、必要なクラスファイルが順次読み出されるので、JARファイルに対して不規則なアクセス位置の読み出しが発行される。
これに対し、非特許文献1および2の先読み方法においては、ファイルを逐次的に先読みするので、Java(登録商標)のプログラム環境において先読みを適切に行うことができない。
また、非特許文献3から5の先読み方法においては、先読みしたデータを格納するキャッシュの容量、および先読みするタイミングを考慮しておらず、プログラムによっては先読みの効果が得られない可能性がある。
また、非特許文献6および7の先読み方法においては、先読みすべきデータをプログラム作成者が指定する必要があり、プログラム作成の負担が増大する。
また、非特許文献8の先読み方法においては、コンパイラで解析可能な範囲を越える比較的広いコード領域に応じた先読みを行うのが困難である。
また、非特許文献9および10の先読み方法においては、実行すべきプログラムの一部を取り除いたことにより先読み用プログラムの動作フローが実行すべきプログラムと不一致となる場合がある。この場合には、誤ったデータを先読みしてしまう。また、先読み用プログラムを並行して実行するため、プログラム実行のオーバーヘッドが大きくなる。
非特許文献11および12においては、プログラムが読み出しを要求したデータの読み出し速度を向上することができるが、プロセッサが入出力待ち状態となるのを回避することができない。
そこで本発明は、上記の課題を解決することのできる先読み装置、先読み方法、および先読みプログラムを提供することを目的とする。この目的は特許請求の範囲における独立項に記載の特徴の組み合わせにより達成される。また従属項は本発明の更なる有利な具体例を規定する。
本発明の第1の形態によると、プログラムデータの読み出しを発行するのに先立ってファイルからバッファに当該データを先読みする先読み装置であって、複数のプログラムのそれぞれについて、当該プログラムが実行中に発行したデータ読み出しの履歴を記録する履歴記録部と、それぞれのプログラムについて、履歴に記録された複数のデータ読み出しに対応する複数の先読みを生成する先読み生成部と、それぞれのプログラムがデータ読み出しを発行したことに応じて、プログラムが読み出しを要求したデータ量の合計値を計測する計測部と、それぞれのプログラムについて、履歴に基づいて、複数の先読みの実行順序を決定する順序決定部と、それぞれのプログラムについて、複数の先読みを、時系列順に連続する1以上の先読みを含む複数のグループに分割する分割部と、それぞれのプログラムについて、それぞれのグループに対応して、当該グループに含まれる1以上の先読みを開始するグループ開始タイミングを、履歴から決定した、当該グループに含まれる1以上の先読み対応するデータ読み出しを開始するべき読出開始タイミングまでにデータがバッファに読み込まれるタイミングに決定する開始条件決定部と、実行順序およびグループ開始タイミングが決定された後にいずれかのプログラムが実行されたことに応じて、当該プログラムについてのそれぞれのグループについて、当該グループに対応するグループ開始タイミングに当該グループに含まれる1以上の先読みの実行を開始するプリフェッチ部と、を備え、開始条件決定部は、それぞれのプログラムについて、それぞれのグループに対応して、グループ開始タイミングを、データ量の合計値が満たすべき基準データ量の条件として決定し、複数のグループのそれぞれに対応する基準データ量および当該グループに含まれる1以上の先読みのパラメータを含む先読み順序を記憶装置内のテーブルに格納し、計測部は、実行中のプログラムが読み出しを要求したデータ量の合計値が次に実行すべきグループに対応する基準データ量を超えたことを条件として、プリフェッチ部を呼び出し、プリフェッチ部は、実行順序およびグループ開始タイミングが決定された後にいずれかのプログラムが実行されたことに応じて、記憶装置に格納された複数のプログラムについての複数の先読み手順のうち、当該プログラムについての先読み手順を取得する先読み手順取得部と、計測部の呼び出しに応じて、取得した先読み手順により次に実行すべきグループに含まれる先読みを実行するプリフェッチ実行部とを有する先読み装置、および当該先読み装置に関する先読み方法および先読みプログラムを提供する。

なお、上記の発明の概要は、本発明の必要な特徴の全てを列挙したものではなく、これらの特徴群のサブコンビネーションもまた、発明となりうる。
本発明によれば、プログラムによるデータ読み出しに先立って効率良くデータの先読みを行うことができる。
以下、発明の実施の形態を通じて本発明を説明するが、以下の実施形態は特許請求の範囲にかかる発明を限定するものではなく、また実施形態の中で説明されている特徴の組み合わせの全てが発明の解決手段に必須であるとは限らない。
図1は、本実施形態に係る情報処理装置1900のハードウェア構成の一例を示す。本実施形態において、情報処理装置1900は、プログラム10を実行し、プログラム10からの要求に応じてファイル20からデータを読み出してプログラム10に供給する。また、情報処理装置1900は、本発明に係る先読み装置としても機能し、情報処理装置1900上で実行されるプログラム10によるデータの読み出しに先立って、ファイル20からバッファ30に当該データを先読み(プリフェッチ)する。これにより、プログラム10は、ハードディスクドライブ2040からのデータ読み出しに代えてバッファ30から当該データを取得することができ、最小限の入出力待ちで命令処理をすることができる。
本実施形態に係る情報処理装置1900は、ホスト・コントローラ2082により相互に接続されるCPU2000、RAM2020、グラフィック・コントローラ2075、及び表示装置2080を有するCPU周辺部と、入出力コントローラ2084によりホスト・コントローラ2082に接続される通信インターフェイス2030、ハードディスクドライブ2040、及びCD−ROMドライブ2060を有する入出力部と、入出力コントローラ2084に接続されるROM2010、フレキシブルディスク・ドライブ2050、及び入出力チップ2070を有するレガシー入出力部とを備える。
ホスト・コントローラ2082は、読み書き可能なメモリであるRAM2020と、高い転送レートでRAM2020をアクセスするCPU2000及びグラフィック・コントローラ2075とを接続する。CPU2000は、ROM2010及びRAM2020に格納されたプログラムに基づいて動作し、各部の制御を行う。グラフィック・コントローラ2075は、CPU2000等がRAM2020内に設けたフレーム・バッファ上に生成する画像データを取得し、表示装置2080上に表示させる。これに代えて、グラフィック・コントローラ2075は、CPU2000等が生成する画像データを格納するフレーム・バッファを、内部に含んでもよい。
入出力コントローラ2084は、ホスト・コントローラ2082と、比較的高速な入出力装置である通信インターフェイス2030、ハードディスクドライブ2040、CD−ROMドライブ2060を接続する。通信インターフェイス2030は、ネットワークを介して他の装置と通信する。ハードディスクドライブ2040は、情報処理装置1900内のCPU2000が使用するプログラム及びデータを格納する記憶装置である。ハードディスクドライブ2040は、RAM2020と比較して大容量であるが、アクセス時間が長い。CD−ROMドライブ2060は、CD−ROM2095からプログラム又はデータを読み取り、RAM2020を介してハードディスクドライブ2040に提供する。
また、入出力コントローラ2084には、ROM2010と、フレキシブルディスク・ドライブ2050、及び入出力チップ2070の比較的低速な入出力装置とが接続される。ROM2010は、情報処理装置1900が起動時に実行するブート・プログラムや、情報処理装置1900のハードウェアに依存するプログラム等を格納する。フレキシブルディスク・ドライブ2050は、フレキシブルディスク2090からプログラム又はデータを読み取り、RAM2020を介してハードディスクドライブ2040に提供する。入出力チップ2070は、フレキシブルディスク・ドライブ2050や、例えばパラレル・ポート、シリアル・ポート、キーボード・ポート、マウス・ポート等を介して各種の入出力装置を接続する。
RAM2020を介してハードディスクドライブ2040に提供されるプログラムは、フレキシブルディスク2090、CD−ROM2095、又はICカード等の記録媒体に格納されて利用者によって提供される。プログラムは、記録媒体から読み出され、RAM2020を介して情報処理装置1900内のハードディスクドライブ2040にインストールされ、CPU2000において実行される。
プログラム10は、情報処理装置1900内のハードディスクドライブ2040にインストールされ、または通信インターフェイス2030を介して外部から取得される。プログラム10は、情報処理装置1900により実行されて、先読みの対象となるデータを読み出しつつ情報処理装置1900による情報処理を行う。プログラム10は、例えばCPU2000により実行可能なバイナリ形式のアプリケーションプログラムであってよく、これに代えて、Java(登録商標)バーチャルマシンの命令形式等の実行時に実行可能形式に変換されるプログラムであってもよい。
情報処理装置1900を先読み装置として機能させる先読みプログラムは、情報処理装置1900内のハードディスクドライブ2040にインストールされ、プログラム10によるデータの読み出しに先立ってハードディスクドライブ2040に格納されたファイル20からRAM2020上に設けたバッファ30に当該データを先読みする。
以上に示したプログラム又はモジュールは、外部の記憶媒体に格納されてもよい。記憶媒体としては、フレキシブルディスク2090、CD−ROM2095の他に、DVDやCD等の光学記録媒体、MO等の光磁気記録媒体、テープ媒体、ICカード等の半導体メモリ等を用いることができる。また、専用通信ネットワークやインターネットに接続されたサーバシステムに設けたハードディスク又はRAM等の記憶装置を記録媒体として使用し、ネットワークを介してプログラムを情報処理装置1900に提供してもよい。
図2は、本実施形態に係る情報処理装置1900の機能構成を示す。本実施形態に係る情報処理装置1900は、プログラム10、オペレーティングシステム200、および先読みプログラムを実行する。そして情報処理装置1900は、先読みプログラムを実行することにより先読み装置210としても機能する。
プログラム10は、情報処理装置1900上で実行され、命令処理と、次の命令処理に用いるデータを読み出すデータ読出処理とを交互に行うことにより所望の情報処理を行う。プログラム10は、データ読出処理において、オペレーティングシステム200に対しデータ読み出しを発行し、オペレーティングシステム200が読み出しの対象となるファイル20から読み出したデータを受け取る。
オペレーティングシステム200は、情報処理装置1900上で実行され、情報処理装置1900のハードウェア資源を管理してプログラム10等のアプリケーションプログラムに使用させる。オペレーティングシステム200は、バッファ30を有する。バッファ30は、情報処理装置1900上で動作するオペレーティングシステム200により実現される。一例としてバッファ30は、オペレーティングシステム200が管理するファイルキャッシュであってよい。このファイルキャッシュは、ハードディスクドライブ2040内のファイル20から読み出したデータをキャッシュし、プログラム10からの要求に応じて再利用させるためにオペレーティングシステム200により提供される。
先読み装置210は、ハードディスクドライブ2040等にインストールされた先読みプログラムを、情報処理装置1900上でプログラム10と並行して実行することにより実現され、プログラム10によるデータの読み出しに先立ってファイル20からバッファ30にデータを先読みする。当該先読みプログラムは、データ読出中継モジュール、先読み生成モジュール、先読み手順決定モジュール、およびプリフェッチモジュールを有する。これらのプログラム又はモジュールは、CPU2000等に働きかけて、情報処理装置1900を、データ読出中継部220と、先読み生成部230と、先読み手順決定部240と、プリフェッチ部265としてそれぞれ機能させる。
データ読出中継部220は、プログラム10が実行中にオペレーティングシステム200に対して発行したデータ読み出しを取得して、当該データ読み出しに応じた先読み装置210の処理を起動する。そして、データ読出中継部220は、取得したデータ読み出しをオペレーティングシステム200に対して発行し、オペレーティングシステム200によりデータを読み出させてプログラム10へと返送させる。この機能は、例えばオペレーティングシステム200が提供するデータ読出関数をフックしたり、当該データ読出関数を書き換えてデータ読出中継部220の機能を呼び出したり等することにより実現することができる。
データ読出中継部220は、情報処理装置1900に履歴記録モジュールおよび計測モジュールを実行させることにより実現される履歴記録部222および計測部224を含む。履歴記録部222は、プログラム10が実行中に発行したデータ読み出しの履歴をプロファイルとして記録する。計測部224は、先読み装置210が次の先読み処理を開始すべき条件が満たされたか否かを判断する先読み開始判断部として機能する。本実施形態において計測部224は、プログラム10がデータ読み出しを発行したことに応じて、プログラム10が読み出しを要求したデータ量の合計値を計測する。そして、当該データ量の合計値が次に実行すべき先読み処理に対応して先読み手順決定部240により予め定められた基準データ量となったことに応じて、当該先読み処理を開始すべき条件が満たされたと判断する。先読み処理を開始すると判断すると、計測部224は、プリフェッチ部265内のプリフェッチ実行部269を呼び出して先読み処理を実行させる。
先読み生成部230は、履歴記録部222により履歴に記録された複数のデータ読み出しに対応する複数の先読みを生成する。先読み手順決定部240は、履歴記録部222により記録された履歴に基づいて、先読み生成部230により生成された複数の先読みの実行順序を決定する。
先読み手順決定部240は、複数の先読みの実行順序、および、複数の先読みを開始する開始条件としての開始タイミングを決定する。そして先読み手順決定部240は、決定した実行順序および開始タイミングの情報を含む先読み手順を作成し、計測部224および先読み手順取得部267に供給する。先読み手順決定部240は、情報処理装置1900に順序決定モジュール、分割モジュール、およびタイミング決定モジュールを実行させることにより実現される順序決定部245、分割部250、およびタイミング決定部255を含む。
順序決定部245は、履歴記録部222が記録した履歴に基づいて、先読み生成部230が生成した複数の先読みの実行順序および先読み開始タイミングを決定する。順序決定部245は、先読み最適化部247を含む。先読み最適化部247は、複数の先読みの実行順序を最適化する。本実施形態に係る先読み最適化部247は、ハードディスクドライブ2040上の連続領域を個別に読み出す2以上の先読みをまとめて1つの先読みに置き換えることにより先読みの最適化を図る。
分割部250は、複数の先読みを、1以上の先読みを含む複数のグループに分割する。本実施形態に係るプリフェッチ実行部269は、計測部224からの呼び出し毎に、次に処理されるべきグループに属する1以上の先読みをまとめて実行する。これにより、計測部224がプリフェッチ実行部269を呼び出す回数を削減し、先読みのオーバーヘッドを低減する。
タイミング決定部255は、本発明に係るタイミング決定部及び/又は開始条件決定部として機能し、複数の先読みのそれぞれを開始する開始条件として、それぞれの先読みの開始タイミングを決定する。本実施形態においてタイミング決定部255は、分割部250により生成されたそれぞれのグループに対応して、当該グループに含まれる1以上の先読みを開始するグループ開始タイミングを決定する。より具体的には、本実施形態に係るタイミング決定部255は、グループ開始タイミングを、計測部224が計測するデータ量の合計値が満たすべき条件として決定する。
タイミング決定部255は、読出開始タイミング決定部257と、先読み開始タイミング決定部259とを含む。読出開始タイミング決定部257は、履歴記録部222が記録したデータ読み出しの履歴に基づいて、先読みによりプログラム10を効率良く実行した場合にそれぞれのデータ読出処理が開始されるべき読出開始タイミングを決定する。先読み開始タイミング決定部259は、それぞれのデータ読出処理について、読出開始タイミングにおいて先読みが完了しているように当該データ読み出しに対応する先読みを開始する先読み開始タイミングを決定する。本実施形態において先読み開始タイミング決定部259は、それぞれの先読みに対応して、当該先読みを開始する条件として、プログラム10が読み出しを要求したデータ量の合計値が満たすべき基準データ量の条件を決定する。
プリフェッチ部265は、先読み手順決定部240により先読みの実行順序および開始タイミングが決定されて先読み手順を受け取った後にプログラム10が実行されたことに応じて、複数の先読みのそれぞれを当該先読み手順に記述された実行順序および開始タイミングにより実行する。プリフェッチ部265は、情報処理装置1900に先読み手順取得モジュールおよびプリフェッチ実行モジュールを実行させることにより実現される先読み手順取得部267およびプリフェッチ実行部269を含む。先読み手順取得部267は、プログラム10が実行されたことに応じて、当該プログラム10についての先読み手順を先読み手順決定部240から取得する。
プリフェッチ実行部269は、先読みを開始する条件が満たされたことに応じて計測部224により呼び出され、先読み手順取得部267が取得した先読み手順によりプログラム10についての複数の先読みのそれぞれを実行する。より具体的には、プリフェッチ実行部269は、計測部224により呼び出されて1つのグループに含まれる1以上の先読みを実行し、待ち状態となる。そして、次に計測部224から呼び出されると、次のグループに含まれる1以上の先読みを実行する。
本実施形態に係るプリフェッチ実行部269は、先読み処理において、プログラム10のデータ読み出しに先立って、ファイル20内の対象データを読み出すことをオペレーティングシステム200に指示する。これによりオペレーティングシステム200は、当該対象データをファイル20からバッファ30に読み込む。この結果、オペレーティングシステム200は、プログラム10からのデータ読み出しを受けると、バッファ30に既に読み込まれた当該対象データを返送することができる。
以上に示した先読み装置210によれば、プログラム10によるデータ読み出しの履歴を取得し、履歴に基づいて適切な先読み手順を生成する。これにより先読み装置210は、当該先読み手順を生成した後にプログラム10が実行されると、当該先読み手順に応じて適切に先読みを行うことができる。また、計測部224は、プログラム10の各データ読み出しに対しては、読み出されたデータ量を合計値に加算する処理および合計値を基準データ量と比較する処理を行えばよい。また、プリフェッチ実行部269は、先読みの開始条件が満たされた場合に呼び出され、グループに属する1以上の先読みをまとめて実行する。これにより先読み装置210は、少ないオーバーヘッドで効率良く先読みを行うことができる。
なお、先読み装置210は、オペレーティングシステム200内のバッファ30を用いて先読みを行なう構成に代えて、先読み装置210内部にバッファ30およびバッファ30を管理するバッファ管理部を有する構成としても良い。この構成においては、プリフェッチ実行部269は、先読み処理において、オペレーティングシステム200内のファイルキャッシュに格納することなく先読み装置210に対して対象データを返送するよう指示しても良い。また、先読み装置210内部に設けるバッファ管理部は、先読みした対象データをバッファ30に記憶し、プログラム10からのデータ読み出しに応じて対象データをプログラム10に返送する。
図3は、本実施形態に係る先読み装置210の動作フローを示す。
まず、先読み手順を生成していない状態でプログラム10が実行されると、履歴記録部222は、プログラム10が実行中に発行したデータ読み出しの履歴をプロファイルとして記録する(S300)。履歴記録部222は、プログラム10がオペレーティングシステム200に対して発行する、例えばファイル20のオープン(open)、クローズ(close)、読み出し(read)、書き込み(write)、ファイルのアクセスポインタの移動(lseek)、およびオープンしているファイルの識別子の複製(dup2)等のハードディスクドライブ2040の入出力処理について、引数、戻り値、スレッド識別子、実行に要した時間等を履歴として記録してよい。また、本実施形態に係る履歴記録部222は、プログラム10の複数の命令処理と、それぞれの命令処理に用いられるデータをそれぞれ読み出す複数のデータ読出処理とを実行したタイミングを履歴に記録する。すなわち例えば履歴記録部222は、プログラム10がデータ読み出しを発行したタイミングと、オペレーティングシステム200が当該データ読み出しに対しプログラム10へデータを返送したタイミングとの間の期間をプログラム10がデータ読出処理を実行した期間として履歴に記録する。そして、各データ読み出しが完了したタイミングから次のデータ読み出しが開始されるまでの間の期間を、直前に完了したデータ読み出しにより読み出されたデータを用いる命令処理の期間とみなして履歴に記録する。
次に、読出開始タイミング決定部257は、先読みを行わない状態でプログラム10が実行された履歴から、先読みによりプログラム10を効率良く実行した場合にそれぞれのデータ読出処理が開始されるべき読出開始タイミングおよびデータ読出処理が完了するべき読出完了タイミングを決定する(S310)。
次に、先読み生成部230は、履歴に記録された複数のデータ読み出しに対応する複数の先読みを生成し、先読み開始タイミング決定部259は生成されたそれぞれの先読みを開始するべき先読み開始タイミングおよび完了するべき先読み完了タイミングを決定する(S320)。次に、先読み最適化部247は、複数の先読みの実行順序を最適化する(S330)。
次に、分割部250は、先読み生成部230により生成され、順序決定部245により実行順序が決定された複数の先読みを、1以上の先読みを含む複数のグループに分割する(S340)。次に、先読み手順決定部240は、S310からS340までの処理により作成された先読み手順をハードディスクドライブ2040またはRAM2020等の記憶装置に記録する(S350)。
次に、先読み手順を生成した状態でプログラム10が実行されると、当該プログラム10と並行して先読みプログラムが実行される(S360)。これにより情報処理装置1900は、先読み装置210としても機能し、プログラム10のデータ読み出しに先立ってファイル20からバッファ30に対象データが先読みする。
図4は、本実施形態に係る先読み装置210におけるS310の処理を示す。
S310の前処理として、先読み生成部230は、履歴記録部222が記録した履歴を読み出し、履歴に記録された複数のデータ読み出しを時系列順に並べる。ここで先読み生成部230は、読み出しの対象となるファイル20毎にデータ読み出しを時系列順に並べてよい。なお、本実施形態に係る先読み生成部230は、履歴記録部222が記録したデータ読み出しのうち、ハードディスクドライブ2040に対する読出命令が発行されないデータ読み出しを除外し、ハードディスクドライブ2040に対する読出命令が発行されるデータ読み出しについて上記の系列を作成する。すなわち、ハードディスクドライブ2040がクラスタ等のブロック単位でアクセスされる記憶装置である場合、先読み生成部230は、1または複数のファイル20を記録した各ブロックのうち、既に読み出されたブロックからデータを読み出すデータ読み出しを除外し、未だ読み出されていないブロックからデータを読み出すデータ読み出しについて上記の系列を作成する。
次に、先読み生成部230は、上記の系列中の複数のデータ読み出しのそれぞれについて、当該データ読み出しの対象データを予め読み出す先読み処理を生成する。ここで先読み生成部230は、これら複数の先読み処理を、データ読み出しと同じ実行順序で並べておく。
次に、タイミング決定部255は、図4に示した処理により、複数の命令処理同士および複数のデータ読出処理同士がそれぞれ履歴に記録された順序で逐次実行されることを前提として、命令処理とデータ読出処理を並行して実行させた場合に各データ読出処理を実行するべきタイミング(時刻)を求める。ここでタイミング決定部255は、それぞれのデータ読出処理を開始すべき読出開始タイミングを、当該データ読出処理により読み出したデータを用いる命令処理を開始する前に当該データ読出処理を完了させ、かつ、当該データ読出処理を当該命令処理以前に実行される他の命令処理と並行に行わせることができる範囲内で、最も遅いタイミングに決定する。
より具体的には、タイミング決定部255は、図中4行目からの繰り返し処理により、先読み生成部230により生成された、複数の先読みを含む暫定的な先読み手順中の先頭の先読みから順に、図中の5行目から13行目の処理を行う。タイミング決定部255は、5行目において、処理対象の先読みPに対応するデータ読み出しの開始タイミングから先読みPの直前の先読みに対応するデータ読み出しの完了タイミングTclrを減じて、先読みPの直前の先読みに対応するデータ読み出しにより読み出したデータを用いる命令処理に要する時間Tcを求める。次に、タイミング決定部255は、6行目において、Tclrを、先読みPに対応するデータ読み出しの完了タイミングに更新する。
次に、タイミング決定部255は、7行目において、データ読み出しの処理時間の合計値Tr_totalに先読みPに対応するデータ読み出しの処理時間を加えて更新する。次に、タイミング決定部255は、8行目から13行目において、先読みPに対応するデータ読み出しの最終読出完了タイミングを求める。より具体的には、タイミング決定部255は、前のデータ読み出しの完了タイミングT_totalに、当該前のデータ読み出しにより読み出されたデータを用いる命令処理を行う時間Tcを加えて、先読みPに対応するデータ読み出しを用いる命令処理をCPU2000が開始できるタイミングT_total+Tcを求める。そして、タイミング決定部255は、このタイミングと、ハードディスクドライブ2040の読み出し速度の制約上先読みPに対応するデータ読み出しを終えることができるタイミングTr_totalとを比較し、より後のタイミングを上記の最終読出完了タイミングとする。
以上の処理により、タイミング決定部255は、それぞれのデータ読み出しについて最終読出完了タイミングを求めることができる。タイミング決定部255は、それぞれのデータ読み出しについての最終読出完了タイミングと、履歴上における当該データ読み出しの処理時間とに基づいて、当該データ読み出しを開始する最終の読出開始タイミングを求める。
図5は、本実施形態に係る先読み装置210におけるS320の処理を示す。
先読み開始タイミング決定部259は、複数の先読み同士がそれぞれ逐次実行されることを前提として、複数のデータ読出処理のそれぞれについて、当該データ読出処理に対し先読み開始タイミング決定部259により決定された読出開始タイミングにおいて当該データ読出処理に対応する先読みが完了しているように複数の先読みの先読み開始タイミングを決定する。
より具体的には、先読み開始タイミング決定部259は、暫定的な先読み手順中の最後の先読みから順に遡って、当該先読みを開始すべき最終の先読み開始タイミングを決定していく。まず先読み開始タイミング決定部259は、2行目において、最後の先読みP0の先読み開始タイミングを、最後のデータ読出処理の最終読出開始タイミングから当該データ読出処理の処理時間を減じた値とする。これにより、先読みP0の完了後にデータ読出処理が開始されるので、プログラム10の入出力処理待ちを最小にすることができる。
以下、繰り返し処理における処理対象の先読みPについて、先読み開始タイミング決定部259は、6行目から11行目において、後続の先読みの最終先読み開始タイミングT_deadlineまたは当該先読みにより読み出したデータを用いるデータ読み出しの最終読出開始タイミングのうち、より前のタイミングから当該先読みPに対応するデータ読み出しの処理時間を減じて、当該先読みPの開始タイミングを決定する。
以上の処理により、先読み開始タイミング決定部259は、それぞれの先読みについての最終先読み開始タイミングを求めることができる。先読み装置210は、このタイミングを満たすようにそれぞれの先読みを順次発行することで、プログラム10の入出力処理待ちを最小にしつつ、命令処理とデータ読出処理とを効率良く並列に処理させることができる。
図6は、本実施形態に係る先読み装置210におけるS330の処理を示す。順序決定部245内の先読み最適化部247は、2以上の先読みが、ファイル20を記憶する記憶装置上の連続する2以上の領域のそれぞれからデータを読み出すことを条件として、当該2以上の先読みを、当該連続領域のデータをバッファ30に先読みする1つの先読みに置き換える。これにより先読み装置210は、それぞれの先読みの最終先読み完了タイミングを満たす範囲で複数の先読みの実行順序を入れ替え、隣接する記憶領域に対する2以上の先読みを連続領域への1つの先読みに置換することができる。この結果、先読み装置210は、個別に先読みを行うのと比較して先読み処理の総時間を短縮し、ハードディスクドライブ2040からのデータ読み出しを最適化することができる。
S330において、先読み最適化部247は、S320の処理の結果得られる先読み手順の先頭の先読みから順に、先読みP1と、次の先読みP2とを選択していく(1、2、23、および24行目)。そして、最初の先読みの開始タイミングを0とし(2行目)、先読みP2が先読み手順の末尾の先読みとなるまで(4行目)、先読みP1の開始タイミングに当該先読みP1の処理時間を加えて次の先読みP2の開始タイミングを求めていく(22行目)。
各先読みP1について、先読み最適化部247は、次に示す処理を行う。
まず、先読み最適化部247は、先読みP1の処理に用いてもよい空き時間free_timeを求める(6行目から8行目)。この空き時間free_timeは、先読みP1の開始タイミングから次の先読みP2の最終開始タイミングまでの間の時間、および、先読みP1の開始タイミングから先読みP1に対応するデータ読み出しが発行されるタイミングまでの間の時間のうち、より小さい値となる。
空き時間free_timeが先読みP1の処理時間より大きいことを条件として、先読み最適化部247は、2以上の先読みを結合して1つの先読みに置換することを試みる(9行目)。すなわち、先読み最適化部247は、先読みP1により読み出されるハードディスクドライブ2040の領域およびハードディスクドライブ2040上で当該領域の前に位置する領域を1つの先読みにより読み出す処理時間lowerと、先読みP1により読み出されるハードディスクドライブ2040の領域およびハードディスクドライブ2040上で当該領域の後に位置する領域を1つの先読みにより読み出す処理時間upperとを求める(11から12行目)。
次に、先読み最適化部247は、評価関数isLowerSelectedおよび評価関数isUpperSelectedにより、先読みP1に前の領域を読み出す他の先読みを結合すべきか、または先読みP1に後の領域を読み出す他の先読みを結合すべきかを評価する(13行目、15行目)。評価関数isLowerSelectedは、処理時間lower、処理時間upper、および空き時間free_timeを用いて、先読みP1の前の領域からデータを読み出す先読みPaが先読み手順の後方に存在し、当該先読みPaを先読みP1に結合して1つの先読みP1に置換することが有効であり、かつ置換後の先読みP1が空き時間free_time以内に完了することを条件として、当該先読みPaを先読みP1に結合すべきことを戻り値として示す。ここで、先読み最適化部247は、後の領域からデータを読み出す先読みPbも先読み手順の後方に存在する場合には、先読みPaを先読みP1に結合した方が先読みPbを先読みP1に結合するより効果的であることを条件として、先読みPaを先読みP1に結合して1つの先読みP1に置換することが有効である旨を示してよい。すなわち例えば、先読み最適化部247は、処理時間lowerが処理時間upperより小さい場合、または処理時間lowerの方が処理時間upperより元の先読みP1の処理時間に近い場合に、先読みPaを先読みP1に結合することが有効である旨を示してよい。
先読み最適化部247は、評価関数isLowerSelectedの処理により、前の領域に対する先読みPaを先読みP1に結合すべきと判断すると、先読みPaおよび先読みP1を結合して、1つの先読みP1に置換する(14行目)。
評価関数isUpperSelectedは、処理時間lower、処理時間upper、および空き時間free_timeを用いて、先読みP1の後の領域からデータを読み出す先読みPbが先読み手順の後方に存在し、当該先読みPbを先読みP1に結合して1つの先読みP1に置換することが有効であり、かつ置換後の先読みP1が空き時間free_time以内に完了することを条件として、当該先読みPbを先読みP1に結合すべきことを戻り値として示す。ここで、先読み最適化部247は、評価関数isLowerSelectedと同様にして、前の領域からデータを読み出す先読みPaも先読み手順の後方に存在する場合には、先読みPbを先読みP1に結合した方が先読みPaを先読みP1に結合するより効果的であることを条件として、先読みPbを先読みP1に結合して1つの先読みP1に置換することが有効である旨を示してよい。
先読み最適化部247は、評価関数isUpperSelectedの処理により、後の領域に対する先読みPbを先読みP1に結合すべきと判断すると、先読みPbおよび先読みP1を結合して、1つの先読みP1に置換する(16行目)。
先読み最適化部247は、以上の処理により、先読みP1の前後の先読みをまとめて1つの先読みP1に置換していく。そして、先読み最適化部247は、更に前後の先読みを先読みP1に結合できなくなると結合処理を終え、次の先読みに対して上記の処理を進める(10行目、18行目)。
以上に示した処理により、先読み最適化部247は、隣接する2以上の領域からそれぞれデータを読み出す2以上の先読みを、これらの2以上の領域を含む連続領域のデータをバッファ30に先読みする1つの先読みに置き換えることができる。この置き換えにおいて、先読み最適化部247は、2以上の先読みがファイル20を記憶する記憶装置上の連続する2以上の領域のそれぞれからデータを読み出すものであること、および、当該2以上の先読みを当該連続領域のデータをバッファ30に先読みする1つの先読みに置き換えてもいずれのデータ読出処理の完了タイミングも当該データ読出処理により読み出されたデータを用いる命令処理の開始タイミングより遅らせないことを条件とする。これにより先読み最適化部247は、プログラム10の処理を遅延させることなく先読みを効率化することができる。
図7は、本実施形態に係る先読み装置210におけるS340の処理を示す。分割部250は、S340の処理により、順序決定部245により実行順序が決定された複数の先読みを1以上の先読みをそれぞれ含む複数のグループに分割する。
分割部250は、それぞれのグループについて、連続する1以上の先読みを順次当該グループに加えていき(2行目から16行目)、生成したグループ毎に計測部224と同期をとるための情報を生成する(17行目)。より具体的には、分割部250は、先読み手順の先頭の先読みを1番目のグループとし(2行目)、当該先読みと同一のグループとすべき後続の先読みを順次グループに加えていく。そして、分割部250は、次のグループとすべき先読みを検出すると、当該先読みを次のグループとして、同様に処理を続ける。
分割部250は、グループに次の先読みPを加えるか否かを、以下のように判断する。まず分割部250は、先読みPの前の先読みを完了するタイミングTp_currentに、先読みPの処理時間を加える。次に、分割部250は、先読みによるバッファ30の使用量を求める。より具体的には、分割部250は、先読みP以前におけるバッファ30の使用量に、先読みPによりバッファ30に新たに読み出されるデータ量を加え(7行目)、先読みPが完了するまでにプログラム10によりデータが読み出され、使用済みとなるデータ量を減じる(8行目)。これにより、分割部250は、当該使用量として、先読みによりバッファ30に読み出され、プログラム10によりバッファ30から読み出されていないデータによるバッファ30の使用量を求めることができる。
次に、分割部250は、次の先読みの最終開始タイミングより、計測部224およびプリフェッチ実行部269の同期に要する時間だけ前のタイミングT_targetを求める(9行目)。このタイミングT_targetは、次の先読みを次のグループに含めた場合に、計測部224が当該グループの実行開始を指示するべき最終タイミングとなる。また、分割部250は、先読みPの後に最初にプログラム10が発行するデータ読み出し処理のタイミングをT_nextReadとする(10行目)。そして、バッファ30の使用量が予め定められた上限のしきい値を超えず、先読みPが完了するタイミングTp_currentが、次の先読みを開始するために計測部224がプリフェッチ実行部269を呼び出すべき最終タイミングT_targetより前であり、かつ、当該タイミングT_targetまでの間にプログラム10からデータ読み出しが発行されることを条件として(11行目)、次の先読みを次のグループの先頭となる先読みとする(12行目)。これにより、分割部250は、バッファ30の使用量が予め定められた上限値を超えないように複数の先読みを複数のグループに分割することができる。ただし、分割部250は、当該グループ分割が適切でない場合には、バッファ30の使用量が上限値を超えるとしても次の先読みを当該グループに追加する。例えば、分割部250は、計測部224からプリフェッチ実行部269への呼び出しのオーバーヘッドにより次の先読みの開始が遅延し最終の先読み開始タイミングを満たせなくなる場合、または、次に計測部224がプリフェッチ実行部269を呼び出すべきタイミングまでの間にプログラム10からデータ読み出しが発行されず、計測部224が動作できない場合には、次の先読みを当該グループに追加する。
次に、分割部250は、タイミング決定部255に図中16行目のS345の処理を行わせ、プログラム10が発行するいずれのデータ読み出しに応じて計測部224からプリフェッチ実行部269を呼び出し、次のグループに含まれる先読みを開始させるかを決定する。これによりタイミング決定部255は、バッファ30の使用量が上限値を超えない範囲で、それぞれのグループについてグループ開始タイミングを決定することができる。さらにタイミング決定部255は、グループに最後に加えられた先読みが完了してから計測部224が次の先読みを実行させるべく先読みプログラム中のプリフェッチ部265を呼び出すまでの間に、プログラム10からデータ読み出しが発行される旨の履歴が記録されていることを条件として、当該次の先読みを次のグループに加えることができる。
図8は、本実施形態に係る先読み装置210におけるS345の処理を示す。タイミング決定部255は、履歴記録部222が記録した履歴に基づいて、図7の処理により分割部250が決定した最後の先読みPの完了後、最終タイミングT_targetまでの間にプログラム10から発行されるデータ読み出しを順に調査する(3行目、4行目)。そして、タイミング決定部255は、いずれのデータ読み出しに応じて計測部224からプリフェッチ実行部269に対して次のグループの先読みの開始を呼び出させるかを決定する。
分割部250は、各データ読み出しについて、当該データ読み出しにより使用され、使用済みとなるデータ量をバッファ30の使用量から減じていく(6行目)。そして、タイミング決定部255は、バッファ30の使用量が予め定められた下限値未満となる場合に、当該データ読み出しに応じて計測部224からプリフェッチ実行部269を呼び出して次のグループに含まれる先読みを開始させることを定める。これにより、タイミング決定部255は、それぞれのグループに対応するグループ開始タイミングを順次決定していく。なお、本実施形態に係るタイミング決定部255は、当該データ読み出しまでにプログラム10が読み出しを要求したデータ量の合計値を、次のグループの実行を開始する開始タイミングを規定する基準データ量とする。
以上に示した分割部250およびタイミング決定部255によれば、複数の先読みを、各先読みの最終開始タイミングを満たすようにグループ化して、各グループの実行を開始すべきグループ開始タイミングを決定することができる。この決定において、タイミング決定部255は、バッファ30の使用量が下限値未満となる場合に、先読みを開始すべきことを決定する。これにより先読み装置210は、先読みによりバッファ30の使用量が増加することによりRAM2020の消費量が増加し、プログラム10の実行性能が低下するのを防ぐと共に、先読みしたデータが不足してプログラム10が入出力待ちとなるのを防ぐことができる。
図9は、本実施形態に係る先読み装置210においてS350の処理により記録される、プログラム10毎の先読み手順の一例を示す。図9の先読み手順は、基準データ量テーブル900、先読みグループテーブル910、1または複数の先読み手順テーブル920、およびファイル管理テーブル930を含むテーブルにより記述され、RAM2020及び/又はハードディスクドライブ2040等の記憶装置に格納される。
基準データ量テーブル900は、複数のグループのそれぞれについて、当該グループに属する先読みを開始するグループ開始タイミングを規定する。本実施形態において、タイミング決定部255は、それぞれのグループに対応して、プログラム10が読み出しを要求したデータ量の合計値が当該グループについて定めた基準データ量を超えたことを条件として当該グループに含まれる先読みを開始することを決定する。そして、タイミング決定部255は、それぞれのグループに対応して定めた基準データ量を、基準データ量テーブル900に格納する。
先読みグループテーブル910は、それぞれのグループに対応して、先読みコマンドの数と、先読みコマンドのパラメータを記憶する先読み手順テーブル920へのポインタを格納する。先読み手順テーブル920は、それぞれのグループに対応して設けられ、当該グループに含まれる1以上の先読みのそれぞれのパラメータを記述する。本実施形態に係る先読み手順テーブル920は、当該パラメータとして、先読みの対象となるファイル20を識別するためのファイル識別情報、ファイル20内での先読み対象となる領域の位置を示す情報、および、先読みするデータ量(サイズ)を示す情報を格納する。
ファイル管理テーブル930は、先読み手順テーブル920に格納されたファイル識別情報のそれぞれに対応するファイル20を管理する。各ファイル20は、ファイル管理テーブル930において、ファイル名、ファイルが記録されたパス名、およびファイル属性の組により管理される。
図10は、本実施形態に係る情報処理装置1900におけるS360の処理を示す。
情報処理装置1900は、プログラム10を実行することにより、プログラム10に記述された複数の命令処理(S1005)と、複数のデータ読み出し処理(S1010)とを交互に繰り返す(S1000、S1015)。これにより情報処理装置1900は、プログラム10に記述された情報処理を行う。
先読み装置210内のデータ読出中継部220は、プログラム10の処理によりデータ読み出しが発行される度に呼び出される。本実施形態に係る先読み装置210は、先読み手順決定部240により先読み手順が生成された後は、履歴記録部222による履歴の記録を行わないようにする。これにより一旦先読み手順を生成した後は、履歴の記録によりプログラム10の実行性能が低下するのを避けることができる。なお、先読み装置210は、プログラム10またはファイル20が更新されたことを条件として、生成した先読み手順を消去し、履歴記録部222により再度履歴を記録させてもよい。
計測部224は、データ読み出しが発行されたことに応じて、プログラム10が読み出しを要求したデータ量を合計値に加算していく(S1020)。そして、計測部224は、データ量の合計値が次に実行すべきグループに対応する基準データ量を超えたことを条件として、プリフェッチ部265を呼び出す(S1025:Yes、S1035)。この呼び出しは、一例としてプリフェッチ実行部269の動作を行う情報処理装置1900上のプロセス又はスレッドに対してシグナルを送ることにより実現される。計測部224は、プリフェッチ部265の呼出し後、更に次のグループへ処理を移行する(S1040)。
S1025の条件を満たさなかった場合、またはS1025の条件を満たしS1040の処理を終えた場合、計測部224は、プログラム10から受けたデータ読み出しをオペレーティングシステム200へ転送し、オペレーティングシステム200からプログラム10へとデータを返送させる(S1030)。
プリフェッチ部265内のプリフェッチ実行部269は、情報処理装置1900上において、プログラム10および計測部224とは独立したプロセス又はスレッドとして動作する。プリフェッチ実行部269は、計測部224からの呼び出しに応じて、次に実行すべきグループに含まれる先読みを実行する。
プリフェッチ実行部269を実現するプログラムは、プログラム10の起動時に起動され、プログラム10と並行して実行される。プリフェッチ実行部269は、複数のグループのそれぞれを、最初のグループから順に処理する(S1050、S1055、S1075)。プリフェッチ実行部269は、各グループについて、まず、当該グループに含まれる1以上の先読みを実行する(S1060)。本実施形態に係るプリフェッチ実行部269は、情報処理装置1900上で動作するオペレーティングシステム200により実現されるバッファ30に対し先読みを発行して、プログラム10が発行するそれぞれのデータ読み出しの対象となるデータを予めキャッシュさせることにより先読みを実行する。そして、先読みの実行を指示されたグループについての先読みを終えると、処理をS1065に進める。
以上に代えて、プリフェッチ実行部269は、バッファ30の使用量が少ないことを条件として、計測部224からの1回の呼び出しに対し、2以上のグループについて先読みを実行してもよい。より具体的には、プリフェッチ実行部269は、まず、計測部224の呼び出しを受けたことに応じてバッファ30の使用量をオペレーティングシステム200から取得する。そして、バッファ30の使用量が予め定められた基準使用量未満であることを条件として、2以上のグループに含まれる先読みを順次実行する。これにより、先読み装置210は、バッファ30の空き容量に応じて予め先読み処理を済ませ、より小さいオーバーヘッドでプログラム10を実行させることができる。
また、プリフェッチ実行部269は、当該グループに含まれる先読みの対象となるデータが既にバッファ30に登録されていると判断したことを条件として、当該グループに含まれる先読みを中止してもよい。より具体的には、プリフェッチ実行部269は、まず、グループ内の各先読みによりファイル20からバッファ30にデータを読み出すのに要した時間を計測する。次に、プリフェッチ実行部269は、少なくとも1つの先読みによりファイル20からバッファ30にデータを読み出すのに要した時間が予め定められた基準時間未満であることを検出したことを条件として、当該グループに属する先読みのうち、実行順序が当該先読みより後の先読みの実行を中止する。これにより、先読み装置210は、不要な先読みの発行を中止し、情報処理装置1900の負荷を低減することができる。
S1060により最後のグループの先読みを終えた場合、プリフェッチ実行部269は、処理を終了する(S1065:Yes)。最後のグループの先読みを終えていない場合、プリフェッチ実行部269は、次のグループの先読みを指示する呼び出しを計測部224から受けるまで待つ(S1070)。
以上に示した先読み装置210によれば、プログラム10が発行するデータ読み出しの履歴に基づいて、プログラム10が使用するデータを予め適切に先読みすることができる。これにより、プログラム10を変更することなくデータの先読みによりプログラム10の処理性能を向上させることができる。
以上、本発明を実施の形態を用いて説明したが、本発明の技術的範囲は上記実施の形態に記載の範囲には限定されない。上記実施の形態に、多様な変更または改良を加えることが可能であることが当業者に明らかである。その様な変更または改良を加えた形態も本発明の技術的範囲に含まれ得ることが、特許請求の範囲の記載から明らかである。
例えば先読み装置210は、複数のプログラム10のそれぞれに対応して図9に示した先読み手順を生成し、先読みを実行してもよい。すなわち、履歴記録部222は、複数のプログラム10のそれぞれについて、当該プログラム10が実行中に発行したデータ読み出しの履歴を記録する。先読み生成部230は、それぞれのプログラム10について、履歴に記録された複数の読み出しに対応する複数の先読みを生成する。先読み手順決定部240は、それぞれのプログラム10について、複数の先読みを必要に応じてグループ化して、複数の先読みの実行順序および開始タイミングを決定する。
そして、プリフェッチ部265内の先読み手順取得部267は、実行順序が決定された後にいずれかのプログラム10が実行されたことに応じて、当該プログラム10についての実行順序を取得する。プリフェッチ実行部269は、取得した実行順序により当該プログラム10についての複数の先読みのそれぞれを実行する。
また、先読み手順決定部240は、プログラム10として、複数のサブルーチン及び/又は関数を含むプログラム全体に対応して先読み手順を生成してもよく、これに代えて各サブルーチン及び/又は関数単位で先読み手順を生成してもよい。
また、先読み装置210は、プログラム10が実行される情報処理装置1900とは別個の装置として実現されてもよい。例えば、先読み装置210は、データベースを管理する情報処理装置であるデータベースサーバ装置と、プログラム10を動作させる情報処理装置であるアプリケーションサーバ装置との間に接続され、アプリケーションサーバ装置上で動作するプログラム10からデータ読み出しに先立って、先読み装置210内に設けたバッファ30に対象データを読み込んでもよい。
また、先読み装置210は、各グループを実行する基準となる基準データ量を、前のグループを実行した後にプログラム10が読み出したデータ量として定めてもよい。
また、計測部224およびプリフェッチ実行部269は、同一のプロセス又はスレッドにより実現されてもよい。この場合、プリフェッチ実行部269は、先読みとして非同期のファイルデータ読み出しをオペレーティングシステム200に発行し、処理をプログラム10に戻してよい。
本発明の実施形態に係る情報処理装置1900のハードウェア構成の一例を示す。 本発明の実施形態に係る情報処理装置1900の機能構成を示す。 本発明の実施形態に係る先読み装置210の動作フローを示す。 本発明の実施形態に係る先読み装置210におけるS310の処理を示す。 本発明の実施形態に係る先読み装置210におけるS320の処理を示す。 本発明の実施形態に係る先読み装置210におけるS330の処理を示す。 本発明の実施形態に係る先読み装置210におけるS340の処理を示す。 本発明の実施形態に係る先読み装置210におけるS345の処理を示す。 本発明の実施形態に係る先読み装置210においてS350の処理により記録される先読み手順を示す。 本発明の実施形態に係る情報処理装置1900におけるS360の処理を示す。
符号の説明
10 プログラム
20 ファイル
30 バッファ
200 オペレーティングシステム
205 プログラム
210 先読み装置
220 データ読出中継部
222 履歴記録部
224 計測部
230 先読み生成部
240 先読み手順決定部
245 順序決定部
247 先読み最適化部
250 分割部
255 タイミング決定部
257 読出開始タイミング決定部
259 先読み開始タイミング決定部
265 プリフェッチ部
267 先読み手順取得部
269 プリフェッチ実行部
900 基準データ量テーブル
910 先読みグループテーブル
920 先読み手順テーブル
930 ファイル管理テーブル
1900 情報処理装置
2000 CPU
2010 ROM
2020 RAM
2030 通信インターフェイス
2040 ハードディスクドライブ
2050 フレキシブルディスク・ドライブ
2060 CD−ROMドライブ
2070 入出力チップ
2075 グラフィック・コントローラ
2080 表示装置
2082 ホスト・コントローラ
2084 入出力コントローラ
2090 フレキシブルディスク
2095 CD−ROM

Claims (13)

  1. プログラムデータの読み出しを発行するのに先立ってファイルからバッファに当該データを先読みする先読み装置であって、
    複数のプログラムのそれぞれについて、当該プログラムが実行中に発行したデータ読み出しの履歴を記録する履歴記録部と、
    それぞれの前記プログラムについて、前記履歴に記録された複数の前記データ読み出しに対応する複数の先読みを生成する先読み生成部と、
    それぞれの前記プログラムがデータ読み出しを発行したことに応じて、前記プログラムが読み出しを要求したデータ量の合計値を計測する計測部と、
    それぞれの前記プログラムについて、前記履歴に基づいて、前記複数の先読みの実行順序を決定する順序決定部と、
    それぞれの前記プログラムについて、前記複数の先読みを、時系列順に連続する1以上の先読みを含む複数のグループに分割する分割部と、
    それぞれの前記プログラムについて、それぞれの前記グループに対応して、当該グループに含まれる前記1以上の先読みを開始するグループ開始タイミングを、前記履歴から決定した、当該グループに含まれる前記1以上の先読み対応するデータ読み出しを開始するべき読出開始タイミングまでにデータがバッファに読み込まれるタイミングに決定する開始条件決定部と、
    前記実行順序および前記グループ開始タイミングが決定された後にいずれかの前記プログラムが実行されたことに応じて、当該プログラムについてのそれぞれの前記グループについて、当該グループに対応する前記グループ開始タイミングに当該グループに含まれる前記1以上の先読みの実行を開始するプリフェッチ部と、
    を備え
    前記開始条件決定部は、それぞれの前記プログラムについて、それぞれの前記グループに対応して、前記グループ開始タイミングを、前記データ量の合計値が満たすべき基準データ量の条件として決定し、前記複数のグループのそれぞれに対応する前記基準データ量および当該グループに含まれる前記1以上の先読みのパラメータを含む先読み順序を記憶装置内のテーブルに格納し、
    前記計測部は、実行中の前記プログラムが読み出しを要求した前記データ量の合計値が次に実行すべき前記グループに対応する前記基準データ量を超えたことを条件として、前記プリフェッチ部を呼び出し、
    前記プリフェッチ部は、
    前記実行順序および前記グループ開始タイミングが決定された後にいずれかの前記プログラムが実行されたことに応じて、前記記憶装置に格納された前記複数のプログラムについての複数の前記先読み手順のうち、当該プログラムについての前記先読み手順を取得する先読み手順取得部と、
    前記計測部の呼び出しに応じて、取得した前記先読み手順により次に実行すべき前記グループに含まれる前記先読みを実行するプリフェッチ実行部と
    を有する先読み装置。
  2. 前記分割部は、先読みにより前記バッファに読み出され、前記プログラムにより前記バッファから読み出されていないデータによる前記バッファの使用量が、予め定められた上限値を超えないように前記複数の先読みを前記複数のグループに分割し、
    前記開始条件決定部は、前記バッファの使用量が前記上限値を超えないようにそれぞれの前記グループについて前記グループ開始タイミングを決定する
    請求項1に記載の先読み装置。
  3. 前記開始条件決定部は、前記バッファの使用量が予め定められた下限値未満となる場合に次のグループに含まれる前記先読みが開始されるように、それぞれの前記グループに対応する前記グループ開始タイミングを決定する請求項2に記載の先読み装置。
  4. 当該先読み装置は、前記プログラムを実行する情報処理装置上において、前記プログラムと並行して先読み用プログラムを実行することにより実現され、
    前記プリフェッチ部は、前記情報処理装置上で動作するオペレーティングシステムにより実現される前記バッファであるファイルキャッシュに対し、それぞれの前記データ読み出しの対象となるデータを予めキャッシュさせることにより対応する前記先読みを実行する
    請求項1に記載の先読み装置。
  5. 前記プリフェッチ部は、
    前記計測部の呼び出しを受けたことに応じて前記ファイルキャッシュの使用量を取得し、
    前記ファイルキャッシュの使用量が予め定められた基準使用量未満であることを条件として2以上の前記グループに含まれる前記先読みを順次実行する
    請求項に記載の先読み装置。
  6. 前記履歴記録部は、前記プログラムの複数の命令処理と、それぞれの命令処理に用いられるデータをそれぞれ読み出す複数のデータ読出処理とを実行したタイミングを前記履歴に記録し、
    前記開始条件決定部は、
    前記複数の命令処理同士および前記複数のデータ読出処理同士がそれぞれ逐次実行されることを前提として、それぞれの前記データ読出処理を開始すべき読出開始タイミングを、当該データ読出処理により読み出したデータを用いる前記命令処理を開始する前に当該データ読出処理を完了させ、かつ、当該データ読出処理を当該命令処理以前に実行される他の前記命令処理と並行に行わせるように決定する読出開始タイミング決定部と、
    前記複数の先読み同士がそれぞれ逐次実行されることを前提として、前記複数のデータ読出処理のそれぞれについて、当該データ読出処理の前記読出開始タイミングにおいて当該データ読出処理に対応する前記先読みが完了しているように前記複数の先読みの先読み開始タイミングを決定する先読み開始タイミング決定部と、
    を有し、
    前記順序決定部は、
    2以上の前記先読みが前記ファイルを記憶する記憶装置上の連続する2以上の領域のそれぞれからデータを読み出すものであり、かつ、当該2以上の先読みを当該連続領域のデータを前記バッファに先読みする1つの前記先読みに置き換えてもいずれの前記データ読出処理の完了タイミングも当該データ読出処理により読み出されたデータを用いる命令処理の開始タイミングより遅らせないことを条件として、当該2以上の先読みを当該連続領域のデータを前記バッファに先読みする1つの前記先読みに置き換える先読み最適化部
    を有する請求項に記載の先読み装置。
  7. 前記分割部は、
    それぞれの前記グループについて、連続する1以上の前記先読みを順次当該グループに加えていき、
    前記先読みにより前記バッファに読み出され、前記プログラムにより前記バッファから読み出されていないデータによる前記バッファの使用量が予め定められた上限値を超え、かつ、前記グループに最後に加えられた前記先読みが完了してから前記計測部が次の前記先読みを実行させるべく前記先読みプログラムを呼び出すまでの間に前記データ読み出しが発行される旨の履歴が記録されていることを条件として、当該次の先読みを当該グループの次の前記グループに加える
    請求項に記載の先読み装置。
  8. 前記順序決定部は、2以上の前記先読みが前記ファイルを記憶する記憶装置上の連続する2以上の領域のそれぞれからデータを読み出すことを条件として、当該2以上の先読みを当該連続領域のデータを前記バッファに先読みする1つの前記先読みに置き換える請求項1に記載の先読み装置。
  9. 前記プリフェッチ部は、少なくとも1つの前記先読みによりファイルから前記バッファにデータを読み出すのに要した時間が予め定められた基準時間未満であることを検出したことを条件として、前記実行順序が当該先読みより後の前記先読みの実行を中止する請求項1に記載の先読み装置。
  10. 情報処理装置上で実行されるプログラムデータの読み出しを発行するのに先立ってファイルからバッファに当該データを先読みする先読み方法であって、
    前記情報処理装置が、複数のプログラムのそれぞれについて、当該プログラムが実行中に発行したデータ読み出しの履歴を履歴記録部に記録する履歴記録段階と、
    前記情報処理装置が、それぞれの前記プログラムについて、前記履歴に記録された複数の前記データ読み出しに対応する複数の先読みを生成する先読み生成段階と、
    それぞれの前記プログラムがデータ読み出しを発行したことに応じて、前記情報処理装置が、前記プログラムが読み出しを要求したデータ量の合計値を計測する計測段階と、
    前記情報処理装置が、それぞれの前記プログラムについて、前記履歴に基づいて、前記複数の先読みの実行順序を決定する順序決定段階と、
    前記情報処理装置が、それぞれの前記プログラムについて、前記複数の先読みを、時系列順に連続する1以上の先読みを含む複数のグループに分割する分割段階と、
    前記情報処理装置が、それぞれの前記プログラムについて、それぞれの前記グループに対応して、当該グループに含まれる前記1以上の先読みを開始するグループ開始タイミングを、前記履歴から決定した、当該グループに含まれる前記1以上の先読み対応するデータ読み出しを開始するべき読出開始タイミングまでにデータがバッファに読み込まれるタイミングに決定する開始条件決定段階と、
    前記実行順序および前記グループ開始タイミングが決定された後にいずれかの前記プログラムが実行されたことに応じて、前記情報処理装置が、当該プログラムについてのそれぞれの前記グループについて、当該グループに対応する前記グループ開始タイミングに当該グループに含まれる前記1以上の先読みの実行を開始するプリフェッチ段階と、
    を備え
    前記開始条件決定段階は、それぞれの前記プログラムについて、それぞれの前記グループに対応して、前記グループ開始タイミングを、前記データ量の合計値が満たすべき基準データ量の条件として決定し、前記複数のグループのそれぞれに対応する前記基準データ量および当該グループに含まれる前記1以上の先読みのパラメータを含む先読み順序を記憶装置内のテーブルに格納し、
    前記計測段階は、実行中の前記プログラムが読み出しを要求した前記データ量の合計値が次に実行すべき前記グループに対応する前記基準データ量を超えたことを条件として、前記プリフェッチ段階を呼び出し、
    前記プリフェッチ段階は、
    前記実行順序および前記グループ開始タイミングが決定された後にいずれかの前記プログラムが実行されたことに応じて、前記情報処理装置が、前記記憶装置に格納された前記複数のプログラムについての複数の前記先読み手順のうち、当該プログラムについての前記先読み手順を取得する先読み手順取得段階と、
    前記計測段階の呼び出しに応じて、前記情報処理装置が、取得した前記先読み手順により次に実行すべき前記グループに含まれる前記先読みを実行するプリフェッチ実行部と
    を有する先読み方法。
  11. 前記分割段階は、先読みにより前記バッファに読み出され、前記プログラムにより前記バッファから読み出されていないデータによる前記バッファの使用量が、予め定められた上限値を超えないように前記複数の先読みを前記複数のグループに分割し、
    前記開始条件決定段階は、前記バッファの使用量が前記上限値を超えないようにそれぞれの前記グループについて前記グループ開始タイミングを決定する
    請求項10に記載の先読み方法。
  12. プログラムデータの読み出しを発行するのに先立ってファイルからバッファに当該データを先読みする先読み装置用の先読みプログラムであって、
    当該プログラムは、前記先読み装置を、
    複数のプログラムのそれぞれについて、当該プログラムが実行中に発行したデータ読み出しの履歴を記録する履歴記録部と、
    それぞれの前記プログラムについて、前記履歴に記録された複数の前記データ読み出しに対応する複数の先読みを生成する先読み生成部と、
    それぞれの前記プログラムがデータ読み出しを発行したことに応じて、前記プログラムが読み出しを要求したデータ量の合計値を計測する計測部と、
    それぞれの前記プログラムについて、前記履歴に基づいて、前記複数の先読みの実行順序を決定する順序決定部と、
    それぞれの前記プログラムについて、前記複数の先読みを、時系列順に連続する1以上の先読みを含む複数のグループに分割する分割部と、
    それぞれの前記プログラムについて、それぞれの前記グループに対応して、当該グループに含まれる前記1以上の先読みを開始するグループ開始タイミングを、前記履歴から決定した、当該グループに含まれる前記1以上の先読み対応するデータ読み出しを開始するべき読出開始タイミングまでにデータがバッファに読み込まれるタイミングに決定する開始条件決定部と、
    前記実行順序および前記グループ開始タイミングが決定された後にいずれかの前記プログラムが実行されたことに応じて、当該プログラムについてのそれぞれの前記グループについて、当該グループに対応する前記グループ開始タイミングに当該グループに含まれる前記1以上の先読みの実行を開始するプリフェッチ部と、
    して機能させ
    前記開始条件決定部は、それぞれの前記プログラムについて、それぞれの前記グループに対応して、前記グループ開始タイミングを、前記データ量の合計値が満たすべき基準データ量の条件として決定し、前記複数のグループのそれぞれに対応する前記基準データ量および当該グループに含まれる前記1以上の先読みのパラメータを含む先読み順序を記憶装置内のテーブルに格納し、
    前記計測部は、実行中の前記プログラムが読み出しを要求した前記データ量の合計値が次に実行すべき前記グループに対応する前記基準データ量を超えたことを条件として、前記プリフェッチ部を呼び出し、
    前記プリフェッチ部は、
    前記実行順序および前記グループ開始タイミングが決定された後にいずれかの前記プログラムが実行されたことに応じて、前記記憶装置に格納された前記複数のプログラムについての複数の前記先読み手順のうち、当該プログラムについての前記先読み手順を取得する先読み手順取得部と、
    前記計測部の呼び出しに応じて、取得した前記先読み手順により次に実行すべき前記グループに含まれる前記先読みを実行するプリフェッチ実行部と
    を有する先読みプログラム。
  13. 前記分割部は、先読みにより前記バッファに読み出され、前記プログラムにより前記バッファから読み出されていないデータによる前記バッファの使用量が、予め定められた上限値を超えないように前記複数の先読みを前記複数のグループに分割し、
    前記開始条件決定部は、前記バッファの使用量が前記上限値を超えないようにそれぞれの前記グループについて前記グループ開始タイミングを決定する
    請求項12に記載の先読みプログラム。
JP2005075672A 2005-03-15 2005-03-16 先読み装置、先読み方法、および先読みプログラム Expired - Fee Related JP4151977B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2005075672A JP4151977B2 (ja) 2005-03-16 2005-03-16 先読み装置、先読み方法、および先読みプログラム
US11/377,518 US7383417B2 (en) 2005-03-16 2006-03-15 Prefetching apparatus, prefetching method and prefetching program product
US12/060,772 US20080301399A1 (en) 2005-03-15 2008-04-01 Prefetching apparatus, prefetching method and prefetching program product

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2005075672A JP4151977B2 (ja) 2005-03-16 2005-03-16 先読み装置、先読み方法、および先読みプログラム

Publications (2)

Publication Number Publication Date
JP2006260067A JP2006260067A (ja) 2006-09-28
JP4151977B2 true JP4151977B2 (ja) 2008-09-17

Family

ID=37099262

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005075672A Expired - Fee Related JP4151977B2 (ja) 2005-03-15 2005-03-16 先読み装置、先読み方法、および先読みプログラム

Country Status (2)

Country Link
US (2) US7383417B2 (ja)
JP (1) JP4151977B2 (ja)

Families Citing this family (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080059722A1 (en) * 2006-08-31 2008-03-06 Arm Limited Handling data processing requests
US7716425B1 (en) * 2006-09-27 2010-05-11 Hewlett-Packard Development Company, L.P. Prefetching data in distributed storage systems
US7669044B2 (en) * 2006-09-29 2010-02-23 Microsoft Corporation Accelerated system boot
JP5068552B2 (ja) * 2007-02-02 2012-11-07 ルネサスエレクトロニクス株式会社 プリフェッチ方法、及びキャッシュ機構用ユニット
JP5076616B2 (ja) * 2007-04-24 2012-11-21 富士通株式会社 プロセッサ及びプリフェッチ制御方法
JP5147296B2 (ja) * 2007-05-31 2013-02-20 株式会社日立製作所 計算機システム、データベース管理方法及びプログラム
KR100900489B1 (ko) * 2007-07-13 2009-06-03 한국과학기술원 디스크 어레이 매스 프리페칭 방법
JP4512201B2 (ja) 2007-12-21 2010-07-28 株式会社日立製作所 データ処理方法及びシステム
KR101522402B1 (ko) * 2008-10-07 2015-05-26 삼성전자주식회사 반도체 디스크 장치 및 그것의 데이터 관리 방법
US8327066B2 (en) 2008-09-30 2012-12-04 Samsung Electronics Co., Ltd. Method of managing a solid state drive, associated systems and implementations
US8874694B2 (en) * 2009-08-18 2014-10-28 Facebook, Inc. Adaptive packaging of network resources
WO2013015835A1 (en) 2011-07-22 2013-01-31 Seven Networks, Inc. Mobile application traffic optimization
US8661067B2 (en) 2010-10-13 2014-02-25 International Business Machines Corporation Predictive migrate and recall
US20120185776A1 (en) * 2011-01-14 2012-07-19 Microsoft Corporation Analyzing resource consumption of software executing during a usage scenario
JP2013008094A (ja) * 2011-06-22 2013-01-10 Sony Corp メモリ管理装置、メモリ管理方法、制御プログラム、および、記録媒体
JP5444290B2 (ja) * 2011-06-29 2014-03-19 アンリツ株式会社 帯域保証装置および帯域保証方法
US9110595B2 (en) 2012-02-28 2015-08-18 AVG Netherlands B.V. Systems and methods for enhancing performance of software applications
US20140045475A1 (en) 2012-08-08 2014-02-13 International Business Machines Corporation Techniques for Improving Cache Effectiveness of Caches with Low User Population
US9207986B2 (en) * 2013-04-11 2015-12-08 Facebook, Inc. Identifying a next window of idle time to perform pre-generation tasks of content portions outside of the displayable region stored in a message queue
KR102070136B1 (ko) * 2013-05-03 2020-01-28 삼성전자주식회사 프리페치를 위한 캐시 제어 장치 및 그 캐시 제어 장치를 이용한 프리페치 방법
CN103309740B (zh) 2013-06-05 2016-12-28 腾讯科技(深圳)有限公司 程序启动方法、装置和设备
JP2015207123A (ja) * 2014-04-18 2015-11-19 富士通株式会社 ストレージ装置、ストレージ制御方法およびストレージ制御プログラム
CN104133691B (zh) * 2014-05-05 2016-08-31 腾讯科技(深圳)有限公司 加速启动的方法及装置
JP2017027479A (ja) 2015-07-24 2017-02-02 富士通株式会社 データ読出し方法及び情報処理システム
CN105930058A (zh) * 2016-04-21 2016-09-07 青岛海信移动通信技术股份有限公司 一种移动终端应用启动方法、装置及移动终端
JP2017228172A (ja) 2016-06-23 2017-12-28 富士通株式会社 情報処理システム
JP2018124915A (ja) 2017-02-03 2018-08-09 富士通株式会社 解析プログラム、解析方法及びストレージシステム
WO2018150539A1 (ja) * 2017-02-17 2018-08-23 株式会社日立製作所 データ取得装置、データ取得方法、およびデータ取得プログラム
US10963249B2 (en) * 2018-11-02 2021-03-30 International Business Machines Corporation Processor prefetcher mode governor for switching between prefetch modes
JP2022107377A (ja) * 2021-01-08 2022-07-21 富士通株式会社 情報処理装置、コンパイル方法、及びコンパイルプログラム

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5490113A (en) * 1994-06-15 1996-02-06 Digital Equipment Corporation Memory stream buffer
JP3175675B2 (ja) * 1997-12-04 2001-06-11 日本電気株式会社 プリフェッチ制御装置
US6134643A (en) * 1997-11-26 2000-10-17 Intel Corporation Method and apparatus for cache line prediction and prefetching using a prefetch controller and buffer and access history
US6311260B1 (en) * 1999-02-25 2001-10-30 Nec Research Institute, Inc. Method for perfetching structured data
US6845501B2 (en) * 2001-07-27 2005-01-18 Hewlett-Packard Development Company, L.P. Method and apparatus for enabling a compiler to reduce cache misses by performing pre-fetches in the event of context switch
US7143399B2 (en) * 2003-01-29 2006-11-28 Sun Microsystems, Inc. Method and apparatus for prefetching memory pages during execution of a computer program
US7284014B2 (en) * 2003-04-07 2007-10-16 Hitachi, Ltd. Pre-fetch computer system

Also Published As

Publication number Publication date
JP2006260067A (ja) 2006-09-28
US20070005905A1 (en) 2007-01-04
US7383417B2 (en) 2008-06-03
US20080301399A1 (en) 2008-12-04

Similar Documents

Publication Publication Date Title
JP4151977B2 (ja) 先読み装置、先読み方法、および先読みプログラム
US5349656A (en) Task scheduling method in a multiprocessor system where task selection is determined by processor identification and evaluation information
US7769952B2 (en) Storage system for controlling disk cache
US5666114A (en) Method and means for managing linear mapped address spaces storing compressed data at the storage subsystem control unit or device level
US7529903B2 (en) Systems and methods for memory migration
US8707308B1 (en) Method for dynamic management of system resources through application hints
US20150039837A1 (en) System and method for tiered caching and storage allocation
JP5989908B2 (ja) 不揮発性メモリにコードをキャッシュする方法、システムおよび装置
US20090132621A1 (en) Selecting storage location for file storage based on storage longevity and speed
US20070033240A1 (en) Scheduling garbage collection
US7890675B2 (en) Apparatus, system, and method for real time job-specific buffer allocation
JP4621786B2 (ja) 情報処理装置、並列処理最適化方法およびプログラム
EP2494436A1 (en) Allocating storage memory based on future use estimates
JP2007233783A (ja) ストレージ管理方法およびストレージ管理サーバ
KR20140033448A (ko) 수정되지 않은 애플리케이션을 위한 메모리 관리 모델 및 인터페이스
JP5261809B2 (ja) 計算機システム及びデータベース管理システムプログラム
JP5098120B2 (ja) 計算機システム及びデータベース管理システムプログラム
JP3642772B2 (ja) コンピュータ装置及びプログラム実行方法
JP5577518B2 (ja) メモリ管理方法、計算機及びメモリ管理プログラム
JPS617952A (ja) 活動トレ−ス収集装置
JP3898369B2 (ja) ページング処理装置および記録媒体
JP3259682B2 (ja) プログラム処理装置
CN118312102A (en) IO request processing method and device, storage equipment and storage medium
JP2022093083A (ja) 情報処理装置及び制御プログラム
JPH0734186B2 (ja) キヤツシユシステム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20071204

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20071220

A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20080118

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20080129

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20080229

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20080507

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20080527

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: 20080624

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

RD14 Notification of resignation of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7434

Effective date: 20080626

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20080630

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110711

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110711

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120711

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130711

Year of fee payment: 5

LAPS Cancellation because of no payment of annual fees