JP3469383B2 - データ先読み制御方法及び情報処理装置 - Google Patents

データ先読み制御方法及び情報処理装置

Info

Publication number
JP3469383B2
JP3469383B2 JP34390695A JP34390695A JP3469383B2 JP 3469383 B2 JP3469383 B2 JP 3469383B2 JP 34390695 A JP34390695 A JP 34390695A JP 34390695 A JP34390695 A JP 34390695A JP 3469383 B2 JP3469383 B2 JP 3469383B2
Authority
JP
Japan
Prior art keywords
block
data
read
processing
block number
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
JP34390695A
Other languages
English (en)
Other versions
JPH09185462A (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.)
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 JP34390695A priority Critical patent/JP3469383B2/ja
Publication of JPH09185462A publication Critical patent/JPH09185462A/ja
Application granted granted Critical
Publication of JP3469383B2 publication Critical patent/JP3469383B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、ランダムアクセス
可能な二次記憶装置を有する電子計算機システム(情報
処理装置)において、前記二次記憶装置に格納されたフ
ァイルデータ等の先読み制御に関する。
【0002】
【従来の技術】現在の電子計算機システムにおいては、
主記憶装置とハードディスク(HD)などの二次記憶装
置のアクセス速度には大きな差がある。一般に、ファイ
ルデータはHDなどの二次記憶装置に格納され、これを
アクセスする場合は、一旦、主記憶装置へ読み込む必要
がある。ファイルアクセスのオーバヘッドの大部分は、
この二次記憶装置から主記憶装置へのデータ転送による
ものである。このオーバヘッドを軽減するため、従来
は、二次記憶装置上のファイルデータがアプリケーショ
ンプログラム(AP)によりシーケンシャルにアクセス
されている場合に限り、最後に読み込んだブロックの次
の1ブロック分のデータだけ、オペレーティングシステ
ム(OS)が予め二次記憶装置から主記憶装置へ転送す
る先読みの手法を用いていた。これによれば、APが次
のブロックのリード要求を発行する時点では、既に二次
記憶装置から主記憶装置へ該当ブロックのデータ転送が
開始されており、ファイルアクセスを高速化することが
できる。
【0003】
【発明が解決しようとする課題】上記従来技術は、シー
ケンシャルアクセス以外の先読みという点において配慮
されておらず、シーケンシャルアクセス以外の、いわゆ
るファイルデータ等を不連続にアクセスするランダムア
クセスでは著しく性能が低下するという問題があった。
本発明の目的は、従来ランダムアクセスと見なされてい
たアクセスパターンにおいても、データの先読みを可能
にし、ファイルデータアクセス等を高速化することにあ
る。
【0004】また、上記従来技術では、1ブロックしか
先読みしておらず、二次記憶装置にハードディスクを用
いる場合、ディスクヘッドのシークや回転待ちが頻繁に
発生するという問題があった。本発明の目的は、かかる
ディスクヘッドのシークや回転待ちを減少させデータ転
送効率を向上させるにある。
【0005】更に、本発明の他の目的は、先読みの予測
が外れて、先読みしたデータをアプリケーションプログ
ラムがアクセスしなかったときの損害を軽減することに
ある。また、本発明は、APからは従来のアクセス方法
と同様の手続きによりファイルデータ等の先読みが実行
可能であることを目的とする。
【0006】
【課題を解決するための手段】ランダムアクセスとは、
ファイル等の連続していないオフセット中のデータをア
クセスすることで、決してすべてが無規則というわけで
はない。データベースなどを扱うアプリケーションプロ
グラム(AP)はランダムアクセスでありながら、何等
かの規則性をもっている場合が多い。
【0007】そこで、本発明では、二次記憶装置に格納
されたデータを連続・不連続にアクセスするAPのデー
タアクセスパターンを、OSにて解析して、近い将来ア
クセスされるデータブロックを予測し、当該ブロックの
データを二次記憶装置から主記憶装置へ先読みする。
体的には、あるブロックのデータの二次記憶装置から主
記憶装置へのデータ転送処理(I/O処理)中に、先読
みするブロックのブロック番号をI/O処理待ちキュー
に登録しておき、前記あるブロックのI/O処理後に、
前記I/O処理待ちキューに登録されたブロック番号の
ブロックのデータをまとめてI/O処理する。
【0008】高い確率で将来アクセスすると予測できる
データアクセスパターンに対して先読みを実施すること
により、先読みしたデータをAPがアクセスする時点で
既にデータは主記憶装置上に転送済みもしくは転送中と
いうことになる。それによって、APの二次記憶装置上
から主記憶装置上へのデータ転送待ち時間は短縮して、
ファイルアクセス等を高速化することができる。
【0009】また、予測的中の確率が増加するにつれ
て、一回に先読みするデータ量を徐々に増加させる。一
回の先読みデータは、二次記憶装置上から一括して転送
されるため、ディスクの回転待ち時間とシーク時間が減
少し、ファイルアクセス等は高速化することができる。
さらに、低確率時は一回に先読みするデータ量が比較的
少ないため、予測が外れて先読みしたデータをAPがア
クセスしなかったときの損害を軽減することができる。
【0010】また、APはOSにREADシステムコー
ルを発行することによってファイル,データ等を読み込
むが、READシステムコールのAPインタフェースを
変えることなく、OSにて先読みを実現するため、AP
は従来のアクセス方法を変更する必要がない。
【0011】
【発明の実施の形態】以下、本発明の実施の形態の一実
施例について図面により詳細に説明する。
【0012】図1は、本発明の一実施例のシステム全体
の概略構成図である。図において、中央処理装置(CP
U)10、主記憶装置20及びハードディスク(HD)
など二次記憶装置30ではシステムバス40に接続され
ている。主記憶装置20上には、各種のアプリケーショ
ンプログラム(AP)21、オペレーティングシステム
(OS)22、AP用のバッファ(APバッファ)2
3、OSが管理するバッファ(システムバッファ)24
などが存在する。また、二次記憶装置30にはディスク
キャッシュ機構31が存在する。これらの構成は従来と
同様である。本発明に関係する構成は、OS22の機能
の一つとして先読み制御のためのアクセスパターン解析
部220と、OS22の該アクセスパターン解析部22
0で使用するために、主記憶装置20上にあらたに設け
た特定記憶領域25である。後述するように、外部記憶
装置30から先読みしたデータ(ブロック)は、OS2
2が管理するシステムバッファ24に保持して、AP2
1からそのデータに対するREADシステムコールが発
行された時点で、システムバッファ24からAPバッフ
ァ23にコピーする。
【0013】図2はシステムバッファの概念図である。
システムバッファはキューヘッドを先頭に複数のシステ
ムバッファがチェインされた構成になっている。システ
ムバッファは、APからのREAD/WRITE要求あ
るいは後述するOSでの先読みREAD要求の発行時、
OSにより割り当てられる。該システムバッファ1個
で、1ブロックのデータを保持する。1ブロックのサイ
ズは通常8Kバイトである。各システムバッファは、シ
ステムバッファのキューチェインポインタ、データ転送
の完了やアクセス種別(READ/WRITE)等を示
すフラグ、READ/WRITE要求のブロック番号、
主記憶装置(メモリ)上の実際のデータ格納場所を示す
メモリアドレス等の情報を保持している。未割当てのシ
ステムバッファでは、フラグ、ブロック番号、メモリア
ドレス等は空である。このように、システムバッファ
は、実際にデータを格納する領域とその管理情報を格納
する領域の総称である。
【0014】図3は特定記憶領域25の構成例を示す図
である。特定記憶領域25は、READブロック番号記
憶領域251と先読みブロック数記憶領域252を1組
として、N組の記憶領域を有している。READブロッ
ク番号記憶領域251には、APがREAD要求したブ
ロック番号を格納する。ここでいうブロックとは、二次
記憶装置からリードするデータの単位で、ここでは8K
Bである。また、ブロック番号とは、二次記憶装置に格
納されているファイルの先頭からのブロックの通し番号
(ブロックアドレス)である。APが更に連続したブロ
ックをREAD要求した場合は、READブロック番号
記憶領域251のブロック番号を該連続したブロック番
号に更新する。先読みブロック数記憶領域252には、
READブロック番号記憶領域251に格納されたブロ
ック番号のブロックをリードしたときに先読みしたブロ
ック数を格納する。従って、ある記憶領域内のREAD
ブロック番号記憶領域と先読みブロック数記憶領域は1
対1に対応している。特定記憶領域25は、N組の記憶
領域を有しているため、ファイル中の連続していないブ
ロック番号を最大N個記憶することができ、その各々に
対応して先読みしたブロック数を記憶することができ
る。これにより、連続していないブロックのアクセス
(ランダムアクセス)において先読みを実行することが
でき、更に先読みブロック数を可変にすることができ
る。従来はREADブロック番号記憶領域が1つだけし
かなかったので、常にAPがREAD要求した最後のブ
ロック番号だけしか記憶できず、また、先読みブロック
数記憶領域をもたなかった。従って、連続したブロック
のアクセス(シーケンシャルアクセス)においてのみ先
読みが実行でき、また、先読みブロック数も1個だけで
あった。
【0015】次に、本発明の先読みのアルゴリズムを、
図4のフローチャートで説明する。なお、先読みブロッ
ク数は最大8ブロックとする。
【0016】図1において、AP21がREADシステ
ムコールでブロック番号MのREAD要求を発行する
と、OS22のアクセスパターン解析部220(以下、
単にOSという)は、特定記憶領域25の各記憶領域に
おけるREADブロック番号記憶領域251のいずれか
にブロック番号M−1が登録されているか判定する(ス
テップ401)。登録されている場合は、今回のREA
D要求は過去にAP21がREADしたブロックと連続
ブロックのアクセスなので、更に次の連続するブロック
も将来アクセスされる可能性が高いと予測して先読み処
理に移行する。まず、当該記憶領域のREADブロック
番号記憶領域251のブロック番号をM−1からMに書
き換える(ステップ402)。次に、当該記憶領域のR
EADブロック番号記憶領域251に対応した先読みブ
ロック数記憶領域252に登録されているブロック数が
8未満か判定する(ステップ403)。8未満であれ
ば、該先読みブロック数記憶領域252のブロック数に
1を加算する(ステップ404)。次に、ブロック番号
M+1から該先読みブロック数記憶領域252に登録さ
れているブロック数分、先読みを実行する(ステップ4
05)。当該先読みブロック数記憶領域252のブロッ
ク数が8に達していれば、ステップ404をスキップす
る。すなわち、先読みブロック数を徐々に増加させ最大
8ブロックまで先読みする。
【0017】一方、いずれのREADブロック番号記憶
領域にもブロック番号M−1が登録されていない場合に
は、次にブロック番号Mが登録されているか判定する
(ステップ406)。登録されている場合は、過去のR
EADシステムコールで同一ブロックをREADしてい
ることになり、その時点で先読み処理が実行されている
ので、今回は先読みしない(ステップ409)。また、
登録されていない場合は、今回のREAD要求は過去の
READシステムコールでREADしたブロックとの連
続性がないため、この場合も先読みはしない。ただし、
この場合は、特定記憶領域25内の記憶領域の一番長く
更新されていないREADブロック番号記憶領域のブロ
ック番号をMに書き換え(ステップ407)、当該記憶
領域のREADブロック番号記憶領域に対応した先読み
ブロック数記憶領域に0を登録する(ステップ40
8)。
【0018】二次記憶装置30から先読みしたデータ
は、OS22が管理するシステムバッファ24に保持し
て、AP21からそのデータに対するREADシステム
コールが発行された時点で、システムバッファ24から
APバッファ23にコピーする。システムバッファの数
には制限があるため、先読みしたシステムバッファは一
旦開放される。従って、先読みしたシステムバッファを
長時間、READシステムコールでREADしなければ
システムバッファが再利用され、先読みしたデータが消
滅する。すなわち、連続ブロックのREADであって
も、ブロックとブロックのアクセスの時間的間隔が空い
ている場合は先読みする価値がないため、一番長く更新
されていないREADブロック記憶領域を再利用するの
が妥当である。また、以上のことから、記憶領域25の
記憶領域の数Nはシステムバッファの総数によって決定
される。先読みによって、過去に先読みしてまだアクセ
スされていないシステムバッファを再利用することは無
駄になるので、記憶領域の数としては、 記憶領域の数N = システムバッファ数/先読みブロッ
ク数の最大値 が妥当である。なお、一番長く更新されていない記憶領
域の判定には、いわゆるLRUアルゴリズムを利用すれ
ばよい。
【0019】図5は、シーケンシャルアクセスにおい
て、本発明によるアクセスパターン解析アルゴリズムを
適用して先読みを実施した例である。便宜上、図5で
は、従来の場合も本発明と対比して示している。ここ
で、ブロック番号は二次記憶装置上のファイルの先頭か
らの通し番号、アクセス番号はAPがREAD要求した
ブロックの順序である。図5はシーケンシャルアクセス
の例であり、ファイルの先頭から順にREADシステム
コールで1ブロックずつREADするとしている。RE
AD要求ブロック番号は、APがREAD要求したブロ
ックの番号で、ここでは、1,2,3,4…である。先
読みブロック番号は、APがREAD要求を発行したと
きに先読みしたブロック番号で、従来と本発明の実施例
の場合を対比させてすべて挙げている。〈〉内のブロッ
ク番号は過去のREAD要求で既に先読み発行済みなの
で、先読みの対象にはならない。本発明では、APから
READ要求のあった次のブロックから最大8ブロック
先読みするので先読みブロック番号は重なってゆく。記
憶領域は、従来はREADブロック番号記憶領域が一個
だけであり、該記憶領域をMで示す。一方、本発明で
は、記憶領域は、図3で説明したREADブロック記憶
領域251と先読みブロック数記憶領域252からな
り、これがN組ある。M1は、N組ある記憶領域の或る
一つを示している。記憶領域M、M1の内容は、当該R
EADシステムコールでの更新後の値である。
【0020】図5より、従来では常に次の1ブロックを
先読みしており、これに対して、本発明では、先読みブ
ロック数が1ブロックずつ増加し、実施例では最大8ブ
ロックになっているのがわかる。すなわち、シーケンシ
ャルアクセスにおいては、従来でも本発明でも先読みは
実施される。ただし、先読みブロック数が異なる。
【0021】図6は、ランダムアクセスにおいて、本発
明によるアクセスパターン解析アルゴリズムを適用し先
読みを実施した例である。図6でも、従来の場合を本発
明と対比して示している。図6中の意味は図5と同じで
ある。ただし、記憶領域は本発明ではM1〜M3の3つ
を使用している。即ち、記憶領域は最大N組使用可能で
あるが、図6のランダムアクセスパターンでは3つで足
りる。
【0022】図6に示すように、ランダムアクセスで
は、アクセス番号順にみるブロック番号は連続していな
い。但し、ファイルの一部分だけみると、アクセスした
ブロックが連続しているのがわかる。例えば、アクセス
番号1,4,7,10,13のREADアクセス要求で
ブロック1,2,3,4,5がアクセスされる。本発明
では、このようにランダムアクセスパターンに対して先
読みを実施することができるが、従来は全く先読みを実
施できない。
【0023】図7は、図1のシステムを制御の層構成で
示した図である。本実施例では二次記憶装置にHDを使
用している。図7に示すように、システム全体はAP、
OS、該OSの一部のHDドライバのソフトウエアで構
成される制御と、二次記憶装置のHDのハードウエアで
構成される制御の、合わせて4つの層に分類できる。本
発明の最大の特徴は、OS層のアクセスパターン解析で
あり、これは図4から図6により説明した如くである。
その他の部分は、APが二次記憶装置からデータを読み
込むための従来からの構成である。
【0024】APはSEEKシステムコール、READ
システムコールを発行する。SEEKシステムコールは
ファイル中のアクセスするデータのオフセットを指定
し、READシステムコールはファイルデータを格納す
るAPバッファおよびデータ転送サイズを指定する。O
Sは、アクセスパターン解析、システムバッファ制御機
構およびREAD要求発行などを含む。アクセスパター
ン解析では、図4のフローチャートを実行して、APの
ファイルデータのアクセスパターンを解析し、先読み実
施の可否を予測する。さらに、先読みする場合は先読み
のデータ量を決定する。システムバッファ制御機構は、
二次記憶装置とAPバッファの中間に位置するシステム
バッファを制御する。即ち、二次記憶装置上のファイル
データを一旦システムバッファに読み込み、システムバ
ッファからAPバッファにコピーする。READ要求発
行では、APがREAD要求したデータブロック、およ
び、アクセスパターン解析で先読みの実施が予測された
場合、先読みのデータブロックのREAD要求をHDド
ライバに対して発行する。図2で説明したように、シス
テムバッファ1個では1ブロックのデータを保持でき
る。1ブロックのサイズは通常8KBである。HDドラ
イバは、二次記憶装置のHDを制御する部分で、HDに
対してOSからREAD要求のあったデータブロックの
I/O要求を発行する。I/O要求とはここでは、HD
に対するデータ転送要求(HDからシステムバッファへ
のデータ転送)を意味する。HDドライバはブロックマ
ージ機能をもつ。ブロックマージ機能とは複数の物理的
に連続したブロックのREAD要求を一まとめにして、
HDに対してI/O要求を発行する機能である。また、
HDドライバはシステムバッファのキュー管理機能をも
つ。図2で説明したように、システムバッファは複数キ
ューイングされており、HDドライバは、該キューへI
/O発行待ち、I/O処理完了等の登録を行う。
【0025】HDはファイルデータが格納されているデ
バイスであり、ディスクキャッシュ機構をもつ。HDは
ディスクヘッドの位置決めをした後、データを一旦ディ
スクキャッシュにのせて、ディスクキャッシュからシス
テムバッファにデータ転送する。データ転送はDMA
(Direct Memory Access)を使用するため、データ
転送中はCPUは他の処理を平行して実行できる。ディ
スクキャッシュはFIFO(First In First Out)
になっており、システムバッファへデータを転送する
と、HDドライバから次のI/O要求がなくとも連続す
る次のデータをディスクキャッシュ上にのせてゆく。た
だし、ディスクキャッシュ機構をもたないHDもある。
本発明はディスクキャッシュ機構の有無に関係なく効果
を発揮する。
【0026】図8は、図7で説明した層構成におけるR
EADシステムコールのファイルデータの流れを示した
ものである。ファイルデータはディスクトラック、ディ
スクキャッシュ、システムバッファ、APバッファの順
序で流れてゆく。図8は、APがREADシステムコー
ルでAPバッファ(231とする)に対して1ブロック
のREADを要求し、OSがアクセスパターン解析の結
果4ブロックの先読みを実施した例である。
【0027】OSは、最初にシステムバッファ(241
とする)にAPからREAD要求のあったブロックの情
報を設定し(システムバッファの割当て)、HDドライ
バにREAD要求を発行する。HDドライバはシステム
バッファ(241)のI/O要求をHDに発行した後、
直ちにOSに制御を戻す。HDは、ディスクヘッドの位
置決めをした後、ディスクトラック301のデータをデ
ィスクキャッシュ310に転送し、該ディスクキャッシ
ュ310からシステムバッファ241にデータをDMA
転送する。その間OSは先読みのブロック情報を、ここ
ではシステムバッファ242からシステムバッファ24
5に設定し、HDドライバにREAD要求を発行する。
HDドライバは、システムバッファ242からシステム
バッファ245のブロックをマージし、システムバッフ
ァ241のI/O処理終了がHDから通知されると、こ
のマージしたシステムバッファのI/O要求を一括して
HDに発行する。そして、再びOSに制御が戻る。OS
はシステムバッファ241のデータをAPバッファ23
1にコピーして、APバッファ231に対するREAD
システムコールはリターンする。その間、システムバッ
ファ242からシステムバッファ245のI/O処理
は、HD層によって平行して実行されている。
【0028】次に、APが例えばAPバッファ232に
対するREADシステムコールを発行すると、システム
バッファ242のREAD要求は既にAPバッファ23
1に対するREADシステムコールでOSが発行済みの
状態にある。従って、システムバッファ242のREA
D要求発行は省略され、システムバッファ242のI/
O処理終了を待つだけでREADシステムコールはリタ
ーンする。APバッファ231に対するREADシステ
ムコールの発行とAPバッファ232に対するREAD
システムコールの発行が時間的に間隔がある場合、AP
バッファ232に対するREADシステムコールの発行
時にはシステムバッファ242のI/O処理は既に終了
し、システムバッファ242は開放されている。ただ
し、システムバッファの数は先読みしたシステムバッフ
ァ数より十分に大きいため、先読みしたシステムバッフ
ァが直ぐに他の目的で再利用されることはない。再利用
されていなければOSはシステムバッファからAPバッ
ファにデータ転送するだけでREADシステムコールを
リターンさせることができる。
【0029】次にディスクキャッシュ310の役割を説
明する。システムバッファ241のI/O終了からシス
テムバッファ242のI/O発行までには僅かな時間的
な間隔があり、その間ディスクは僅かに回転する。その
ため、ディスキャッシュ310がない場合は、システム
バッファ242のデータを読み込むために1回転待つ必
要がある。ディスクキャッシュ310があると、システ
ムバッファ241のデータ転送に続き、システムバッフ
ァ242のデータも自動的にディスクトラック301か
らディスクキャッシュ310に転送されるため、1回転
待つことなく、ディスクキャッシュ310からシステム
バッファ242へデータ転送することができる。
【0030】HDドライバのブロックマージ機能は、デ
ィスクキャッシュ310がない場合に最大の効果を発揮
する。即ち、図8の例では、ディスクキャッシュ310
がない場合、1回転の待ちで済むが、HDドライバのブ
ロックマージ機能がないと、システムバッファ242か
らシステムバッファ245は全て分割されたI/O処理
要求発行となるので、合計4回転待つことになる。
【0031】図9と図10に、READシステムコール
の全体のフローチャートを示す。READシステムコー
ル処理は、READシステムコールの延長での処理(ト
ップハーフ処理)とI/O処理終了時に通知される割り
込みの延長でのHDドライバ処理(ボトムハーフ処理)
に分かれる。I/O処理とは、ここではHDのハードウ
エアレベルでの処理を意味し、I/O処理終了とはHD
からシステムバッファへのデータ転送が完了したことを
意味する。
【0032】図9はトップハーフ処理のフローチャート
である。APがREADシステムコールでブロック番号
MにREAD要求を発行すると、OSはシステムバッフ
ァのキューをサーチして、ブロック番号MのI/O処理
が既に完了しているか判定する(ステップ901)。完
了しているのは、ブロック番号Mが過去に先読みされて
いて、さらにシステムバッファ上に既にデータ転送済み
の場合であり、このときは直ちに先読み処理を実行す
る。完了していない場合は、次に、同様にシステムバッ
ファのキューをサーチして、ブロック番号MのREAD
要求が既にOSからHDドライバに発行されているか判
定する(ステップ902)。発行されているのは、ブロ
ック番号Mが過去に先読みされている場合であり、この
ときは直ちに先読み処理を実行する。発行されていない
のは、ブロック番号Mが過去に先読みされていない場合
であり、システムバッファを割り当て、ブロック番号M
のREAD要求をOSからHDドライバに発行する(ス
テップ903)。HDドライバはHDがビジーか判定す
る(ステップ904)。ビジーとは、HDが他のブロッ
クのI/O処理中であることを意味する。ビジーでない
場合はブロック番号MのI/O要求をHDドライバから
HDに発行する(ステップ906)。ビジーの場合は、
I/O発行待ちキュー(I/O処理待ちキュー)にブロ
ック番号Mを登録する(ステップ905)。キューに登
録したI/O要求の処理は、図10で説明するボトムハ
ーフ処理で実行される。
【0033】次に、先読みするか判定する(ステップ9
07)。先読み判定のアルゴリズムは図4で説明した如
くである。先読みする場合は、先読みブロック数を決定
する(ステップ908)。次に、システムバッファキュ
ーをサーチして、先読みブロックのI/O処理が既に完
了しているか判定する(ステップ909)。完了してい
るのは、過去の先読みブロックと重複していて、さらに
システムバッファへのデータ転送済みの場合である。先
読みブロックの重複については、図5および図6で説明
した如くである。完了していな場合は、次に、同様にシ
ステムバッファキューをサーチして先読みブロックのR
EAD要求が既にOSからHDドライバに発行されてい
るか判定する(ステップ910)。発行されているの
は、過去の先読みブロックと重複している場合である。
発行されていない場合は、システムバッファを割り当
て、先読みブロックのREAD要求をOSからHDドラ
イバに発行する(ステップ911)。HDドライバはH
Dがビジー状態か判定する(ステップ912)。ビジー
でない場合は先読みブロックのI/O要求を発行する
(ステップ914)。ビジーの場合は、I/O発行待ち
キュー(I/O処理待ちキュー)に先読みブロックを登
録する(ステップ913)。
【0034】次に、ブロック番号MのI/O処理が既に
完了しているか判定する(ステップ915)。完了して
いない場合は、ブロック番号MのI/O処理を待ち(ス
テップ916)、完了していれば、システムバッファか
らAPバッファへブロック番号Mのデータをコピーして
(ステップ917)、READシステムコールはリター
ンする。
【0035】図10はボトムハーフ処理のフローチャー
トである。ボトムハーフ処理はI/O終了割り込みを契
機にHDドライバによって実行される。まず、HDドラ
イバはトップハーフにI/O終了を通知する(ステップ
1001)。この通知により、図9のステップ916は
待ち状態を開放される。次に、システムバッファキュー
をサーチして、I/O発行待ちキューにエントリがある
か判定する(ステップ1002)。I/O発行待ちキュ
ーには、図9のステップ905および913でエントリ
される。エントリされている場合は、I/O要求をHD
に発行する(ステップ1003)。このとき、キューに
複数の連続ブロックのエントリがある場合はブロックマ
ージしてI/Oを要求を発行する。
【0036】図11から図14は本発明の先読みにより
HDの回転待ちとシーク回数が減少していることを検証
したものである。
【0037】図11は、シーケンシャルアクセスにおけ
る本発明での検証である。READ要求ブロックは、A
PがREADシステムコールで要求したブロック、先読
みブロックはそのときに先読みしたブロックである。I
/O発行は、そのREADシステムコールの延長でI/
O処理要求が発行されたか否を示すもので、マージブロ
ック数はI/O処理発行時にマージされたブロック数で
ある。回転待ちは、そのI/O処理でデータをHDから
読み込む際にディスクの回転待ちがあったかを示すもの
であり、ディスクキャッシュがある場合とない場合をそ
れぞれ示している。空欄は回転待ちがなかったことを意
味する。
【0038】READ要求ブロック1の場合は、1回目
のアクセスなので、ブロック番号1だけをI/O処理要
求発行する。この際、ディスクキャッシュの有無に関係
なく回転待ちがある。シークに関してはシーケンシャル
アクセス時は無視する。READ要求ブロック2の場合
はブロック番号2のI/O処理要求を発行したのち、ブ
ロック番号3をI/O処理要求発行待ちとしてシステム
バッファキューに登録する。この際、ディスクキャッシ
ュがある場合は回転待ちはないが、ディスクキャッシュ
がない場合は回転待ちがある。以下、I/O処理要求発
行をともなうとき、ディスクキャッシュがある場合は回
転待ちはないが、ディスクキャッシュがない場合は回転
待ちがある。ブロック番号2のI/O処理が終了する
と、直ちにシステムバッファキューに登録されているブ
ロック番号3のI/O処理要求が発行される。READ
要求ブロック3の場合はブロック番号3は既にI/O処
理中にあり、先読みブロック4、5をキューに登録す
る。ブロック番号3のI/O処理が終了すると、ブロッ
ク番号4、5がマージされてI/O処理要求発行され
る。READ要求ブロック4の場合はブロック番号4は
既にI/O処理中にあり、先読みブロック6、7をシス
テムバッファキューに登録する。ブロック番号4のI/
O処理が終了するとブ、ロック番号6、7がマージされ
てI/O処理要求が発行される。READ要求ブロック
5の場合は、ブロック番号5はブロック番号4とマージ
されていたために、既にI/O処理終了済みであり、先
読みブロック8、9をシステムバッファキューに登録す
る。このときブロック番号6、7はI/O処理中にあ
り、このシステムコールの延長ではI/O処理要求は発
行されない。
【0039】以下、同様の動作を繰り返してマージブロ
ック数が増加し、4、5ブロックで収束する。I/O処
理要求発行回数はマージブロック数分減少し、回転待ち
回数もそれにともなって減少する。READ要求ブロッ
ク21の時点で、回転待ちの回数はディスクキャッシュ
がある場合で1回、ない場合で9回となる。READ要
求ブロック12と21は状態がすべて一致しており、以
降は12から21のサイクルを繰り返し、I/O処理要
求発行回数はREAD要求ブロック9個にたいして2回
の割合となる。
【0040】図12はシーケンシャルアクセスにおける
従来の先読みでの検証である。従来は先読みブロック数
は1個なので、READ要求ブロックのI/O処理終了
の時点で、必ず先読みブロックのI/O処理要求が発行
されていた。従って、回転待ちはディスクキャッシュが
ある場合は1回、ディスクキャッシュがない場合はRE
AD要求ブロック数分発生した。
【0041】シーケンシャルアクセスにおいて、本発明
と従来を比較すると、ディスクキャッシュがある場合
は、回転待ちの回数はともに1回、ディスクキャッシュ
がない場合は、READ要求ブロック21の時点で、本
発明は9回、従来は21回となる。READ要求ブロッ
ク13以降をみると、本発明では2回、従来は9回とな
る。
【0042】図13は、ランダムアクセスにおける本発
明での検証である。これは、ブロック番号1から11と
50から59のデータを、1ブロックずつ交互にREA
D要求した例である。即ち、図6ではデータが3箇所に
分散した例を示したが、図13は2箇所に分散した例を
示したものである。先読みのアルゴリズムは、図6と同
じである。
【0043】ランダムアクセスでは、連続しないブロッ
クのI/O処理要求発行時にはシークが発生する。RE
AD要求ブロック2の場合は、まずブロック番号2のI
/O処理要求を発行し、先読みブロックのブロック番号
3はシステムバッファキューに登録される。ブロック番
号2のI/O処理が終了すると、ブロック番号3のI/
O処理要求が発行される。そして、READ要求ブロッ
ク51の場合はまだブロック番号3のI/O処理が終了
していないため、ブロック番号51はシステムバッファ
キューに登録される。そして、先読みブロックのブロッ
ク番号52もシステムバッファキューに登録される。ブ
ロック番号3のI/O処理が終了すると、ブロック番号
51と52がマージされ、I/O処理要求が発行され
る。
【0044】ブロック番号51と52のI/O処理が終
了すると、READ要求ブロック3へ処理が移行する。
従って、READ要求ブロック3の処理開始時は、I/
O処理中のブロックやキューにエントリされているブロ
ックはない。ブロック番号3のI/O処理は既に終了し
ているため、直ちに先読みブロックのブロック番号4の
I/O処理要求が発行される。そして、ブロック番号5
がシステムバッファキューに登録される。ブロック番号
4は先読みブロックなので、I/O処理終了を待たずに
READ要求ブロック52の処理へ移行する。ブロック
番号52のI/O処理は既に終了しているので、ブロッ
ク番号53と54をシステムバッファキューに登録す
る。従って、READ要求ブロック52の処理では、I
/O処理要求は発行されない。READ要求ブロック4
の処理開始時は、ブロック番号4はまだI/O処理中な
ので、先読みブロック6、7をシステムバッファキュー
に登録する。ブロック番号4のI/O処理が終了する
と、先読みブロック5、6、7がマージされ、I/O処
理要求が発行される。このとき、ブロック番号4のI/
O処理と連続ブロックのためシークは発生せず、また、
ディスクキャッシュがある場合は回転待ちも発生しな
い。
【0045】以下同様にして、図13の例では、I/O
処理要求発行回数は11回、シークは9回、回転待ちは
ディスクキャッシュがある場合は9回、ない場合は11
回となる。
【0046】図14は、ランダムアクセスにおける従来
の先読みの検証である。従来の先読みアルゴリズムで
は、ランダムアクセスパターンは全く先読みできないた
め、図14に示すように1ブロック毎にシークと回転待
ちが発生する。従って、この例では、21回のシークと
21回の回転待ちがディスクキャッシュの有無に関係な
く発生する。
【0047】図13と図14のランダムアクセスにおい
て、本発明と従来を比較すると、シーク回数は本発明が
9回、従来が21回、回転待ちは、ディスクキャッシュ
がある場合は本発明が9回、従来が21回、ディスクキ
ャッシュがない場合は、本発明が11回、従来が21回
である。
【0048】
【発明の効果】以上の説明から明らかなように、本発明
のデータ先読み方法によれば、以下のような効果を奏す
る。
【0049】(1) 従来ランダムアクセスと見なされて
先読みしていなかったアクセスパターンに対して先読み
を実施できることにより、I/O処理とAP処理を平行
して実行することが可能になり、APのスループットを
向上させることができる。
【0050】(2) シーケンシャルアクセスでも、従来
1ブロックしか先読みしていなかったものを、例えば最
大8ブロックまで先読みすることにより、複数ブロック
の一括I/O処理を実現することができる。その結果、
例えば二次記憶装置をハードディスク(HD)とした場
合、HDドライバからHDに対するI/O処理発行回数
が減り、ディスクのシークおよび回転待ち回数が半分以
下に減少し、ファイルアクセス等を高速化することがで
きる。
【0051】(3) 先読みするブロック数を変動させる
ことにより、APがREAD要求したブロックの総数に
対して、1回の先読みブロック数を小さくすることがで
き、先読みしたブロックをAPがアクセスしなかったと
きの損害を軽減させることができる。
【0052】(4) READシステムコールのAPイン
タエースを変ることなく、OSレベルで先読み機能を実
現することにより、APは従来のファイルアクセス方法
を変更することなく、先読みの効果を得ることができ
る。
【図面の簡単な説明】
【図1】本発明の一実施例のシステム全体の概略構成図
である。
【図2】図1中のシステムバッファの概念図である。
【図3】図1中の特定記憶領域の構成例を示す図であ
る。
【図4】本発明によるデータ先読み処理のフローチャー
トである。
【図5】シーケンシャルアクセスに本発明及び従来の先
読みを実施した例である。
【図6】ランダムアクセスに本発明及び従来の先読みを
実施した例である。
【図7】本発明の先読みを実現する上での制御の層構成
例を説明する図である。
【図8】図7におけるREADシステムコールのデータ
の流れを示す図である。
【図9】READシステムコールのトップハーフ処理の
全体のフローチャートである。
【図10】READシステムコールのボトムハーフ処理
の全体のフローチャートである。
【図11】本発明によるシーケンシャルアクセスにおけ
るハードディスクの回転待ち回数を検証した例である。
【図12】従来の先読みによるシーケンシャルアクセス
におけるハードディスクの回転待ち回数を検証した例で
ある。
【図13】本発明によるランダムアクセスにおけるハー
ドディスクのシーク、回転待ち回数を検証した例であ
る。
【図14】従来の先読みによるランダムアクセスにおけ
るハードディスクのシーク、回転待ち回数を検証した例
である。
【符号の説明】
10 中央処理装置(CPU) 20 主記憶装置 21 アプリケーションプログラム(AP) 22 オペレーティングシステム(OS) 220 アクセスパターン解析部 23 APバッファ 24 システムバッファ 30 二次記憶装置 31 ディスクキャッシュ機構
───────────────────────────────────────────────────── フロントページの続き (56)参考文献 特開 平7−134634(JP,A) 特開 平6−342401(JP,A) 特開 平4−311216(JP,A) (58)調査した分野(Int.Cl.7,DB名) G06F 3/06 - 3/08 G06F 12/00 - 12/16

