(57)【特許請求の範囲】
【請求項１】
コンピュータと、前記コンピュータの動作に必要なデータを格納した記憶装置との間の通信を仲介し、前記コンピュータが前記記憶装置から取得したデータまたは前記コンピュータが前記記憶装置に保存したデータを仲介時にキャッシュデータ格納領域内にも一時的に記憶し、前記コンピュータからリード要求されたデータが前記キャッシュデータ格納領域内にあれば、前記記憶装置にアクセスすることなく当該データを前記コンピュータに返送するネットワークキャッシュ装置であって、
前記記憶装置に発行するリード要求に関する情報である先読みパターンデータを格納する先読みパターンデータ格納領域を有する記憶デバイスと、
前記先読みパターンデータ格納領域に格納されている先読みパターンデータを読み込み、当該先読みパターンデータに該当するリード要求において、同一のブロック番地が複数のリード要求によって読み出される場合には、当該ブロック番地は１回の先行リード要求によって読み出され、かつ番地が連続する複数のブロック番地は、１回の先行リード要求によって読み出されるように変換した先読みパターンデータを前記先読みパターンデータ格納領域に格納する変換手段と、
前記コンピュータが特定の動作に必要なデータを取得するためにリード要求の発行を開始する前に、前記変換した先読みパターンデータの記述に従って先行リード要求を発行することにより、前記記憶装置からデータを取得して、当該データを前記キャッシュデータ格納領域内に一時的に記憶させる手段と、
を備え、
前記変換手段は、番地が連続する複数のブロック番地を、１回の先行リード要求によって読み出されるように変換する際に、読み出し順が連続していなくても番地が連続する複数のブロック番地を、１回の先行リード要求によって読み出されるように変換することを特徴とするネットワークキャッシュ装置。
【請求項２】
請求項１に記載のネットワークキャッシュ装置であって、
前記変換手段は、リード要求が、当該リード要求が対象とする読み出しブロックのブロック番地の昇順または降順で発行されるように変換して格納することを特徴とするネットワークキャッシュ装置。
【請求項３】
請求項１に記載のネットワークキャッシュ装置であって、
前記変換手段は、前記コンピュータがより早期に必要とするブロックを含むリード要求が、より早期に発行されるように当該リード要求に対応する先行リード要求の発行順序を入れ替えるように変換して格納することを特徴とするネットワークキャッシュ装置。
【請求項４】
請求項１ないし３のうちいずれか１項に記載のネットワークキャッシュ装置であって、
前記記憶装置との間で２以上の通信のセッションを確立し、データ先読みのために発行される任意のリード要求を、当該２以上の通信のセッションのいずれかに振り分けて発行する手段を備えることを特徴とするネットワークキャッシュ装置。
【請求項５】
請求項１ないし４のうちいずれか１項に記載のネットワークキャッシュ装置をコンピュータに機能させるためのネットワークキャッシュプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータと、コンピュータの動作に必要なデータを格納した記憶装置との間の通信を仲介し、コンピュータが記憶装置から取得したデータまたはコンピュータが記憶装置に保存したデータを一時的に記憶し、コンピュータからリード要求されたデータが一時的に記憶しているデータ内にあれば、記憶装置にアクセスすることなく当該データをコンピュータに返送するネットワークキャッシュ装置およびそのプログラムに関する。
【背景技術】
【０００２】
特許文献１には、内蔵ハードディスク装置を持たないディスクレスパーソナルコンピュータ（ＰＣ）を起動する時間を短縮することのできるネットワークブートシステムが記載されている。特許文献１においては、キャッシュ装置は、ディスクレスＰＣから送信要求されたデータが規定の論理ブロック、例えば論理ブロック０番地の読み出し要求であると、ストレージ装置に論理ブロック０番地の読み出し要求を送信するとともに、予め設定されたＯＳイメージ分のデータの読み出し要求をストレージ装置に送信する。ストレージ装置からＯＳイメージ分のデータの読み出し応答を受信すると、キャッシュ装置は、受信したＯＳイメージを内蔵の記憶媒体に記憶し、これを契機として、ディスクレスＰＣからの論理ブロック１番地以降の読み出し要求に対しては、ストレージ装置に要求を行わず、自装置内に記憶しているＯＳイメージから該当するデータをディスクレスＰＣに転送する。また、特許文献１には、ディスクレスＰＣから認証サーバへ認証要求が送られたときに、認証正常であれば、認証サーバからキャッシュ装置へＯＳイメージの読み出し指示が出され、キャッシュ装置は、これを契機として、ディスクレスＰＣからの最初の「読み出し要求」を受信する前に、ストレージ装置に対してＯＳイメージの「読み出し要求」を送信することが記載されている。
【０００３】
【特許文献１】特開２００５−１４９３３４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
特許文献１記載のネットワークブートシステムでは、コンピュータ（以下、ＰＣを例に説明）によって記憶装置の既定の論理ブロック番地が読み出されたこと、あるいはコンピュータを使用開始しようとするユーザによるユーザ認証が成功したこと、を契機としてデータ先読みが開始する。そうすると、キャッシュ装置が、ＰＣの動作に必要なデータを読み出し開始してから、ＰＣの動作に伴ってＰＣがリード要求の発行を開始するまでの時間は、数秒〜１０数秒しかない。
【０００５】
そのため、キャッシュ装置と記憶装置との間のネットワークの伝送遅延時間や帯域の影響が無視できない場合、ならびにストレージアクセスの待ち時間が無視できない場合、キャッシュ装置がリード要求を発行してから、対象データの取得を完了するまでの時間（以下、「ネットワークレスポンス時間」と呼ぶ）が増加し、データ先読みに必要な時間に対する、ネットワークレスポンス時間の占める割合が無視できなくなり、データ先読みに必要な時間が増加する恐れがある。ネットワークの伝送遅延時間や帯域、ストレージアクセスの待ち時間がネットワークレスポンス時間に影響を与える様子を図１に示す。
【０００６】
その結果、ＰＣからのリード要求発行時に、その対象データの先読みが未実行となり、キャッシュ装置に対象データが保存されていないという状態（以下、「キャッシュミスヒット」という）が発生する。その場合ＰＣのリード要求発行後、伝送遅延時間が大きく、あるいは帯域が小さい（以下、「性能が低い」と表現する）ネットワークを使用して記憶装置からデータの取得を待たなければならない。その結果、ＰＣの動作に必要なデータの取得が遅延し、ＰＣの動作速度の劣化防止効果が十分得られず、ＰＣの使用者にとってはＰＣの動作が遅く感じられ、利便性が低下する。
【０００７】
また、キャッシュ装置と記憶装置との間のネットワークとして、通信事業者が提供するベストエフォート型の商用ネットワークを利用した場合、ベストエフォートネットワークの伝送遅延時間や帯域が時々刻々変動することにより、ＰＣの動作に必要なデータの取得時間も変動し、ＰＣの動作速度が不安定化する。
【課題を解決するための手段】
【０００８】
本発明は、前記課題を解決するためのものであって、キャッシュ装置によるデータ先読みを高速化することによって、データ先読みのためのリード要求が、コンピュータからのリード要求に先行して行われることを確実とするものである。すなわち、コンピュータによるリード要求の対象データはキャッシュ装置内に既に保存されていること（これを、「キャッシュヒット」という）が確実となる。
【０００９】
そうすると、コンピュータは、リード要求発行後、逐次、記憶装置からデータの取得を待つ必要がなく、同一のデータは、アクセス時間の短いキャッシュ装置から取得することができる。これは、より性能の高いネットワークを介してデータを取得することを意味するから、コンピュータの動作性能が向上する。
【００１０】
本願において開示される発明のうち、代表的なものの概要を簡単に説明すれば、以下のとおりである。
【００１１】
第１の発明は、先読みパターンデータを格納する先読みパターンデータ格納領域を有する記憶デバイスと、コンピュータが発行するリード要求と同一の条件による先行リード要求を発行するための先読みパターンデータを先読みパターンデータ格納領域に格納する手段と、コンピュータが特定の動作に必要なデータを取得するためにリード要求の発行を開始する前に、先読みパターンデータの記述に従って先行リード要求を発行することにより、記憶装置からデータを取得して、当該データをキャッシュデータ格納領域内に一時的に記憶させる手段と、を備えることを特徴とする。
【００１２】
第２の発明は、先読みパターンデータを格納する先読みパターンデータ格納領域を有する記憶デバイスと、コンピュータが発行するリード要求において、時間的に連続して発行される複数のリード要求が読み出し対象とするブロック番地領域が連続している場合には、当該連続したブロック領域のすべてを読み出し対象とする１回の先行リード要求を発行するように変換した先読みパターンデータを先読みパターンデータ格納領域に格納する手段と、コンピュータが特定の動作に必要なデータを取得するためにリード要求の発行を開始する前に、先読みパターンデータの記述に従って先行リード要求を発行することにより、記憶装置からデータを取得して、当該データをキャッシュデータ格納領域内に一時的に記憶させる手段と、を備えることを特徴とする。
【００１３】
第３の発明は、先読みパターンデータを格納する先読みパターンデータ格納領域を有する記憶デバイスと、コンピュータが発行するリード要求において、同一のブロック番地が複数のリード要求によって読み出される場合には、当該ブロック番地は１回の先行リード要求によって読み出され、かつ番地が連続する複数のブロックは、１回の先行リード要求によって読み出されるように変換した先読みパターンデータを先読みパターンデータ格納領域に格納する手段と、コンピュータが特定の動作に必要なデータを取得するためにリード要求の発行を開始する前に、先読みパターンデータの記述に従って先行リード要求を発行することにより、記憶装置からデータを取得して、当該データをキャッシュデータ格納領域内に一時的に記憶させる手段と、を備えることを特徴とする。
【００１４】
第４の発明は、第３の発明において、格納する手段は、リード要求が、当該リード要求が対象とする読み出しブロックのブロック番地の昇順または降順で発行されるように変換して格納することを特徴とする。
【００１５】
第５の発明は、第３の発明において、格納する手段は、コンピュータによる、より早期の読み出し対象となるブロックを含むリード要求が、より早期に発行されるように変換して格納することを特徴とする。
【００１６】
第６の発明は、第１〜５の発明において、記憶装置との間で２以上のセッションを確立し、データ先読みのために発行される任意のリード要求は、当該２以上のセッションのいずれかを選択して発行する手段を備えることを特徴とする。
【００１７】
以下、第１〜第６の発明を、変数を用いて説明する。
【００１８】
コンピュータは、所定の動作をするにあたり、記憶装置内のあるブロック番地を対象としたリード要求を発行することによって、当該動作に必要なデータを取得する。そして、そのリード要求の回数が合計Ｎ回であり、ｉ番目のリード要求が読み出し対象とする記憶装置内ブロック番地は、開始ブロック番地をＢｉ、総ブロック数をＬｉとする連続した複数のブロック番地であることが、キャッシュ装置にとって既知であるとする。以下、このようなコンピュータの所定の動作に伴うリード要求の発行パターンを、「読み出しパターンサンプル（Ｂｉ，Ｌｉ）」と表現することとする。また、［Ｂｉ，Ｌｉ］の表記は、論理ブロック番地Ｂｉから論理ブロック番地Ｂｉ＋Ｌｉ−１の区間を意味するものとする。
【００１９】
第１〜６の発明は、既知の読み出しパターンサンプル（Ｂｉ，Ｌｉ）に基づき、データ先読みを行うことにある。そのうち、第２〜５の発明は、読み出しパターンサンプル（Ｂｉ，Ｌｉ）に対し、一定のアルゴリズムに基づいた加工を施すことにより、第１の発明と比較して、リード要求の発行を削減してデータ先読みを行うことにある。当該アルゴリズムは、第２〜５の発明においてそれぞれ異なる。また、第６の発明は、リード要求の発行を削減することはないが、リード要求を多重に発行することによって、ネットワークレスポンス時間の影響を極力排除しようとするものである。
【００２０】
第１の発明は、データ先読みをＮ回のリード要求を発行することにより行うものであって、ｉ番目のリード要求は［Ｂｉ，Ｌｉ］を対象とすることを特徴とするものである。要するに、キャッシュ装置が、読み出しパターンサンプル（Ｂｉ，Ｌｉ）によるリード要求の発行条件を完全に模倣して、データ先読みを行うものである。
【００２１】
この発明によれば、データ先読みが完了する前にコンピュータの動作が開始したとしても、コンピュータからのリード要求が対象とするデータが既にキャッシュ装置内に記憶されていることがより確実となり、キャッシュヒットの割合を高めることができる。その結果、コンピュータは、記憶装置からデータを取得する必要がなく、同一のデータはキャッシュ装置から取得することができる。これは、より性能の高いネットワークを介してデータを取得することを意味するから、コンピュータの動作性能が向上する。
【００２２】
第２の発明を説明する。読み出しパターンサンプル（Ｂｉ，Ｌｉ）におけるｉ番目ないしｊ番目の合計ｊ−ｉ＋１個のリード要求に着目したときに、連続する（ｉ番目とｉ＋１番目，ｉ＋１番目とｉ＋２番目，・・・ｊ−１番目とｊ番目の）リード要求の読み出し対象のブロック番地が連続している（Ｂｉ＋Ｌｉ＝Ｂｉ＋１，Ｂｉ＋１＋Ｌｉ＋１＝Ｂｉ＋２，・・・Ｂｊ−１＋Ｌｊ−１＝Ｂｊとなる）場合がある。
【００２３】
第２の発明は、このような場合において、第１の発明が発行するｉ番目ないしｊ番目のリード要求（合計ｊ−ｉ＋１個）を、［Ｂｉ，Ｂｊ＋Ｌｊ−Ｂｉ］を読み出し対象とする１回のリード要求に置き換えて記憶装置に発行することにより、データ先読みを行うことを特徴とする。例えば、２番目のリード要求が［２，２］、３番目のリード要求が［４，３］、４番目のリード要求が［７，４］であったとすると、これら３回のリード要求を、１回のリード要求［２，９］に置き換えて記憶装置に発行することにより、データ先読みを行うことを特徴とする。
【００２４】
この発明によれば、第１の発明では、データ先読みのためのリード要求の発行回数がＮ回であったものを、Ｎ回未満に削減することができる。その結果、リード要求を発行する度に発生するネットワークレスポンス時間の累積時間を削減することができ、データ先読みに必要な時間を短縮することができる。そうすると、キャッシュヒット率（リード要求１回当たりのキャッシュヒット数をいう。以下同じ）を高めることができ、ＰＣの動作性能を向上させることができる。
【００２５】
第３の発明は、読み出しパターンサンプル（Ｂｉ，Ｌｉ）に基づいてリード要求を発行する点では第１および２の発明と類似するが、読み出しパターンサンプル（Ｂｉ，Ｌｉ）を以下の方法により加工して、第１および２の発明とは異なる条件によってリード要求を発行するという特徴を持つ。
【００２６】
まず、読み出しパターンサンプル（Ｂｉ，Ｌｉ）（１≦ｉ≦Ｎ）において、整数ｋを１≦ｋ≦Ｎの範囲で変化させた結果、Ｂｋ≦ｍ≦Ｂｋ＋Ｌｋ−１を１回以上満たしたすべての整数ｍを抽出する。これは、読み出しパターンサンプルにおいて、１回以上読み出し対象となったブロック番地をすべて抽出することを意味する。
【００２７】
次に、抽出したブロック番地ｍを読み出し対象とするリード要求を発行することにより、データ先読みを行う。ただし、ブロック番地ｍが連続して存在（例えば、ｍ＝０，１，２，３，５，６，７・・・である場合には、ｍ＝０，１，２，３で連続して存在）している場合には、当該連続領域の開始ブロック番地をｂｉ，ブロック数をｌｉとして、［ｂｉ，ｌｉ］（上記の例では、［０，４］）を読み出し対象とする１個だけのリード要求を発行する。
【００２８】
本発明によれば、番地が連続するブロックを１回のリード要求で読み出し、かつ同一のブロック番地が２回以上のリード要求によって読み出されることがない。すると、同一のブロックが２回以上読み出される余地を残す第２の発明と比較して、リード要求の回数をさらに削減することができる。その結果、リード要求を発行する度に発生するネットワークレスポンス時間の累積時間を、第２の発明と比較してさらに削減することができ、データ先読み時間を短縮することができる。そうすると、第２の発明と比較して、キャッシュヒット率をさらに高めることができ、ＰＣの動作性能を向上させることができる。
【００２９】
第３の発明では、リード要求による読み出し対象のみが特徴となっていて、リード要求の発行順序には特徴がない。一方で、後述する第４および第５の発明は、第３の発明において、リード要求の発行順序に特徴を持たせたものである。
【００３０】
第４の発明は、第３の発明において発行されうるリード要求の発行順序を、その開始ブロック番地の昇順または降順とするものである。
【００３１】
この発明によれば、論理ブロック番地が小さい順または大きい順にリード要求が発行され、記憶装置からデータを取得する。そうすると、記憶装置が磁気ディスク装置であり、磁気ディスク上の中心から外周にかけて、あるいはその逆方向にブロック番地が順番に分布している場合では、データ先読みに伴って磁気ヘッドが中心から外周またはその逆方向に滑らかに移動し、無駄な往復動作をすることがないから、記憶装置からデータを高速に取得できることが期待でき、データ先読み時間を短縮することができる。また、記憶装置が、ＲＡＩＤ（Redundant Array of Independent Disks）装置である場合、一般的に、内蔵する磁気ディスク装置と、大きなデータサイズでの入出力が成されるので、この読み出されたデータの無駄が軽減され、データ先読み時間を短縮することができる。そうすると、第１および２の発明と比較して、キャッシュヒット率をさらに高めることができ、ＰＣの動作性能を向上させることができる。
【００３２】
第５の発明は、第３の発明において発行されうるリード要求の発行順序を、読み出しパターンサンプル（Ｂｉ，Ｌｉ）と比較して決定することに特徴がある。
【００３３】
まず、第３の発明において発行されうるリード要求のうち、読み出しパターンサンプル（Ｂ１，Ｌ１）の読み出し対象範囲を完全に含む、［ｂｉ，ｌｉ］（ｂｉ≦Ｂ１≦Ｂ１＋Ｌ１≦ｂｉ＋ｌｉ）を対象とするリード要求を選択して発行する。次に、読み出しパターンサンプル（Ｂ２，Ｌ２）について、同様に当該読み出し対象範囲を完全に含むリード要求を発行する。読み出しパターンサンプル（Ｂ３，Ｌ３）、（Ｂ４，Ｌ４）・・・についても、同様の選択を行う。
【００３４】
本発明によれば、データ先読みが完了する前にコンピュータの動作が開始したとしても、コンピュータからのリード要求が対象とするデータが既にキャッシュ装置内に保存されていることが、第４の発明と比較してより確実となり、キャッシュヒット率をさらに高めることができ、ＰＣの動作性能を向上させることができる。
【００３５】
第６の発明は、ＰＣが、記憶装置からデータを取得するために、リード要求を発行し、データが返送されてきたことを確認してから次のリード要求を発行するという制約があるという点に着目したものである。本発明においては、キャッシュ装置と記憶装置との間に複数のセッションを確立し、データ先読みに伴うリード要求を複数のセッションに振り分けて発行することによって、前記制約を回避するものである。
【００３６】
この発明によれば、ｉ番目のリード要求を発行した後、当該リードコマンドに対応するデータが返送されてくる前に、別のセッションを使用して次のｉ＋１番目のリード要求を発行することができるから、ネットワークレスポンス時間の単純な累積を回避し、データ先読みの高速化を図ることができる。そうすると、第１ないし５の発明と比較して、キャッシュヒット率をさらに高めることができ、ＰＣの動作性能を向上させることができる。
【発明の効果】
【００３７】
データ先読みにともなうリード要求の発行回数を削減し、あるいは複数のセッションを介してリード要求を発行することによって、データ先読み実行時のネットワーク利用率を上昇させ、データ先読みを高速化させることができる。その結果、ＰＣからの任意のリード要求があった時には、当該リード要求の対象データは既にキャッシュ装置に保存されていることとなるから、キャッシュヒット率をほぼ１００％とすることができ、ＰＣの動作（ＯＳやアプリケーションソフトの起動）を、さらに高速化することができる。
【００３８】
さらに、キャッシュヒット率がほぼ１００％となることで、ＰＣは、必要なデータを、ストレージ装置からではなく、キャッシュ装置から取得することとなる。そうすると、状態（帯域や遅延時間等）が変動しやすいＷＡＮを経由することなく、状態が比較的安定しているＬＡＮのみを経由して必要なデータを取得することになるから、ＷＡＮの状態変化の影響をほとんど受けることなく、ＰＣにおけるＯＳやアプリケーションソフトの起動時間を安定化することができる。
【発明を実施するための最良の形態】
【００３９】
本発明の実施例のネットワークキャッシュ装置を含む全体のシステム構成例を図２に示す。図２において、ＰＣ１〜ＰＣ３はコンピュータの一例となるパーソナルコンピュータ（以下、ＰＣ）である。Ｓ１は記憶装置の一例となるストレージ装置である。Ｃ１はネットワークキャッシュ装置（以下、「キャッシュ装置」と記載する。）である。ＰＣ１〜ＰＣ３、キャッシュ装置Ｃ１、ストレージ装置Ｓ１はＩＰ（Internet Protocol）網Ｎ１で接続されている。ここで、ＰＣ１〜ＰＣ３とキャッシュ装置Ｃ１の間のネットワーク性能（遅延の小ささ、帯域の大きさ、パケット損失の小ささ等）は、キャッシュ装置Ｃ１とストレージ装置Ｓ１の間のネットワーク性能よりも高いものとする。例えば、ＰＣ１〜ＰＣ３とキャッシュ装置Ｃ１は同一のＬＡＮ（Local Area Network）に属し、地理的にも相互に近い位置に設置されているものとする。一方、当該ＬＡＮとストレージ装置Ｓ１は、ＷＡＮ（Wide Area Network）で接続されていて、地理的にも遠い位置にあるものとする。
【００４０】
ＰＣ１〜ＰＣ３、キャッシュ装置Ｃ１、ストレージ装置Ｓ１の各ノードには、ＩＰ（Internet Protocol）アドレスとＴＣＰ（Transmission Control Protocol）ポート番号が付与されていて、ＩＰ網Ｎ１（ＬＡＮやＷＡＮ）を介して相互にＴＣＰ／ＩＰ通信が可能である。ＰＣ１〜ＰＣ３に割り当てられているＩＰアドレスをｐ１〜ｐ３、キャッシュ装置Ｃ１に割り当てられているＩＰアドレスをｃ１、ストレージ装置Ｓ１に割り当てられているＩＰアドレスをｓ１とする。
【００４１】
ＰＣ１〜ＰＣ３の内部には、イニシエータＩ１〜Ｉ３がある。一方、ストレージ装置Ｓ１の内部にはターゲットＴ１があり、ターゲット名ｔｎ１が割り当てられている。ターゲットＴ１には論理ユニットＬＵ１〜ＬＵ３が接続され、それぞれに論理ユニット番号ｌｕｎ１〜ｌｕｎ３が割り当てられている。１つの論理ユニットＬＵ（Logical Unit）内の記憶領域は、多数の論理ブロックによって構成され、各論理ブロックには論理ブロックアドレス（ＬＢＡ：Logical Block Address）が割り当てられている。１つの論理ブロックの容量は通常５１２Ｂｙｔｅであって、これより大きなデータが論理ユニットＬＵに保存される場合には、複数の論理ブロックに分けて保存される。
【００４２】
ＰＣ１〜ＰＣ３は、自らが特定の動作をするために、ストレージ装置Ｓ１内の特定の論理ユニットＬＵに保存されたデータをｉＳＣＳＩ（Internet Small Computer System Interface）プロトコルを使用して取得する。ｉＳＣＳＩはＩＥＴＦ（Internet Engineering Task Force）で標準化されたプロトコルであって、その詳細な仕様はＲＦＣ（Request for Comments）３７２０に記載されている。
【００４３】
具体的には、まずＰＣ１〜ＰＣ３のイニシエータＩ１〜Ｉ３が、Ｌｏｇｉｎ  Ｒｅｑｕｅｓｔオペレーションをストレージ装置Ｓ１内ターゲットＴ１に対して送信し、ストレージ装置Ｓ１内ターゲットＴ１からＬｏｇｉｎ  Ｒｅｓｐｏｎｓｅを返送してもらうことにより、ＰＣ１〜ＰＣ３内イニシエータＩ１〜Ｉ３とストレージ装置Ｓ１内ターゲットＴ１との間でｉＳＣＳＩセッションを確立する。次に、当該ｉＳＣＳＩセッションを使用して、イニシエータＩ１〜Ｉ３がターゲットＴ１に対してリード要求を送信し、Ｄａｔａ−Ｉｎを返却してもらうことでデータを取得する。ここで、「リード要求」とは、具体的にはＳＣＳＩ  ＲｅｑｕｅｓｔオペレーションにＳＣＳＩコマンド「ＲＥＡＤ」を載せたものであり、以後これを「ＳＣＳＩ−ＲＥＡＤ」と表記する。ＳＣＳＩ−ＲＥＡＤによれば、ＬＵ内の論理ブロックアドレスＢと論理ブロックの総数Ｌを指定することで、先頭の論理ブロックアドレスをＢ、論理ブロックの総数をＬブロックとする複数の連続した論理ブロックのデータを１度に読み出すことができる。以後、ＢとＬで表される連続論理ブロック領域を［Ｂ，Ｌ］、当該領域を読み出し対象とするＳＣＳＩ−ＲＥＡＤを「ＳＣＳＩ−ＲＥＡＤ［Ｂ，Ｌ］」と表記する。例えば、論理ブロック［０，１２］は、論理ブロックアドレス０〜１１の合計１２個の連続論理ブロック領域を指し、ＳＣＳＩ−ＲＥＡＤ［０，１２］は、当該論理ブロック領域のデータを読み出し対象とするＳＣＳＩ−ＲＥＡＤである。通常、１つのデータは複数の不連続な論理ブロックに散在していることが多く、その場合、複数のＳＣＳＩ−ＲＥＡＤによる読み出しが必要になる。
【００４４】
ここから以下においては、ＰＣ１〜ＰＣ３のうち、ＰＣ１が動作する場合の実施例を詳述する。そこで、ストレージ装置Ｓ１内ＬＵ１には、ＰＣ１の動作に必要な一切のデータ（オペレーティングシステム（以下、ＯＳ）やアプリケーションプログラム等）が保存されているものとする。
【００４５】
キャッシュ装置Ｃ１は、上記手順に伴ってＰＣ１とストレージ装置Ｓ１の間で送受信されるｉＳＣＳＩオペレーションやデータを中継する役割を持つ。すなわち、ＰＣ１がストレージ装置Ｓ１に対して送信するＬｏｇｉｎ  Ｒｅｑｕｅｓｔ、ＳＣＳＩ−ＲＥＡＤ、その他のオペレーションは一旦キャッシュ装置Ｃ１に送信され、キャッシュ装置Ｃ１によってストレージ装置Ｓ１に中継される。逆にストレージ装置Ｓ１からＰＣ１に対して返送されるデータも、同様にキャッシュ装置Ｃ１によって中継される。
【００４６】
キャッシュ装置Ｃ１が、ＰＣ１とストレージ装置Ｓ１の間で送受信されるｉＳＣＳＩオペレーションやデータを中継する方法には様々なものがあるが、その一つの方法を以下に詳述する。
【００４７】
その方法とは、キャッシュ装置Ｃ１をＩＰ網Ｎ１（ＬＡＮ）における１つのＩＰホスト（ＩＰアドレスｃ１を持ったノード）として設置し、ＰＣ１からストレージ装置Ｓ１、あるいはストレージ装置Ｓ１からＰＣ１に対して送信するｉＳＣＳＩオペレーションやデータを転送するＩＰパケットの着信ＩＰアドレスをｃ１とする方法である。この方法によるｉＳＣＳＩオペレーション等の中継シーケンスを図３に示す。
【００４８】
まず、ＰＣ１はキャッシュ装置Ｃ１との間でＴＣＰコネクション１を確立し、当該コネクションを利用して、Ｌｏｇｉｎ  Ｒｅｑｕｅｓｔをキャッシュ装置Ｃ１に送信する。Ｌｏｇｉｎ  Ｒｅｑｕｅｓｔを受信したキャッシュ装置Ｃ１は、Ｌｏｇｉｎ  Ｒｅｑｕｅｓｔ送信元ＩＰアドレス（ＰＣ１のｐ１）から、Ｔａｂｌｅ１を検索することにより、当該Ｌｏｇｉｎ  Ｒｅｑｕｅｓｔの中継先を検索し、検索した中継先であるストレージ装置Ｓ１（ＩＰアドレスｓ１、ＴＣＰポート３２６０）との間でＴＣＰコネクション２を確立して、当該ＴＣＰコネクション２を利用してＬｏｇｉｎ  Ｒｅｑｕｅｓｔを中継する。この時、キャッシュ装置Ｃ１は、ＴＣＰコネクション１とＴＣＰコネクション２が対であることを管理する。
【００４９】
Ｌｏｇｉｎ  Ｒｅｑｕｅｓｔを受信したストレージ装置Ｓ１は、ＴＣＰコネクション２を利用してＬｏｇｉｎ  Ｒｅｓｐｏｎｓｅをキャッシュ装置Ｃ１に返送し、Ｌｏｇｉｎ  Ｒｅｓｐｏｎｓｅを受信したキャッシュ装置Ｃ１は、ＴＣＰコネクション２に対応するＴＣＰコネクション１を利用して、Ｌｏｇｉｎ  ＲｅｑｕｅｓｔをＰＣ１に中継する。この時、ＰＣ１とストレージ装置Ｓ１との間にはｉＳＣＳＩセッションが確立する。
【００５０】
以降、ＰＣ１とストレージ装置Ｓ１との間で送受信されるｉＳＣＳＩオペレーション、レスポンス、データは、すべてコネクション１とＴＣＰコネクション２およびｉＳＣＳＩセッションを利用して送受信されることとなる。
【００５１】
キャッシュ装置Ｃ１は、さらにデータキャッシュ機能も持つ。データキャッシュ機能は、パッシブ（受動的）なものと、アクティブ（能動的）なものがある。
【００５２】
パッシブなキャッシュ機能とは、イニシエータがターゲットからデータを取得したことを契機に、当該データをキャッシュ装置内にも保存（キャッシュ）する機能である。すなわち、ストレージ装置Ｓ１からＰＣ１に対して返送されたデータは、キャッシュ装置Ｃ１によって中継されるとともに、キャッシュ装置Ｃ１内の記憶デバイス（メモリ、ハードディスクドライブ等）にも保存される。その結果、再度ＰＣ１からストレージ装置Ｓ１に対して同一データを読み出すためにＳＣＳＩ−ＲＥＡＤが発行された場合には、キャッシュ装置Ｃ１は当該ＳＣＳＩ−ＲＥＡＤをストレージ装置Ｓ１に中継することなく、キャッシュ装置Ｃ１は折り返し当該データをＰＣ１に対して返送する（キャッシュヒットする）。
【００５３】
アクティブなキャッシュ機能とは、パッシブなキャッシュ機能に加え、イニシエータがターゲットからデータを取得する前に、キャッシュ装置が自律的にデータをターゲットから取得し、キャッシュする機能である。すなわち、ＰＣ１がストレージ装置Ｓ１からデータを取得するためにストレージ装置Ｓ１に対してＳＣＳＩ−ＲＥＡＤを発行する前に、キャッシュ装置Ｃ１が自律的にストレージ装置Ｓ１に対してＳＣＳＩ−ＲＥＡＤを発行することにより、ＰＣ１が取得すると予想されるデータを前もって取得（以下、「データ先読み」と呼ぶ）し、キャッシュ装置内に保存する。そして、ＰＣ１がストレージ装置Ｓ１に対してＳＣＳＩ−ＲＥＡＤを発行し、ストレージ装置Ｓ１からデータを取得しようとした時には、既に同一のデータがキャッシュされている（キャッシュヒットする）ことが期待できるから、キャッシュ装置Ｃ１は当該ＳＣＳＩ−ＲＥＡＤをストレージ装置Ｓ１に中継することなく、キャッシュ装置Ｃ１は折り返し当該データをＰＣ１に対して返送する。
【００５４】
上記「ＰＣ１が取得すると予想されるデータ」は、「先読みパターンデータ」によって特定する。先読みパターンデータとは、キャッシュ装置Ｃ１内の記憶デバイスに保存されるデータであって、データ先読みを行う際にキャッシュ装置Ｃ１がストレージ装置Ｓ１に対して発行するＳＣＳＩ−ＲＥＡＤの発行条件を記述したものである。
【００５５】
先読みパターンデータの形式例を図４に示す。図４において、１行目〜３行目はデータ先読み対象のＬＵを特定する情報である。１行目はデータ先読み対象ＬＵが属するストレージのＩＰアドレスとＴＣＰポート番号、２行目は当該ＬＵが属するターゲット名、３行目は当該ＬＵの論理ユニット番号ＬＵＮである。４行目以降は、３行目までに特定された論理ユニット番号ＬＵＮにおける、読み出し対象ＬＢＡを特定する情報であり、各行が１個のＳＣＳＩ−ＲＥＡＤ［Ｂ，Ｌ］の発行に対応し、第１カラムは読み出し対象の先頭論理ブロックアドレス（＝Ｂ）、第２カラムは読み出しブロック総数（＝Ｌ）に対応する。
【００５６】
ただし、必要な情報が特定できる限り、先読みパターンデータの形式は図４のものに限られない。また、図４の１行目（ＩＰアドレス、ＴＣＰポート番号）、２行目（ターゲット名）、３行目（ＬＵ）の情報は、先読みパターンデータに含まれる必要はなく、先読みパターンデータとは別に保持してもよい。
【００５７】
図４の先読みパターンデータによれば、キャッシュ装置Ｃ１は、ＩＰアドレス１９２．１６８．１．１、ポート番号３２６０、ターゲット名ｉｑｎ．ｃｏｍ．ｈｉｔａｃｈｉ−ｎｔｔ−ｌａｂｓで特定されるターゲットとの間でｉＳＣＳＩセッションを確立し、ＬＵ＝０に対してＳＣＳＩ−ＲＥＡＤを発行することによって、データ先読みを行う。図４によれば、ＳＣＳＩ−ＲＥＡＤ［０，２］が１番目に発行され、ＳＣＳＩ−ＲＥＡＤ［２，２］が２番目に発行されることとなる。
【００５８】
先読みパターンデータは、データ先読みの目的（ＰＣの動作のうち、何を高速化させたいか）に応じて、システム管理者等が自由に作成することができる。例えば、特定のアプリケーションソフトウェアの起動を高速化するには、当該アプリケーションソフトウェアが保存されているＬＵとＬＢＡがデータ先読み対象となるように、先読みパターンデータを作成する。
【００５９】
ここから以下では、ＰＣ（ハードディスクドライブを内蔵しない）でのＯＳ起動を高速化するために、ＯＳ起動の際に必要なデータを先読みすることを想定して、先読みパターンデータの作成方法を詳述する。
【００６０】
先読みパターンデータを作成する最も簡便な方法は、実際にＰＣ１の電源を投入して（必要ならばユーザ認証を行って）ＯＳを起動させ、ＯＳの起動が完了するまでの間に、ＰＣ１からキャッシュ装置Ｃ１に対して送信されるすべての（Ｎ個の）ＳＣＳＩ−ＲＥＡＤ［Ｂｉ，Ｌｉ］（１≦ｉ≦Ｎ）をキャプチャし、その内容［Ｂｉ，Ｌｉ］（１≦ｉ≦Ｎ）どおりに先読みパターンデータ（図４では４行目以降）を記述するというものである。
【００６１】
キャプチャの方法としては、ＰＣ１とキャッシュ装置Ｃ１との間のネットワークにパケットキャプチャ装置を設置し、通過するＳＣＳＩ−ＲＥＡＤのパケット内容を解析して、［Ｂｉ，Ｌｉ］（１≦ｉ≦Ｎ）の値を抽出する方法がある。また、別の方法としては、通過するＳＣＳＩ−ＲＥＡＤの内容を解析、［Ｂｉ，Ｌｉ］（１≦ｉ≦Ｎ）を記録する機能をキャッシュ装置自身が配備し、それを使用する方法がある。いずれを選択しても問題ない。
【００６２】
以上の方法で作成した先読みパターンデータを、そのままキャッシュ装置Ｃ１に保存してデータ先読みをさせた場合、ＰＣ１がＯＳ起動に際して発行するｎ個のＳＣＳＩ−ＲＥＡＤ［Ｂｉ，Ｌｉ］（０≦ｉ≦ｎ）と、データ先読みによってキャッシュ装置Ｃ１がストレージ装置Ｓ１に対して発行するＳＣＳＩ−ＲＥＡＤは、同一となる。このように、データ先読みにおいて、ＰＣ１が発行するＳＣＳＩ−ＲＥＡＤを忠実に再現させるような先読みパターンデータの形式を、以後「形式１」と呼ぶこととする。
【００６３】
形式１の先読みパターンデータを使ってデータ先読みを行い、その後ＰＣ１でＯＳが起動すれば、ＰＣ１が発行するＳＣＳＩ−ＲＥＡＤコマンドの読み出し対象データは、常にキャッシュ装置に存在することになる。そうすると、ＰＣ１はストレージ装置Ｓ１ではなくキャッシュ装置Ｃ１から必要なデータを取得することができるから、ＰＣ１におけるＯＳ起動はより高速となる。
【００６４】
ＯＳの起動に際しては、例えばマイクロソフト株式会社（商標）のＯＳであるＷｉｎｄｏｗｓ  ＸＰ（商標）の場合、ＰＣは２００〜３００ＭＢｙｔｅ程度のデータを取得することがわかっている。そして、形式１による先読みパターンデータによって同程度サイズのデータを先読みすると、数十秒の時間を要することがわかっている。そのため、データ先読みの開始からＰＣ１のＯＳ起動開始までの時間が比較的短い場合は、データ先読みによるＳＣＳＩ−ＲＥＡＤの発行が、ＰＣからのＳＣＳＩ−ＲＥＡＤ発行に間に合わないこともある。そうすると、結局ＰＣ１はストレージ装置Ｓ１からデータの取得を待たなければならないこととなるから、ＰＣ１におけるＯＳ起動の高速化の効果が減退するという問題がある。
【００６５】
そこで、形式１におけるデータ先読みの冗長性を以下のような方法で排除し、データ先読みを高速化する。
【００６６】
ＰＣ１がＯＳ起動に際して発行するＳＣＳＩ−ＲＥＡＤ［Ｂｉ，Ｌｉ］を図示すると、一般的に図５のようになる。図５において、横軸はＬＢＡであり、縦軸は何度目に発行されたＳＣＳＩ−ＲＥＡＤであるかを表す。１本の線分は、１個のＳＣＳＩ−ＲＥＡＤによる読み出し対象論理ブロックの範囲を表す。Ｂは線分（１回のＳＣＳＩ−ＲＥＡＤコマンドによる読み出し範囲）の開始位置（先頭ＬＢＡ）を表し、Ｌは線分の長さ（１回のＳＣＳＩ−ＲＥＡＤコマンドにより読み出されるブロック総数）を表す。
【００６７】
図５の例では、計１４個のＳＣＳＩ−ＲＥＡＤが発行されているが、１〜３番目、４〜５番目、６〜８番目、９〜１１番目、１２〜１４番目のＳＣＳＩ−ＲＥＡＤコマンドは、それぞれ連続した論理ブロック領域を読み出している。
【００６８】
ここで、ＳＣＳＩによるデータ取得手順を図６に示す。図６は、９ブロックのデータを２つのＳＣＳＩ−ＲＥＡＤにより取得する場合（左）と、１つのＳＣＳＩ−ＲＥＡＤで取得する場合（右）を比較している。ＳＣＳＩによれば、ＳＣＳＩ−ＲＥＡＤを連続して発行するには、前に発行したＳＣＳＩ−ＲＥＡＤにより要求したデータがＤａｔａ−Ｉｎによって返送された後でなければ、次のＳＣＳＩ−ＲＥＡＤコマンドを発行することができない。そうすると、連続した論理ブロック（図６では９ブロック）のデータを図６（左）のように複数のＳＣＳＩ−ＲＥＡＤに分割して（図６（左）では、１番目に３ブロック、２番目に６ブロック）読み出すよりも、図６（右）のように１回のＳＣＳＩ−ＲＥＡＤですべてのブロックを読み出した方が、ＳＣＳＩ−ＲＥＡＤの発行回数も減少するから、より短時間で読み出しを完了することができる。
【００６９】
図５の場合であれば、１〜３番目、４〜５番目、６〜８番目、９〜１１番目、１２〜１４番目のＳＣＳＩ−ＲＥＡＤは、それぞれ１回のＳＣＳＩ−ＲＥＡＤに置き換えればよい。そうすると、図７のように、形式１の先読みパターンデータを「形式２」に変換した先読みパターンデータによっても、同一のデータ先読み効果が得られる。
【００７０】
形式１におけるＳＣＳＩ−ＲＥＡＤの発行回数が１４回であるのに対し、形式２の先読みパターンデータでは５回である。その結果、ＳＣＳＩ−ＲＥＡＤの発行にともなって発生するネットワークレスポンス時間の累積時間を削減することができるから、ネットワーク利用効率が上昇し、データ先読みに必要な時間を削減することができる。データ先読みに必要な時間を削減することができれば、キャッシュヒット率を高めることができるから、ＰＣ１の動作性能は向上する。
【００７１】
形式２によるＳＣＳＩ−ＲＥＡＤの発行条件を見てみると、３回目と５回目で同一の論理ブロック領域を読み出している。ところが、データ先読みにおいては、同一のデータを１度読み出してキャッシュすれば、再度読み出す必要はない。
【００７２】
また、形式２においては、２番目と４番目のＳＣＳＩ−ＲＥＡＤによる読み出し対象は連続しているにもかかわらず、別個のＳＣＳＩ−ＲＥＡＤを発行することになる。これは、形式１から形式２への変換においては、時間的に連続しているＳＣＳＩ−ＲＥＡＤの読み出し対象が連続論理ブロックである場合のみに、それらを１回のＳＣＳＩ−ＲＥＡＤに置換するからである。しかし、読み出し対象論理ブロックの連続性によるＳＣＳＩ−ＲＥＡＤの置換対象は、時間的に連続して発行されているものに限定する必要はない。
【００７３】
そこで、以上のような冗長性を排除するために、形式１の先読みパターンデータを「形式３」に変換する。形式３への変換アルゴリズムは、図８に示した通りである。
【００７４】
形式３の先読みパターンデータでは、形式１において２回以上読み出し対象となったブロック（図７における［Ｂ６，Ｌ６］，［Ｂ７，Ｌ７］，［Ｂ８，Ｌ８］）であっても、ＳＣＳＩ−ＲＥＡＤにより読み出される回数は１回のみとする。また、論理ブロックアドレスが連続した領域は、１回のみのＳＣＳＩ−ＲＥＡＤによって読み出されるようにする。さらに、ＳＣＳＩ−ＲＥＡＤの発行順序は、読み出し対象論理ブロックアドレスの小さい順または大きい順（図７では小さい順）とする。
【００７５】
形式３の効果は２つある。まず、形式１におけるＳＣＳＩ−ＲＥＡＤの発行回数が１４回、形式２では５回であるのに対し、形式３の先読みパターンデータによればＳＣＳＩ−ＲＥＡＤの発行回数を３回に削減することができる。その結果、データ先読みに必要な時間を、形式１や形式２と比較して削減することができる。
【００７６】
さらに、ストレージ装置Ｓ１が磁気ディスク装置であり、磁気ディスク上の中心から外周にかけて、あるいはその逆方向に論理ブロックアドレスが順番に分布している場合では、形式３に基づくデータ先読みに伴って磁気ヘッドが中心から外周またはその逆方向に滑らかに移動し、無駄な往復動作をすることがないから、ストレージ装置Ｓ１からデータを高速に取得できることが期待できる。
【００７７】
以上の２点より、形式１や２と比較してキャッシュヒット率をさらに高めることができるから、ＰＣ１の動作性能は向上する。
【００７８】
形式１（ＰＣ１におけるＯＳ起動においてデータ読み出しそのまま）によるＳＣＳＩ−ＲＥＡＤの発行条件を見てみると、論理ブロック［Ｂ４，Ｌ４］と［Ｂ５，Ｌ５］が、論理ブロック［Ｂ６，Ｌ６］、［Ｂ７，Ｌ７］、［Ｂ８，Ｌ８］よりも先に読み出されているにもかかわらず、形式３ではその順序が逆である。
【００７９】
そうすると、論理ブロック［Ｂ６，Ｌ６］、［Ｂ７，Ｌ７］、［Ｂ８，Ｌ８］のデータの読み出しが優先され、論理ブロック［Ｂ６，Ｌ６］、［Ｂ７，Ｌ７］のデータが必要になる時期に、当該データがキャッシュ装置Ｃ１に保存されていない事態が生じる恐れもある。その結果、ＳＣＳＩ−ＲＥＡＤがキャッシュ装置Ｃ１によってストレージ装置Ｓ１に中継され、ストレージ装置Ｓ１から比較的性能の低いネットワーク（ＷＡＮ）を介してデータを取得することになるから、データ先読みの高速化の効果が減退する。
【００８０】
以上の問題を解決するには、形式３においてＳＣＳＩ−ＲＥＡＤの発行順序のみを変更した、「形式４」の先読みパターンデータを使用する。形式１から形式４への変換アルゴリズムを図９に示す。
【００８１】
図９によれば、形式４におけるＳＣＳＩ−ＲＥＡＤの発行回数は３回であり、その回数は形式３と変わらない。そのため、データ先読みに必要な時間は形式３と変わらない。しかし、ＰＣ１が実際に必要とするデータをより早期に先読みする点で、形式３と比較してキャッシュヒット率を改善することができる。その結果、ＰＣ１におけるＯＳ起動をより高速化することができる。
【００８２】
形式２〜形式４の先読みパターンデータは、上述のアルゴリズムに基づき動作するプログラムによって形式１の先読みパターンデータを読み込み、それぞれの形式に変換、出力することによって得ることができる。
【００８３】
以上に説明した実施例は、先読みパターンデータの形式を変換することによって、データ先読みを高速化するものである。以下では、先読みパターンデータの形式は同一としつつ、データ先読みのためにＰＣ１内イニシエータＩ１とストレージ装置Ｓ１内ターゲットＴ１との間に確立するｉＳＣＳＩセッション数を増加し、複数のｉＳＣＳＩセッションを使用してＳＣＳＩ−ＲＥＡＤを発行することにより、データ先読みを高速化する原理および方法を詳述する。
【００８４】
ｉＳＣＳＩおよびＳＣＳＩによれば、ＳＣＳＩ−ＲＥＡＤを連続して発行する場合、ＳＣＳＩ−ＲＥＡＤによって要求したデータが返送されないと、次のＳＣＳＩ−ＲＥＡＤを発行されないという制約は、コンピュータが、ユーザ操作によって、先に読み出されたデータに基づき、次の動作を決定する非決定的な条件に基づいているためである。本実施例のデータ先読み処理は、先読みパターンデータに基づく、ストレージ装置のアクセスであるので、複数のｉＳＣＳＩセッションを確立し、ＳＣＳＩ−ＲＥＡＤを各セッションに振り分けて発行する。そうすると、当該制約の影響は最小限に抑えることができ、ネットワークの利用率が上昇する。その原理を図１０に示す。
【００８５】
図１０では、５個のＳＣＳＩ−ＲＥＡＤを単一のｉＳＣＳＩセッションで発行する場合（図１０（左）参照）と、３つのｉＳＣＳＩセッションに振り分けて発行する場合（図１０（右）参照）を比較している。ＳＣＳＩ−ＲＥＡＤの振り分け方は、図１０のようなラウンドロビン方式でもよいし、ランダム選択でもよい。
【００８６】
また、ストレージ装置へ、多重にリード要求を発行するインタフェースとして、複数のセッションを利用する他に、単一のセッションにおいて、ＳＣＳＩ２仕様以降に定められたＣｏｍｍａｎｄ  Ｑｕｅｕｉｎｇを使用しても、差し支えない。
【００８７】
以上の実施例は、ＰＣにおけるＯＳの起動を高速化する場合を想定して詳述したが、ＯＳの起動後に必要となるアプリケーションソフトウェアの起動も、本願発明を利用して高速化することができる。その方法を以下に詳述する。
【００８８】
先読みパターンデータを作成する最も簡便な方法として、実際にＰＣ１の電源を投入して（必要ならばユーザ認証を行って）ＯＳを起動させ、ＯＳの起動が完了するまでの間に、ＰＣ１からキャッシュ装置Ｃ１に対して送信されるすべての（Ｎ個の）ＳＣＳＩ−ＲＥＡＤ［Ｂｉ，Ｌｉ］（１≦ｉ≦Ｎ）をキャプチャし、その内容［Ｂｉ，Ｌｉ］（１≦ｉ≦Ｎ）どおりに先読みパターンデータ（図４では４行目以降）を記述するという方法を説明ずみである。
【００８９】
ここで、ＯＳ起動が完了したことをもってＳＣＳＩ−ＲＥＡＤ［Ｂｉ，Ｌｉ］のキャプチャを停止することなく、ＯＳ起動完了後、引き続き起動を高速化したいアプリケーションソフトウェアを起動させ、その起動完了後にキャプチャを停止し、そのキャプチャ内容［Ｂｉ，Ｌｉ］どおりに先読みパターンデータを作成する。そうすると、当該先読みパターンデータの対象に、当該アプリケーションソフトウェアの起動に必要なデータも含まれることとなるから、ＯＳの起動だけではなく、当該アプリケーションソフトウェアの起動によって読み出されるデータもキャッシュ装置に前もって保存されている状態となる。その結果、当該アプリケーションソフトウェアの起動を高速化することができる。
【００９０】
また、先読みパターンデータの対象を、アプリケーションソフトウェアの起動に必要なデータのみとすることもできる。その場合、ＯＳの起動は高速化できないが、当該アプリケーションソフトウェアの起動のみを高速化することができる。
【００９１】
次に、キャッシュ装置Ｃ１の内部構造（ソフトウェア構造）の例について、図１１を用いて説明する。キャッシュ装置Ｃ１は、図１１に示すように、ｉＳＣＳＩターゲットＣ１０１、キャッシュメモリ制御機能Ｃ１０２、キャッシュメモリ管理機能Ｃ１０３、先読みパターンデータ変換機能Ｃ１０４、ｉＳＣＳＩイニシエータＣ１０５をソフトウェアとして有し、記憶デバイスＣ１０６をハードウェアとして備える。記憶デバイスＣ１０６としては、メモリまたはハードディスクまたはその他の記憶手段を用いることができる。記憶デバイスＣ１０６は、キャッシュデータ格納領域Ｃ１０７、先読みパターンデータ格納領域Ｃ１０８を有する。キャッシュデータ格納領域Ｃ１０７、先読みパターンデータ格納領域Ｃ１０８はプログラムによって記憶デバイスＣ１０６内に作成される。
【００９２】
キャッシュメモリ制御機能Ｃ１０２は、図には示していないが、ＰＣが発行するリード要求と同一の条件による先行リード要求を発行するための先読みパターンデータを先読みパターンデータ格納領域Ｃ１０８に格納する機能と、ＰＣが特定の動作に必要なデータを取得するためにリード要求の発行を開始する前に、先読みパターンデータ格納領域Ｃ１０８内の先読みパターンデータの記述に従って先行リード要求を発行することにより、ストレージ装置Ｓ１からデータを取得して、当該データをキャッシュデータ格納領域Ｃ１０７内に一時的に記憶させる機能と、ストレージ装置Ｓ１との間で２以上のセッションを確立し、データ先読みのために発行される任意のリード要求は、当該２以上のセッションのいずれかを選択して発行する機能を備える。
【００９３】
先読みパターンデータ変換機能Ｃ１０４は、図には示していないが、ＰＣが発行するリード要求において、時間的に連続して発行される複数のリード要求が読み出し対象とするブロック番地領域が連続している場合には、当該連続したブロック領域のすべてを読み出し対象とする１回の先行リード要求を発行するように変換した先読みパターンデータを先読みパターンデータ格納領域Ｃ１０８に格納する機能と、ＰＣが発行するリード要求において、同一のブロック番地が複数のリード要求によって読み出される場合には、当該ブロック番地は１回の先行リード要求によって読み出され、かつ番地が連続する複数のブロックは、１回の先行リード要求によって読み出されるように変換した先読みパターンデータを先読みパターンデータ格納領域Ｃ１０８に格納する機能と、を備える。
【００９４】
図１１に示すように、ｉＳＣＳＩターゲットＣ１０１、キャッシュメモリ制御機能Ｃ１０２、キャッシュメモリ管理機能Ｃ１０３、先読みパターンデータ変換機能Ｃ１０４はアプリケーションプログラムであり、ｉＳＣＳＩイニシエータはオペレーティングシステムが有する機能である。キャッシュ装置Ｃ１は、これらのプログラムをＣＰＵが実行することにより、それぞれの機能を実現する手段を備える。なお、キャッシュ装置Ｃ１の内部構造（ソフトウェア構造）の一部または全部をハードウェアで構成しもよい。
【００９５】
図１１において、ｉＳＣＳＩターゲットＣ１０１は、ＰＣ１〜３が持つｉＳＣＳＩイニシエータ機能と通信し、ＰＣ１〜３との間でｉＳＣＳＩコマンドやデータを送受信する機能を持つ。一方、ｉＳＣＳＩイニシエータＣ１０５は、ストレージ装置Ｓ１が持つｉＳＣＳＩターゲット機能と通信し、ストレージ装置Ｓ１との間でｉＳＣＳＩコマンドやデータを送受信する機能を持つ。
【００９６】
キャッシュメモリ制御機能Ｃ１０２は、ｉＳＣＳＩターゲットＣ１０１とｉＳＣＳＩイニシエータＣ１０５（オペレーティングシステム内）との間の入出力制御を仲介し、まずは従来技術に係る機能を提供する。
【００９７】
すなわち、ＰＣ１からのＳＣＳＩ−ＲＥＡＤをｉＳＣＳＩターゲットＣ１０１経由で受信すると、キャッシュメモリ管理機能Ｃ１０３を介して、当該ＳＣＳＩ−ＲＥＡＤが読み出し対象とするデータがキャッシュデータ格納領域Ｃ１０７内に存在するか否かを検索する。検索の結果、キャッシュデータが存在しない（ミスヒット）と判断したならば、当該ＳＣＳＩ−ＲＥＡＤを、ｉＳＣＳＩイニシエータＣ１０５を介してストレージ装置Ｓ１に送信する。逆に、検索の結果、キャッシュデータが存在している（ヒット）と判断したならば、対象データを、キャッシュメモリ管理機能Ｃ１０３を介してキャッシュデータ格納領域Ｃ１０７から取得し、ｉＳＣＳＩターゲットＣ１０１を介してＰＣ１に返送する。また、ＰＣ１が送信したＳＣＳＩ−ＲＥＡＤがキャッシュミスヒットによりストレージ装置Ｓ１に到達した結果、読み出し対象のデータがストレージ装置Ｓ１からＤａｔａ−Ｉｎによって返送されてきた時には、当該Ｄａｔａ−ＩｎをＰＣ１に対して中継するとともに、当該Ｄａｔａ−Ｉｎに搭載されていたデータをキャッシュメモリ管理機能Ｃ１０３を介してキャッシュデータ格納領域Ｃ１０７に保存する。
【００９８】
キャッシュメモリ制御機能Ｃ１０２は、キャプチャされたＳＣＳＩ−ＲＥＡＤのとおりの先読みパターンデータを、キャッシュメモリ管理機能Ｃ１０３を介して、先読みパターンデータ格納領域Ｃ１０８に例えば図４に示すように書き込む。この書き込みは、前回、ＰＣ１が起動した時、あるいは専らキャプチャを目的としてＰＣ１を試験起動した時に行われる。ＯＳが起動開始してからＯＳが起動完了するまでに、ＳＣＳＩ−ＲＥＡＤが数千〜数万回発行されるので、その全てをキャプチャし、先読みパターンデータとして、先読みパターンデータ格納領域Ｃ１０８に格納する。
【００９９】
さらに、キャッシュメモリ制御機能Ｃ１０２は、従来技術に係るデータ先読み機能、および多重セッション確立機能も提供する。すなわち、キャッシュメモリ制御機能Ｃ１０２は、先読みパターン格納領域Ｃ１０８に保存された先読みパターンデータを読み込み、ｉＳＣＳＩイニシエータＣ１０５とストレージ装置Ｓ１との間で多重のｉＳＣＳＩセッションを確立する。そして、当該ｉＳＣＳＩセッションを介して、ＳＣＳＩ−ＲＥＡＤを先読みパターンデータの記述に従ってストレージ装置Ｓ１に発行することにより、ストレージ装置Ｓ１からデータを取得し、当該データをキャッシュメモリ管理機能Ｃ１０３を介してキャッシュデータ格納領域Ｃ１０７に保存する。多重セッション確立機能を用いない場合は、ｉＳＣＳＩイニシエータＣ１０５とストレージ装置Ｓ１との間で一つのｉＳＣＳＩセッションを確立し、同様な処理を行う。
【０１００】
次に、先読みパターンデータ変換機能Ｃ１０４について説明する。先読みパターン変換機能Ｃ１０４は、先読みパターンデータ格納領域Ｃ１０８に保存された先読みパターンデータを読み込み、各形式に変換し、変換後の先読みパターンデータを先読みパターンデータ格納領域Ｃ１０８に書き戻す。
【０１０１】
次に、キャッシュ装置Ｃ１の内部構造（ハードウェア構造）の例について、図１２を用いて説明する。
【０１０２】
図１２において、ハードウェアは、ＣＰＵ（Central Processing Unit）Ｃ１１１、メモリＣ１１２、ハードディスク（ＨＤＤ：Hard Disk Unit）Ｃ１１３、ＮＩＣ（Network Interface card）Ｃ１１４、そして各部を接続するシステムバスＣ１１５から構成される。
【０１０３】
ＣＰＵ（Ｃ１１１）は、従来技術に係る処理、および本願発明の実施例に詳述した処理を実現するために必要な、一切の演算処理を行う。
【０１０４】
図１１におけるオペレーティングシステム、ｉＳＣＳＩターゲット、ｉＳＣＳＩイニシエータ、従来技術に係るプログラム、本願発明に係る一切のプログラムは、メモリＣ１１２またはハードディスクＣ１１３に格納することができる。そして、これらのプログラムは適宜メモリＣ１１２にロードされて実行される（メモリＣ１１２に格納されていたプログラムは、メモリＣ１１２内の別の領域にロードされて実行される）。ＮＩＣ（Ｃ１１４）は、ＩＰネットワークＮ１と接続され、ＰＣ１〜ＰＣ３およびストレージ装置Ｓ１との間でＩＰによる通信を行う。
【０１０５】
図１１における記憶デバイスはＣ１０６、メモリＣ１１２またはハードディスクＣ１１３を割り当てることができる。メモリＣ１１２を割り当てた場合、キャッシュデータの書き込みまたは読み出しが高速に行うことができる一方で、単位容量あたりの価格が高いという欠点がある。一方、ハードディスクＣ１１３に割り当てた場合、単位容量あたりの価格が安い一方で、データの書き込みまたは読み出しが高速に行えないという欠点がある。
【０１０６】
以上に説明したハードウェア構造は、当該構造の要件を満たす通常のパーソナルコンピュータ、ワークステーション、サーバ等などで提供することもできる。
【０１０７】
以上、本発明者によってなされた発明を、前記実施形態に基づき具体的に説明したが、本発明は、前記実施形態に限定されるものではなく、その要旨を逸脱しない範囲において種々変更可能であることは勿論である。
【図面の簡単な説明】
【０１０８】
【図１】ネットワークの伝送遅延時間や帯域、ストレージアクセスの待ち時間が、ネットワークレスポンス時間に影響を与える様子を示した図である。
【図２】本発明の実施例のネットワークキャッシュ装置を含む全体のシステム構成例を示した図である。
【図３】キャッシュ装置によるｉＳＣＳＩオペレーション等の中継方法を示した図である。
【図４】先読みパターンデータの形式例を示した図である。
【図５】ＰＣがＯＳ起動する際に、読み出される論理ブロックのアドレスを示した図である。
【図６】ＳＣＳＩ−ＲＥＡＤによるデータ取得手順を示した図である。
【図７】先読みパターンデータの形式を形式１から形式２に変更するアルゴリズムを示した図である。
【図８】先読みパターンデータの形式を形式１から形式３に変更するアルゴリズムを示した図である。
【図９】先読みパターンデータの形式を形式１から形式４に変更するアルゴリズムを示した図である。
【図１０】複数のｉＳＣＳＩセッションを使用したＳＣＳＩ−ＲＥＡＤの発行手順を示した図である。
【図１１】キャッシュ装置のソフトウェア構造の一例を示した図である。
【図１２】キャッシュ装置のハードウェア構造の一例を示した図である。
【符号の説明】
【０１０９】
ＰＣ１〜ＰＣ３…パーソナルコンピュータ、ｐ１〜ｐ３…ＰＣ１〜ＰＣ３に割り当てられているＩＰアドレス、Ｉ１〜Ｉ３…イニシエータ、Ｃ１…ネットワークキャッシュ装置、ｃ１…ネットワークキャシュ装置Ｃ１に割り当てられているＩＰアドレス、Ｎ１…ネットワーク、Ｓ１…ストレージ装置、ｓ１…ストレージ装置Ｓ１に割り当てられているＩＰアドレス、ＬＵ１〜ＬＵ３…論理ユニット、ｌｕｎ１〜ｌｕｎ…論理ユニットＵ１〜ＬＵ３に割り当てられている論理ユニット番号、Ｃ１０１…ｉＳＣＳＩターゲット、Ｃ１０２…キャッシュメモリ制御機能、Ｃ１０３…キャッシュメモリ管理機能、Ｃ１０４…先読みパターンデータ変換機能、Ｃ１０５…ｉＳＣＳＩイニシエータ、Ｃ１０６記憶デバイス、Ｃ１０７…キャッシュデータ格納領域、Ｃ１０８…先読みパターンデータ格納領域、Ｃ１１１…ＣＰＵ、Ｃ１１２…メモリ、Ｃ１１３…ＨＤＤ、Ｃ１１４…ＮＩＣ、Ｃ１１５…システムバス
【図１】
0004606998.tif 000002
【図２】
0004606998.tif 000003
【図３】
0004606998.tif 000004
【図４】
0004606998.tif 000005
【図５】
0004606998.tif 000006
【図６】
0004606998.tif 000007
【図７】
0004606998.tif 000008
【図８】
0004606998.tif 000009
【図９】
0004606998.tif 000010
【図１０】
0004606998.tif 000011
【図１１】
0004606998.tif 000012
【図１２】
0004606998.tif 000013