(57)【要約】【課題】  断片化したデータに対し先読みを実行しても、後続しない物理ブロックをキャッシュするので、ヒットせず先読みが無駄となる。ファイル・アクセスがシーケンシャルであっても、アクセスの時間間隔が長い場合キャシュされたデータが他の読出し動作によりバッファ・メモリから排出されるので、先読みデータが無駄となる。【解決手段】  断片化箇所の情報を、記憶装置の入出力制御回路から取出し、ファイルシステムの管理情報に含める。所定の管理情報をインターフェイスの読出しコマンドに追加する。この管理情報は、先読みすべきか否か、先読みデータの量の指定、その他先読み処理を制御するために使用される。アプリケーションは、ファイルへのランダムアクセス又は時間に基づくアクセスについて、記憶装置が効率的なアクセスを行うよう、先読みを用いるか否か指定する。【選択図】  図１
2007011523.tif 000002
【特許請求の範囲】
【請求項１】
中央演算処理装置と、これにアクセス可能に接続されたメモリ及び回転型記録媒体を用いた記憶装置とを有する計算機システムであって、当該メモリ上に展開されたファイルシステムにより、前記中央演算処理装置を介して、前記回転型記録媒体上に書き込まれたファイルのデータを読み出す際に、当該データの先読み機能を有するものにおいて、
前記ファイルシステムが、
前記データが前記回転型記録媒体上で断片化している箇所の情報を保持する機能と、
前記ファイルのデータの一部に対応する前記回転型記録媒体上のデータを読み出すための、１又は複数の読出しコマンドのうち、一部の読出しコマンドが先読みを行う機能とを有する計算機システム。
【請求項２】
請求項１記載の計算機システムにおいて、
前記１又は複数の読出しコマンドの一部が、前記記憶装置のバッファ・メモリに対し読出しを行う計算機システム。
【請求項３】
請求項１記載の計算機システムにおいて、
前記断片化している箇所の情報は、連続する物理ブロックを保持することで得られるものであり、
前記一部の読出しコマンドは、前記連続する物理ブロックのデータを対象とする場合は当該連続する物理ブロックのうち最後の物理ブロックを、連続しない物理ブロックのデータを対象とする場合は当該連続しない物理ブロックのうち最後の物理ブロックを、それぞれ読み出すときの読出しコマンドである計算機システム。
【請求項４】
中央演算処理装置と、これにアクセス可能に接続されたメモリ及び回転型記録媒体を用いた記憶装置とを有する計算機システムであって、当該メモリ上に展開されたファイルシステムにより、前記中央演算処理装置を介して、前記回転型記録媒体上に書き込まれたファイルのデータを読み出す際に、当該データの先読み機能を有するものにおいて、
前記ファイルシステムが、
前記データが前記回転型記録媒体上で断片化している物理ブロックの情報を保持する機能と、
前記ファイルのデータの一部に対応する、前記回転型記録媒体上の連続する複数の物理ブロックのデータを、読み出すための一つの読出しコマンドであって、当該複数の物理ブロックのうち最後の物理ブロックについてのみ先読みを行う機能を有する計算機システム。
【請求項５】
中央演算処理装置と、これにアクセス可能に接続されたメモリ及び回転型記録媒体を用いた記憶装置とを有する計算機システムであって、当該メモリ上に展開されたファイルシステムにより、前記中央演算処理装置を介して、前記回転型記録媒体上に書き込まれたファイルのデータを読み出す際に、当該データの先読み機能を有するものにおいて、
前記ファイルシステムが、
前記データが前記回転型記録媒体上で断片化している物理ブロックの情報を保持する機能と、
前記ファイルのデータの一部に対応する、前記回転型記録媒体上の断片化した複数の物理ブロックのデータを読み出すための、複数の読出しコマンドのうち、一部の読出しコマンドが先読みを行う機能とを有する計算機システム。
【請求項６】
請求項４又は５記載の計算機システムにおいて、
前記１又は複数の読出しコマンドの一部が、前記記憶装置のバッファ・メモリに対し読出しを行う計算機システム。
【請求項７】
請求項５記載の計算機システムにおいて、
前記一部の読出しコマンドは、前記断片化した１の物理ブロックのデータを読み出すときの読出しコマンドである計算機システム。
【請求項８】
中央演算処理装置と、これにアクセス可能に接続されたメモリ及び回転型記録媒体を用いた記憶装置とを有する計算機システムにおける、前記回転型記録媒体上に書き込まれたデータの先読み方法であって、
前記メモリ上に展開されたファイルシステムにより、前記中央演算処理装置を介して、前記回転型記録媒体上の物理ブロックにファイルのデータを書き込む第１のステップと、
前記物理ブロックに書き込まれたデータの位置情報を、前記記憶装置が前記ファイルシステムに知らせる第２のステップと、
前記ファイルシステムが前記ファイルのデータの読出しを要求される第３のステップと、
前記ファイルシステムが、読出しを要求されたファイルの一部に対応する、連続する複数の物理ブロックについて読出しコマンドを作成する場合は、最後のブロックのみを先読みする１の読出しコマンドとし、
前記ファイルシステムが、読出しを要求されたファイルの一部に対応する、連続しない複数の物理ブロックについて読出しコマンドを作成する場合は、最後のブロックのみを先読みする複数の読出しコマンドとする第４のステップと、
前記ファイルシステムが作成した読出しコマンドを実行する第５のステップと、
を有することを特徴とするデータの先読み方法。
【請求項９】
請求項８記載のデータの先読み方法において、
前記１又は複数の読出しコマンドの一部が、前記記憶装置のバッファ・メモリに対し読出しを行うデータの先読み方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、回転型記録媒体を用いた記憶装置におけるデータの先読み技術に係り、特に、記憶装置内の入出力制御回路（例えば、Hard Disk Controller）及びインターフェイスによる先読み技術に関する。
【背景技術】
【０００２】
磁気ディスク装置その他回転型記録媒体を用いた記憶装置は、内部にバッファ・メモリを有し、ホストと当該記憶装置との間で、データへのアクセスを円滑・高速としている。例えば、記憶装置からホストへデータを送出するとき（読出し動作）は、最初にデータを記憶装置の記憶空間から内部のバッファ・メモリに転送し、次に、このデータをホストへ転送する。この方法は、バイト単位で記憶装置にアクセスした従前の方法と比較して、記憶装置のアクセスレートを大幅に向上させた。バッファ・メモリを使用すると、多量に使用されるデータへのアクセスを高速化するためのデータ・キャッシングを実現できた。これは読出し動作の性能を向上させるため、データの先読み機能の一種といえる。
データの先読み機能は、ホストが記憶装置に出した読出しコマンドにより起動し、記憶装置上、この読出しコマンドで要求されたデータの直後のデータを記憶装置のバッファ・メモリに格納（キャッシュ）することで達成される。ホストは、記憶装置のバッファ・メモリ中のデータを利用できるときは（キャッシュ・ヒット）、記憶装置の記憶空間（回転型記録媒体）へシークする際のオーバーヘッドと、回転型記録媒体から記憶装置のバッファ・メモリへのデータ転送とが回避される。ホストが数キロバイトの小さい単位で記憶装置にアクセスしても、まるで数百キロバイトの大きい単位で記憶装置にアクセスするかのように記憶装置が振る舞うこととなる。
【０００３】
データの先読みは、メモリ・ページングを用いて仮想記憶を実施するオペレーティングシステムにとっても、大きな恩恵を与える。
実際に記憶装置からデータを受け取るのに使用される、仮想メモリ・バッファを構成している物理メモリ・ページは、物理メモリ中では連続していないことがある。このため、回転型記録媒体から記憶装置への読出し動作を、さらに小さい幾つかの動作（仮想メモリ・バッファのそれぞれの物理ページごと）に分割する必要がある。
このようなアクセス動作をする記憶装置において、データの先読みを有効にする場合には、このような区分動作は、さらに大きいサイズの非区分動作とほぼ同じくらい速く処理できる。
仮想記憶の取り扱いだけでなく、ファイルのシーケンシャル・アクセスも、データの先読みにより大きな恩恵を受け得る。小さい塊（chunk）のデータで、順次、ファイルにアクセスすることにより、より大きいブロックで、このファイルにアクセスした場合と同じ総合アクセスレートが得られることもある。
【０００４】
データの先読み機能が多くの場合に記憶装置のアクセス性能を向上させる一方、オーバーヘッドとなることもある。一例を挙げると、論理的に連続したデータが、回転型記録媒体上で物理的に連続しないときである。つまり、ファイルが断片的に媒体上に存在する場合である。
ファイルシステムは、通常、記憶装置の記憶空間を論理的にブロックに分割することで記憶装置上のファイルを管理している。これらのブロックをファイルに割り当てて、データを保存する。したがってファイルが、論理的には連続データ記憶空間であっても、入出力制御回路が記憶媒体上の不連続の物理ブロックに、この記憶空間を割り当てることがある。
このため記憶媒体上の断片化したデータを検索すると、記憶装置は、いくつかの不連続物理ブロックにわたるＩ／Ｏ動作を余儀なくされる。断片化したデータに対し先読みを実行しても、後続しない物理ブロックをキャッシュするので、ヒットせず無駄である。このファイルへ後続するいかなるシーケンシャル・アクセスに対しても、ヒットしないからである。
先読みを無駄にする別の問題は、時間情報に基づいてファイルにアクセスするときに生じる。ファイル・アクセスがシーケンシャルであっても、ファイル中の２つの読出し動作の時間間隔が長い場合には、キャシュされたデータが他のファイル中の他の読出し動作によってバッファ・メモリから排除される可能性があるので、先読みデータが無駄となる。ファイルへのアクセスがシーケンシャルでない場合も、キャシュされたデータがバッファ・メモリから排除される可能性があるので、記憶装置の先読み処理が無駄となり得る。
【０００５】
従来の記憶装置の入出力制御回路又はインターフェイスは、通常、読出し動作（複数の読出し命令から成る）ごとに、先読みの有効又は無効、先読みデータ量を設定するのみで、読出し命令ごとの詳細な先読み機能の設定は不可能であった。
従って、複数ストリームを記録・再生するような、先読み条件の混在するケース、一例として、ビデオデータ・レートで記憶装置にあるビデオデータを検索し、同時に、保存されたビデオ・コンテンツ上の情報を管理するためにデータベースを使用するようなビデオ処理アプリケーション、を実行するとデータベースへのアクセスは先読みにより向上させることができるが、記憶装置の高負荷の下でのビデオ検索に対しては、先読みはほとんど無駄となる。
【０００６】
記憶装置からページ単位で読み出したファイルを記憶するバッファを有するファイル管理装置において、ファイルの少なくとも一部のページについて、同時に読み出すべきページ群の情報を記憶する先読み制御テーブルと、先読み制御テーブルの内容に基づき、前記ページ群単位で先読み制御を行う先読み制御手段を有する公開された技術として、特許文献１記載のものがある。
大きなファイルに対し大きなテーブルを必要とする。また、ある程度の時間を経て読み書き命令を受けると、先読みが無駄となる。
【０００７】
先読みのためのリード命令総数を削減して、先読み処理を効率良く行うことができるデータ処理技術を公開するものとして、特許文献２記載のものがある。しかし上記の複数ストリームを記録・再生するような、先読み条件の混在するケースでは、先読みの効果は十分でない。
【０００８】
【特許文献１】特開平８−６３３７８号公報
【特許文献２】特開２００３−８４９２１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００９】
１）断片化した物理ブロックのデータに対し先読みを実行しても、後続しない物理ブロックをキャッシュするので、ヒットせず先読みが無駄となること。
２）ファイル・アクセスがシーケンシャルであっても、そのシーケンシャルな２つの読出し動作の時間間隔が長い場合には、キャシュされたデータがファイル中の他の読出し動作によりバッファ・メモリから排出される可能性があるので、先読みデータが無駄となること。
【課題を解決するための手段】
【００１０】
物理ブロックが断片化している箇所の情報を、記憶装置の入出力制御回路から取出し、ファイルシステムの管理情報（メタデータ）に含める。
所定の管理情報を、インターフェイスの読出しコマンドに追加する。この管理情報は、読出しコマンドと一緒に先読みを処理すべきか否か、先読みされるデータの量の指定、その他先読みを制御するために使用される（read-ahead method）。
記憶装置上の物理ブロックの連続性に応じて、また、アプリケーションによるファイルの論理ブロックへのアクセス・パターンに応じて、記憶装置が能動的に先読み機能を制御できる。
ファイルシステムの管理情報を検出すれば、断片化している不連続な物理ブロックへアクセスするために先読み動作が無駄となることは、容易に検出できる。
ファイルを取り扱うアプリケーションは、ファイルへのランダムアクセス、又は、時間に基づくファイル・アクセスについて、記憶装置が最も効率的なアクセス方法を採用するよう（先読みを用いるか否か）指定できる。
【発明の効果】
【００１１】
本発明に係る読出しコマンドを持いれば、従来の読出しコマンド処理により制御される機械的先読み機能とは異なり、不連続な物理ブロックのアクセスに対する無駄な先読み処理を排除できるので、記憶装置の負荷を軽減することができる。
このように無駄な先読みを減らすことにより、先読みを用いて読出しコマンドを処理するたびに記憶装置のバッファ・メモリ中の記憶領域を大きくする必要もなくなる。したがって、他の読出しコマンドの処理の間に検索されるデータのバッファ・メモリのキャッシュ・ヒットが高められる。
ランダムに、又は、時間に基づいてアクセスされるファイルは、先読みを用いずにアクセスでき、したがって、他のファイル・アクセスに対して、記憶装置のメモリバッファのヒットには影響を与えない。
データ読出しの際の記憶装置への負荷を軽減し、大きな負荷のときに、又は、データ・アクセスタイムの制約が有るときに、データ・アクセスレートを向上させる効果がある。
【発明を実施するための最良の形態】
【００１２】
以下に、本発明の実施の形態を説明する。
【実施例１】
【００１３】
図１に本発明の適用例を示す。
ハードディスク・ドライブ１１０上に保存されたファイル１００は、論理的に順次にホストからアクセスされる。本例のファイルは、０（１０１）から４までの数字で表現された５つの論理ブロックから成っている。これらの論理ブロックの対応するデータは、ディスク１１３上の物理記憶空間、それぞれ、ブロック１２０からブロック１２４にマップされる。ファイル上に２つの読出し動作１３０、１４０が表わされている。
読出し動作１３０は、２つの論理ブロック（ブロック１とブロック２）にわたっており、また、これらの論理ブロックは、２つの連続した物理ブロック１２１及び１２２にマップされている。このとき、アプリケーションの要求を受けたホストから、コントローラ１１１に対し、論理ブロック１と２を読むよう指示が出ると、コントローラ１１１は、対応する物理ブロック１２１及び１２２を「先読み機能を有効」として読む唯１つの読出しコマンド１３１を用いて処理される。このコマンド１３１は、ブロック１２２中のデータ・ゾーン１３２に有るデータの先読みを起動し、かつ、ハードディスクのバッファ・メモリ１１２に当該データを入れる動作も起動する。これにより読出し動作１３０に続く別の読出し動作を、ハードディスク・ドライブで、さらに速く処理することができる。
これに対し、読出し動作１４０は、２つの論理ブロック（ブロック３とブロック４）にわたっているが、これらの論理ブロックは２つの不連続な物理ブロック１２３及び１２４にマップされている。このとき、アプリケーションの要求を受けたホストから、コントローラ１１１に対し、論理ブロック３と４を読むよう指示が出ると、コントローラ１１１は、対応する物理ブロック１２３及び１２４を、先読み機能を指定して読む。読出しコマンド１４１と１４２を用いてそれぞれ処理される。
この読出し動作では、２つの読出しコマンド１４１及び１４２がコントローラ１１１に出される。ファイルシステムの管理情報から物理ブロック１２３が断片化していることが判っているから、コマンド１４１に対して、コントローラ１１１は先読みを無効にする。しかし、コマンド１４２に対しては、先読みを有効にして、ブロック１２４の記憶ゾーン１４３中のデータを、ハードディスクのバッファ・メモリ１１２に格納する動作を起動する。
【００１４】
ファイルデータの論理ブロックに対応させて物理データの先読み機能を適切に有効無効とすることで、ファイルのシーケンシャル・アクセスの性能に影響を与えることなく、無駄な先読みを除去できる。記憶装置のバッファ・メモリ中の先読み（pre-fetched）データのヒット率を高めながら、記憶装置の記憶領域で検索されるデータの量を減らすことができ、記憶装置のデータアクセス性能を向上させる。
バッファ・メモリ１１２を用いたキャッシュ機能により、図１には図示されないが、上記のように磁気ディスク媒体上から読み出されたデータは後述するように、適宜、バッファ・メモリ１１２へ格納される（図９）。
【００１５】
図２の計算機システムを用いて記憶装置の先読み機能を説明する。
本発明の先読み機能は、バッファ・メモリ２２２を用いて、磁気ディスク媒体２２３上に保存されたデータへのアクセスを制御するコントローラ２２１から構成されているハードディスク装置２２０に、中央演算処理装置２００から、システム・バス２４０を通じてコマンドを渡すハードディスク装置のシステムに適用される。
このハードディスク２２０へのコマンドの発行は、このシステムのメインメモリ２１０にあるファイルシステム２１２を用いて、ＣＰＵ２００上でアプリケーション２１１を実行することで為される。ディスプレイ・アダプタ２３０を介して使用されるディスプレイ２３１は、データ処理結果を表示する。ファイルシステム２１２は、これらのアプリケーション２１１が渡すヒント（hint）に応じて、さらに、磁気ディスク媒体２２３上でファイルのデータに対応する物理ブロックの連続性に応じて、読出しコマンドがハードディスク装置２２０に出されるたびに、読出しコマンドを介して先読み機能を設定する。
【００１６】
図３は、記憶空間３００の一例である、ブロック割当てテーブルを示す図である。
ファイルシステム２１２のプログラムは、ハードディスク装置２２０の記憶空間３００を、連続ディスク記憶空間の論理ブロックであって、かつ、一定サイズの論理ブロック３０１、３０２、３０３、…、３０４に分けることで、そのような記憶空間を管理している。それぞれの論理ブロックは、０（３０１）からｄ（３０４）にわたる論理ブロック番号を用いて識別される。これにより磁気ディスク媒体２２３上の物理ブロックの番号と、論理ブロック番号との間の直接マッピングを簡単に実施できる。
【００１７】
ファイルシステム２１２は、磁気ディスク媒体２２３に対する各論理データブロック３１１の割当て状態３１２を管理するテーブル３１０を使用している。これらの割当て状態は、論理データブロックに有効なデータが対応しているか否か、論理データブロックが現在使用されているかどうかを示している。図３では、ブロック０（３１３）、ブロック１（３１４）、ブロック２（３１５）、ブロック４（３１７）が使用されている。これらの論理データブロックは、ファイルシステム・データを保存するために割り当てられる。ブロック３（３１６）とブロックｄ（３１８）は使用されていない。記憶空間３００自体は、１つ又は複数の物理ブロックを用いて磁気ディスク媒体２２３上に保存され、このシステムの電源断によっても、図３の状態を維持できる。記憶空間３００は必要に応じメモリ２１０へ展開される。
【００１８】
図４は、ファイルシステムが扱うファイルを管理するためのテーブルである。
ファイル・テーブル４００は、ファイル名４０１を用いて識別されるファイルの管理情報が入っている物理ブロック番号４０２を記録する。テーブル４００自体は、磁気ディスク媒体２２３上に保存される。テーブル４００は必要に応じメモリ２１０へ展開される。
各ファイル４２０に対する記述子は、ファイル名４２１、ファイル・サイズ４２２、ファイル・タイプ４２３その他ファイルの情報を保持するために用いられる。ファイル記述子の情報には、ファイル・マップ４２４も含まれる。マップ４２４は、ファイルのデータを保存するのに用いられる物理ブロック番号のテーブルである。
【００１９】
ファイル・テーブル４００の各エントリは、先行ブロックに論理的に隣接しているファイル・ブロックを表わしている（図１、１０１）。したがって、エントリ番号４０１は、ファイル論理ブロックと呼ばれる。
ファイル・マップ４２４は、ファイルが扱う論理ブロックと磁気ディスク媒体上の物理ブロックとの間を対応付ける。これにより、ファイル・オフセット（論理アドレスのオフセット）の物理アドレスへの変換が、簡明となる。
例えば、このファイル４２０中のオフセット０のデータは、物理ブロック２２（４２５）にマップされる論理ブロック０に入っており、また、この物理ブロックのサイズに等しいオフセットのデータは、論理ブロック１に入っていて、磁気ディスク媒体上で、物理ブロック番号２３（４２６）にマップされ、さらに、このファイルのデータの最終オクテットは、ディスク上の物理ブロック１００（４２７）にマップされ、ファイル・マップ４２４の論理ブロックに入っている。
このような対応関係のデータ構造により、ファイルシステムのデータの論理アドレス（ファイル４２０中のデータ・オフセット）と、物理アドレスとの間の簡明なマッピングが可能となる。
【００２０】
図５を用いて本発明のデータの読出し動作を説明する。
磁気ディスク装置５２０に収められているデータに対する要求が、ホスト５００上で、アプリケーション５０１から、ファイルシステム５０３に為されると、読出し機能（read function）５０２が、読み出されるファイル、読み出すデータの量、読み出すデータの第１バイトのアドレス、読出しデータを受け取るためにアプリケーションで使用されるメモリ・バッファのアドレス、及び、読出し動作が先読み機能を用いて行われるかを指定する幾つかのフラグを指定する。
これにより「先読みしない」フラグを指定したときの「先読みしない」読出し動作と、フラグを指定しないとき（デフォルト）の「先読みする」読出し動作の主な２つのタイプの読出し動作が為される。
【００２１】
ファイルシステムは、コントローラ５２１へ、１又は複数の読出しコマンド５１０を発信して、読出し動作を処理する。コントローラ５２１は、磁気ディスク媒体上に保存された、要求されたデータ５２４を検索して（５２３）、バッファ・メモリ５２２に格納する。このときファイル記述子に対応する物理ブロック番号、要求されたデータ５２４の物理アドレスもデータ５２４に関連させて、バッファ・メモリ５２２に格納する。
検索されたデータ５３０その他の情報は、バッファ・メモリ５２２からホストのファイルシステム５０３に転送され、アプリケーション５０１に渡される（５０４）。
【００２２】
図６に、ファイルシステム５０３（図５）がハードディスク装置５２０のコントローラ５２１に送信する、読出しコマンド５１０のフォーマットを示す。
読出しコマンド６００には、読出しコマンドとしてコマンドを識別するのに用いられるコマンド・コード６０１が含まれる。このコマンド・コード６０１の後に、読み出すデータの物理アドレス６０２（Ｒｏｆｆｓｅｔ）と、このアドレスから読み出されるデータの量６０３（Ｒｓｉｚｅ）が続く。読み出される予定のデータは、ホストメモリの指定したアドレス６０４に返さなければならない。さらに、読出しコマンドが先読み処理（ＲＡ）を起動すべきかどうか指定するフラグ６０５も付加される。ＲＡフラグがセットされる場合、即ち、先読み機能が実行される場合には、先読みするデータの最大量が、ＲＡｓｉｚｅ６０６を用いて、読出しコマンドにより指定される。
【００２３】
図７を用いて、アプリケーションが、ファイルシステムを経由して、ハードディスク装置のコントローラに読出しコマンドを送信して、データの読出しが完了するまでのプロセスを説明する。
ファイルシステムは、ファイル・マップ（４２４、図４）を用いて、読出し動作で要求されたデータを保存する物理ブロックのリストを得る（７００）。ファイル・マップは、記憶装置の入出力制御回路が、ファイルシステムへ直接又はバッファメモリを介して知らせることにより、ファイルシステムが作成する。
【００２４】
次に、このリストを検索して、連続した論理ブロックにわたる、読出し動作の全セグメント（物理ブロックの組）に対して、読出しコマンドを生成する（区分の一例として、図１の読出し動作１４０を参照のこと）。
次に、このように生成されたすべての読出しコマンドに対して、コマンドごとに以下の処理を行う。処理される読出しコマンドが、生成された読出しコマンドの最後のものでない場合には、複数組の連続した物理ブロックのデータにアクセスするために読出しコマンドがセットされているから、先読み機能は求められない。従って、先読みフラグを無効にして（７４０）、読出しコマンドを実行する（７５０）。
最後の読出しコマンドが生成される場合には、読出し動作（図５に示される読出しファンクション５０２）で指定されたフラグを調べる（７６０）。このアプリケーションが「先読みしない」読出し動作を指定した場合には、このコマンドの先読みフラグを無効にして（７４０）、読出しコマンドを実行する。
これに反して、このアプリケーションが「先読みしない」読出し動作を指定しなかった場合（デフォルト）には、コマンド先読みフラグがセットされている。このため、このコマンドがアクセスすることになるデータに続く、ファイルのデータに対応する物理データのマッピングを調べる（７７０）。
後続するデータが、読出しコマンドでアクセスされる最後の物理ブロックに隣接した物理ブロック中には無い場合には、先読みフラグを無効にして、読出しコマンドを実行する。そうでなければ、先読みできるデータの量を、アクセスされるデータに隣接するファイルのデータ量として計算する（７８０）。この値を、読出しコマンドのＲＡｓｉｚｅフィールド中にセットして、読出しコマンドを実行する（７５０）。この処理は、生成された最後の読出しコマンドを実行して終了する（７２１）。
【００２５】
こうして、先読みが無駄となる読出しコマンドに対して、先読み機能を無効として処理することを保証している。磁気ディスク媒体上に、連続性がないファイルの論理ブロックに対応して配置される、断片化した大量の物理ブロックに対して、アクセスされるデータに続くデータだけを先読みして、後続のアクセスを高速化できる。この先読み機能は、デフォルトでは有効である（アプリケーションが「先読みしない」読出し動作を要求しない場合）。
この読出し動作は、ハードディスク装置に負荷を課さずに、ランダム・ファイル・アクセスを可能とする。アクセスに時間的制約のある、非常に大きいファイル（例えば、ビデオの動画ファイル）へのアクセスに、効果的である。
【００２６】
図８を用いて、ハードディスク装置のバッファ・メモリにキャッシュされる、データの管理を説明する。
ハードディスクのコントローラは、ハードディスク装置のバッファ・メモリにキャッシュされるデータ・ゾーンのキャッシュ・テーブル８００を、磁気ディスク媒体上に維持している。このテーブル８００は、データ・ゾーンのデータの第１バイトの物理アドレス８０１と、データ・ゾーンのサイズ８０２を用いて、それぞれのデータ・ゾーンを識別する。
例えば、データ・ゾーン５１２／４０９６（８２０）及び４０９６／１３１０７２（８３０）だけでなく、アドレス０から始まる、サイズ５１２バイトのデータ・ゾーン（８１０）も、バッファ・メモリにキャッシュする。
【００２７】
図９に、ハードディスク装置における読出しコマンドの処理フローを示す。
キャッシュ・テーブル８００（図８）は、以下のように読出しコマンドを処理しているときに、ハードディスク装置のコントローラで使用される。まず、受け取られたコマンドのコードが読出しコマンドであるかどうかチェックする（９００）。そのコマンドが読出しコマンドでない場合には、そのコマンドを実行し（９１０）、そのコマンドの終了をホストに知らせる（９９０）。
読出しコマンドである場合には、ハードディスク装置のコントローラのキャッシュ・テーブル８００を利用して、バッファ・メモリにすでにキャッシュされた、要求されたデータを検索する（９２０）。まだキャッシュされてないデータだけを、ハードディスク装置で検索する（９３０）。このステップは、検索されたデータをキャッシュするのに充分なバッファ・メモリを得るため、現行コマンドに関係しない、キャッシュ・テーブル中の一部のエントリを解放することになるかもしれない。
【００２８】
次に、コマンドの先読みフラグを調べる（９４０）。このコマンドで先読みが要求されない場合には、検索されたデータをキャッシュ・テーブルに登録して（９７０）、要求されたすべてのデータ（検索されたデータとキャッシュされたデータ）を、ホストにおいて、読出しコマンド中に指定されたメモリ・アドレスに転送する（９８０）。
読出しコマンドが先読みを要求した場合には、読出しコマンドにおいてＲＡフラグをセットするときであり、まず最初に、バッファ・メモリ中に追加記憶域を確保して（９５０）、先読み処理で検索されたデータをキャッシュする。この記憶領域の大きさは、読出しコマンドで指定された先読みデータの量（ＲＡｓｉｚｅフィールド）に少なくとも等しくなるべきである。
【００２９】
次に、先読みデータの量のデータを、ハードディスク装置において、読出しコマンドのＲｏｆｆｓｅｔフィールド＋Ｒｓｉｚｅフィールドで指定されたアドレスにて検索する（９６０）。次に、ハードディスクのコントローラのキャッシュ・テーブルを変更して、先読みデータのキャッシングを登録し（９７０）、次に、先読みを用いない読出しコマンドと同じやり方で、読出しコマンド処理を終了する。すなわち、データをホストに転送して（９８０）、コマンド終了をホストに知らせる（９９０）。
【産業上の利用可能性】
【００３０】
画像データ、特に、動画を記録再生しつつ、別のアクセスの実行が、高速、低騒音、低消費電力で行える磁気ディスク装置の製造に用いることができる。
【図面の簡単な説明】
【００３１】
【図１】本発明の一適用例を示す図である。
【図２】ファイルシステム・プログラムを用いて記憶装置を管理し、かつ、ファイルシステムを用いてアプリケーションを実行するホスト・コンピュータの代表的なハードウェア構成例を示す図である。
【図３】記憶装置の記憶領域に関し、ファイルシステムの管理を説明するための図である。
【図４】記憶装置上に保存されたファイルを管理するのに用いられる、ファイルシステムのデータ構造を示す図である。
【図５】記憶装置上に格納されたデータを、本発明を用いて読み出す動作を説明するための図である。
【図６】本発明の読出しコマンドのフォーマットの一例を示す図である。
【図７】アプリケーションが記憶装置上に格納されたデータを検索して読み出すプロセスを示す流れ図である。
【図８】記憶装置で用いられるバッファ・メモリにキャッシュされるデータにインデックスを付して管理することを説明するための図である。
【図９】記憶装置における読出しコマンドの処理を示す流れ図である。
【符号の説明】
【００３２】
１３１……読出しコマンド（先読み有り）
１４１……読出しコマンド（先読み無し）
１４２……読出しコマンド（先読み無し）
【図１】
2007011523.tif 000003
【図２】
2007011523.tif 000004
【図３】
2007011523.tif 000005
【図４】
2007011523.tif 000006
【図５】
2007011523.tif 000007
【図６】
2007011523.tif 000008
【図７】
2007011523.tif 000009
【図８】
2007011523.tif 000010
【図９】
2007011523.tif 000011