Claims (3)

    (57)【特許請求の範囲】
  1. 【請求項1】 ランダムアクセス可能な二次記憶装置を
    具備する情報処理装置におけるデータ先読み制御方法で
    あって、 あるブロックのデータの二次記憶装置から主記憶装置へ
    のデータ転送処理(I/O処理)中に、先読みするブロ
    ックのブロック番号をI/O処理待ちキューに登録して
    おき、 前記あるブロックのI/O処理後に、前記I/O処理待
    ちキューに登録されたブロック番号のブロックのデータ
    をまとめてI/O処理することを特徴とするデータ先読
    み制御方法。
  2. 【請求項2】 請求項1記載のデータ先読み制御方法に
    おいて、 前記二次記憶装置に格納されたデータを連続・不連続に
    アクセスするデータアクセスパターンを解析して、先読
    みするブロックを予測することを特徴とするデータ先読
    み制御方法。
  3. 【請求項3】 ランダムアクセス可能な二次記憶装置を
    具備する情報処理装置において、 前記二次記憶装置に格納されたデータを連続・不連続に
    アクセスするデータアクセスパターンを解析して、先読
    みするブロックを予測する手段と、 あるブロックのデータの二次記憶装置から主記憶装置へ
    のデータ転送処理(I/O処理)中に、先読みするブロ
    ックのブロック番号をI/O処理待ちキューに登録する
    手段と、 前記あるブロックのI/O処理後に、前記I/O処理待
    ちキューに登録されたブロック番号のブロックのデータ
    をまとめてI/O処理する手段と、 を有することを特徴とする情報処理装置。
JP34390695A 1995-12-28 1995-12-28 データ先読み制御方法及び情報処理装置 Expired - Fee Related JP3469383B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP34390695A JP3469383B2 (ja) 1995-12-28 1995-12-28 データ先読み制御方法及び情報処理装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP34390695A JP3469383B2 (ja) 1995-12-28 1995-12-28 データ先読み制御方法及び情報処理装置

Publications (2)

Publication Number Publication Date
JPH09185462A JPH09185462A (ja) 1997-07-15
JP3469383B2 true JP3469383B2 (ja) 2003-11-25

Family

ID=18365163

Family Applications (1)

Application Number Title Priority Date Filing Date
JP34390695A Expired - Fee Related JP3469383B2 (ja) 1995-12-28 1995-12-28 データ先読み制御方法及び情報処理装置

Country Status (1)

Country Link
JP (1) JP3469383B2 (ja)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3396639B2 (ja) 1998-09-30 2003-04-14 株式会社東芝 階層記憶装置及び階層記憶制御方法
JP4061563B2 (ja) 1999-09-16 2008-03-19 松下電器産業株式会社 磁気ディスク装置、磁気ディスク装置のディスクアクセス方法、及び磁気ディスク装置用ディスクアクセス制御プログラム記録媒体
JP4765879B2 (ja) * 2006-10-03 2011-09-07 株式会社ニコン 画像閲覧装置
JP4643667B2 (ja) 2008-03-01 2011-03-02 株式会社東芝 メモリシステム
JP4634477B2 (ja) * 2008-03-07 2011-02-16 レノボ・シンガポール・プライベート・リミテッド メディア・ファイルの中断のない再生方法
US8327066B2 (en) 2008-09-30 2012-12-04 Samsung Electronics Co., Ltd. Method of managing a solid state drive, associated systems and implementations
JP2012221156A (ja) 2011-04-07 2012-11-12 Sony Corp 再生装置および再生方法
JP6056856B2 (ja) 2012-06-25 2017-01-11 富士通株式会社 ストレージ制御装置、情報処理装置、ストレージ制御プログラム、及びストレージ制御方法

Also Published As

Publication number Publication date
JPH09185462A (ja) 1997-07-15

Similar Documents

Publication Publication Date Title
US6324599B1 (en) Computer system and method for tracking DMA transferred data within a read-ahead local buffer without interrupting the host processor
JP3522527B2 (ja) 入出力制御装置および入出力制御方法
US6516389B1 (en) Disk control device
JP3323212B2 (ja) データプレフェッチの方法およびその装置
JP3697149B2 (ja) キャッシュ・メモリを管理する方法
US20070005904A1 (en) Read ahead method for data retrieval and computer system
JPH06236322A (ja) ディスクアレイ用キャッシュシステム
JPH06289999A (ja) ディスク制御システム
US5696931A (en) Disc drive controller with apparatus and method for automatic transfer of cache data
JP3469383B2 (ja) データ先読み制御方法及び情報処理装置
JP2000347982A (ja) 情報処理装置並びにコンピュータに実行させるためのプログラムを記録した記録媒体
WO1998026352A1 (fr) Procede de commande de prelecture de fichiers dans un systeme d'ordinateur
JP2001188658A (ja) ディスク制御システムおよびデータ再配置方法
JPH08137754A (ja) ディスクキャッシュ装置
JPH08263380A (ja) ディスクキャッシュ制御方式
US20010032297A1 (en) Cache memory apparatus and data processing system
JP3555523B2 (ja) メモリ管理装置及び管理方法並びに管理プログラムを記録した記録媒体
JP4506292B2 (ja) キャッシュ制御方法およびデータ処理システム並びにその処理プログラム
JP3516326B2 (ja) 共有キャッシュメモリを有するメモリコントローラ及びこれを備えたコンピュータシステム
JP2000047942A (ja) キャッシュメモリ制御装置及びその制御方法
JPH0784879A (ja) キャッシュメモリ装置
JPH0210450A (ja) キヤツシユメモリの先行フエツチ制御方式
JPH10124387A (ja) キャッシュ制御装置および方法
JPH0651982A (ja) 演算処理装置
JPH0863378A (ja) ファイル管理装置

Legal Events

Date Code Title Description
FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20080905

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20080905

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20090905

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20090905

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20100905

Year of fee payment: 7

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

Free format text: PAYMENT UNTIL: 20100905

Year of fee payment: 7

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

Free format text: PAYMENT UNTIL: 20110905

Year of fee payment: 8

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

Free format text: PAYMENT UNTIL: 20120905

Year of fee payment: 9

LAPS Cancellation because of no payment of annual fees