(57)【要約】【課題】不揮発性記憶装置からのデータ取り出し時間を改善するための装置を得る。【解決手段】不揮発性記憶装置は、データを記憶するための記憶メモリと、ホストシステムがデータの読み出し要求を行う時にデータをプレロードするための、キャッシュメモリと、記憶装置コントローラであって、少なくとも１つのデータセグメントがデータオブジェクト内の先行するデータセグメントに対して不連続であるように記憶メモリ内に記憶された、不連続データオブジェクトを構成する複数のデータセグメントが、予測可能シーケンス内にあるということを判定するように、そして、現在のデータセグメントをキャッシュメモリからホストシステム内にロードした後で、予測可能シーケンス内の不連続な次のデータセグメントをキャッシュメモリ内にプレロードするように構成される記憶装置コントローラと、を含み、次のデータセグメントは、ホストシステムが次のデータセグメントの読み出し要求を行うに先立ってプレロードされる。【選択図】図１
2009539168.tif 000002
【特許請求の範囲】
【請求項１】
不揮発性記憶装置であって、
(ａ)データを記憶するための記憶メモリと、
(ｂ)ホストシステムが前記データの読み出し要求を行う時に前記データをプレロードするためのキャッシュメモリと、
(ｃ)記憶装置コントローラであって、
(ｉ)不連続データオブジェクトを構成する複数のデータセグメントであって、少なくとも１つの前記データセグメントが前記データオブジェクト内の先行する前記データセグメントに対して不連続であるように前記記憶メモリ内に記憶された、複数のデータセグメントが、予測可能シーケンス内にあるということを判定するように、そして、
(ii)現在のデータセグメントを前記キャッシュメモリからホストシステム内にロードした後で、前記予測可能シーケンス内の不連続な次のデータセグメントを前記キャッシュメモリ内にプレロードするように構成される記憶装置コントローラと、を具備し、前記次のデータセグメントは、前記ホストシステムが前記次のデータセグメントの読み出し要求を行うに先立ってプレロードされる、不揮発性記憶装置。
【請求項２】
前記コントローラは、
(iii)前記記憶メモリ内への前記データオブジェクトの書き込み時に、前記予測可能シーケンスに関する情報を記憶するように、さらに構成される、請求項１に記載の装置。
【請求項３】
前記コントローラは、
(iii)前記データオブジェクトは予測可能データオブジェクトであるという指示を、前記ホストシステムから受信するように、さらに構成される、請求項１に記載の装置。
【請求項４】
前記指示は、前記記憶メモリ内への前記データオブジェクトの書き込み時に提供される、請求項３に記載の装置。
【請求項５】
前記指示は、前記記憶メモリからの前記データオブジェクトの読み出し時に提供される、請求項３に記載の装置。
【請求項６】
前記コントローラは、
(iii)前記データオブジェクトの特性の調査によって、予測可能データオブジェクトとして前記データオブジェクトを判定するように、さらに構成される、請求項１に記載の装置。
【請求項７】
前記特性は、前記データオブジェクトの名前と、前記データオブジェクトの拡張子と、前記データオブジェクトの形式とからなる群からの少なくとも１つの特性を含む、請求項６に記載の装置。
【請求項８】
前記次のデータセグメントの識別情報が、前記データオブジェクトの外部のデータ構造と、前記データオブジェクトの前記現在のデータセグメント内のパラメータと、前記複数のデータセグメントの仮想アドレスから物理アドレスへの変換のためのテーブルと、前記現在のデータセグメントから前記次のデータセグメントへのポインタと、前記現在のデータセグメントのホストシステム指定と、前記現在のデータセグメントの、以前の取り出しにおける、前記現在のデータセグメントに続くデータセグメントの統計的頻度解析とからなる群からの少なくとも１つの項目から決定される、請求項１に記載の装置。
【請求項９】
前記ホストシステム要求は、前記キャッシュメモリ内にプレロードするための前記次のデータセグメントの識別情報を含む、請求項１に記載の装置。
【請求項１０】
前記コントローラは、
(iii)前記ホストシステムが前記次のデータセグメントの読み出し要求を行うに先立って、希釈アルゴリズムまたは希釈式を使用して、前記複数のデータセグメントから、前記キャッシュメモリ内にプレロードするための前記次のデータセグメントを選択するように、さらに構成される、請求項１に記載の装置。
【請求項１１】
不揮発性記憶装置からのデータ取り出し時間を改善するためにデータをプレロードするための方法であって、前記方法は、
(ａ)ホストシステムが前記データの読み出し要求を行う時に、前記データをプレロードするためのキャッシュメモリを提供するステップと、
(ｂ)不連続データオブジェクトを構成する複数のデータセグメントであって、少なくとも１つの前記データセグメントが前記データオブジェクト内の先行する前記データセグメントに対して不連続であるように前記装置内に記憶された、複数のデータセグメントが、予測可能シーケンス内にあるということを判定するステップと、
(ｃ)現在のデータセグメントを前記キャッシュメモリからホストシステム内にロードした後で、前記予測可能シーケンス内の不連続な次のデータセグメントを前記キャッシュメモリ内にプレロードするステップと、を含み、前記ホストシステムが前記次のデータセグメントの読み出し要求を行うに先立って前記次のデータセグメントがプレロードされる、方法。
【請求項１２】
前記方法は、
(ｄ)前記記憶装置内への前記データオブジェクトの書き込み時に、前記予測可能シーケンスに関する情報を記憶するステップをさらに含む、請求項１１に記載の方法。
【請求項１３】
前記方法は、
(ｄ)前記データオブジェクトは予測可能データオブジェクトであるという指示を、前記ホストシステムから受信するステップをさらに含む、請求項１１に記載の方法。
【請求項１４】
前記指示は、前記記憶装置内への前記データオブジェクトの書き込み時に提供される、請求項１３に記載の方法。
【請求項１５】
前記指示は、前記記憶装置からの前記データオブジェクトの読み出し時に提供される、請求項１３に記載の方法。
【請求項１６】
前記方法は、
(ｄ)前記データオブジェクトの特性の調査によって、予測可能データオブジェクトとして前記データオブジェクトを判定するステップをさらに含む、請求項１１に記載の方法。
【請求項１７】
前記特性は、前記データオブジェクトの名前と、前記データオブジェクトの拡張子と、前記データオブジェクトの形式とからなる群からの少なくとも１つの特性を含む、請求項１６に記載の方法。
【請求項１８】
前記次のデータセグメントの識別情報が、前記データオブジェクトの外部のデータ構造と、前記データオブジェクトの前記現在のデータセグメント内のパラメータと、前記複数のデータセグメントの仮想アドレスから物理アドレスへの変換のためのテーブルと、前記現在のデータセグメントから前記次のデータセグメントへのポインタと、前記現在のデータセグメントのホストシステム指定と、前記現在のデータセグメントの、以前の取り出しにおける、前記現在のデータセグメントに続くデータセグメントの統計的頻度解析とからなる群からの少なくとも１つの項目から決定される、請求項１１に記載の方法。
【請求項１９】
前記ホストシステム要求は、前記キャッシュメモリ内にプレロードするための前記次のデータセグメントの識別情報を含む、請求項１１に記載の方法。
【請求項２０】
前記方法は、
(ｄ)前記ホストシステムが前記次のデータセグメントの読み出し要求を行うに先立って、希釈アルゴリズムまたは希釈式を使用して、前記複数のデータセグメントから、前記キャッシュメモリ内にプレロードするための前記次のデータセグメントを選択するステップをさらに含む、請求項１１に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データセグメントがホストシステム内にロードされる前にデータセグメントをプレロードするために、キャッシュメモリが内部で使用される、不揮発性記憶装置からの、データ取り出し時間を改善するための装置に関する。取り出されるデータ(すなわち、ホストシステムによって要求されるデータ)は、順序付けられたデータ(すなわち、既知の、および／または「予測可能な」順序で並べられたデータ)と、ランダムデータとに分けられることが可能である。本発明は、順序付けられたデータを記憶装置から取り出すことに焦点を当てたものである。
【背景技術】
【０００２】
記憶装置(例えば、磁気テープ記録装置)からのデータ取り出し動作は、２つの主要なサブ動作に分けられる。
(１)記憶装置内データ取り出し段階(以下、「プレローディング」段階と記載する)。これは、ホストシステム要求に応じて発生し、記憶装置の内部コントローラが、特定のデータを探索することと、ホストシステムによって読み出されるようにデータを準備することとを含む。プレローディング段階の間は、データはホストシステムに配送されないことに留意されたい。
(２)ホストシステムデータ取り出し段階(以下、「ローディング段階」と記載する)。これは、プレローディング段階が完了した時に発生し、データがホストシステムによって読み出されるための準備ができたということを、記憶装置がホストシステムに通知することを含む。そのような通知は、データの準備ができたかどうかに関するホストシステムの質問に答えることによって、または、ホストシステムへの割り込みを引き起こして、データの準備ができたことを報知することによって、などの２つの方法で行われてもよい。
【発明の開示】
【発明が解決しようとする課題】
【０００３】
明らかに、従来技術におけるすべての記憶装置で一般的な、そのようなデータ取り出し動作は、第１のサブ動作のために必要とされる時間である、本来的に備わった待ち時間を有する。この待ち時間は、ホストシステムを妨害することはなく、そして、データの１つのセグメントを処理するための時間が、この待ち時間よりもはるかに長い場合、ほとんど注意されない。しかし、一部のデータ取り出し動作においては(特に、例えば、JPEGおよびＭＰＥＧデータのローディングなどの、ストリーミング処理においては)、処理時間は非常に短く、そして、最初のプレローディング段階を記憶装置が完了するのを待つ待ち時間が問題となる。さらに、いくつかのアプリケーションでは、記憶装置内のデータが、要求があり次第入手可能であることが重要である(例えば、「要求時ページング機構(demand-paging  mechanism)」を利用)。
【０００４】
従来技術において周知のプロキシサーバおよびキャッシュ記憶システムは、確率的であり、そして、より高速なアクセスを、データ自体とは無関係な考慮(例えば、取り出しの履歴、セクタの利用可能性、および将来の取り出しに関する先験的な知識)のみに基づいて提供するため、本明細書に記載した必要性を解決しない、ということに留意することが重要である。従来技術は、いかなるタイプの予測アプローチを使用しても、任意に選択されたデータファイルのローディング時間を改善しない。
【０００５】
記憶装置からどのデータセグメントが次にロードされるかの予測を高い成功確率で行うための装置を有することが望ましい。そのような予測を適用すること、および、予測されたデータセグメントを準備することによって、そのようなシステムは、時間を節約して、データ取り出しの効率を高めることが可能である。
【０００６】
読み出し処理の時間を減少させるために複数のデータセグメントをキャッシュする、従来技術のシステムは存在することに留意されたい(例えば、ディスクが１回転する際に入手可能なすべてのセクタを読み出すハードディスクドライブ)。そのような従来技術は、連続データオブジェクトのみに、そして、ディスクの１回転において読み出されることが可能な量のセクタのみに適用されるため、上述の必要性を解決しない。
【課題を解決するための手段】
【０００７】
本発明の目的は、データセグメントがホストシステム内にロードされる前にデータセグメントをプレロードするために、キャッシュメモリが内部で使用される、不揮発性記憶装置からの、データ取り出し時間を改善するための装置を提供することである。
【０００８】
明確にするために、以下のいくつかの用語は、本明細書で使用するために特に定義される。用語「データセグメント(data  segment)」は、本明細書では、１単位のデータとして、所与のプロトコルに従って書き込み、および／または読み出しされるデータの単位を意味し、したがって、書き込み動作、および／または読み出し動作は、通常、１つのセグメント(例えば、記憶装置内のセクタ)を書き込み、および／または読み出しする。用語「データオブジェクト(data  object)」は、本明細書では、論理的意味の結合(joint  logical  meaning)を有する、セグメントの集まり(例えば、セクタで作られたファイル)を意味するために使用される。用語「記憶装置(storage  device)」は、本明細書では、記憶装置を活動化し、初期化し、そして管理するホストシステムに、動作可能で接続されるように構成された、装置を意味する。記憶装置は、ホストシステムにデータを提供し(例えば、データ入力および読み出し動作)、かつ／または、ホストシステムからデータを取り出す(例えば、データ出力および書き込み動作)。
【０００９】
用語「データシーケンス(data  sequence)」は、本明細書では、記憶装置内のデータの順序を示し、そして、現在のセグメントを使用中に次のセグメントの論理アドレスを予測することを可能にする、記憶装置内のデータオブジェクトの論理セグメント(例えば、ビット、バイト、セクタ、セグメント、ユニット、およびブロック)のインデックスを意味する。用語「予測可能シーケンス(predictable  sequence)」は、本明細書では、特定の順序で読み出されるデータセグメントの組を意味する。本発明のいくつかの実施形態では、特定の順序は、ホストシステムによって記憶装置に提供される。あるいは、特定の順序は、データオブジェクト内にある情報から、または、読み出し動作の開始時にホストシステムによって提供される情報から、記憶装置によって導き出される。
【００１０】
用語「データ取り出し時間(data-retrieval  time)」は、本明細書では、データオブジェクトのローディング処理を実行するための時間を意味する。本発明においては、ローディング中にセグメントごとのプレローディング動作が実行される処理が、そのようなセグメントごとのプレローディング動作がない類似した処理よりも、処理を高速にし、それにより、データ取り出し時間を改善する。用語「連続データオブジェクト(contiguous  data  object)」は、本明細書では、連続したアドレスを有するセグメントで作られたデータオブジェクトを意味する。用語「不連続データオブジェクト(non-contiguous  data  object)」は、本明細書では、連続していないアドレスを有するセグメントで作られたデータオブジェクトを意味する。
【００１１】
用語「希釈データオブジェクト(diluted  data  object)」は、本明細書では、本発明に従って予測可能な方法でプレロードされることから除外されるセグメントを有する、データオブジェクトを意味する。用語「希釈式(diluted  formula)」および「希釈アルゴリズム(diluted  algorithm)」は、本明細書では、本発明に従ってプレロードされる次のデータセグメントを、希釈データオブジェクトから除外されないデータセグメントから、予測するために使用される、それぞれ、式およびアルゴリズムを意味する。
【００１２】
本発明は、ホストシステムによって要求された、記憶装置からの不連続データオブジェクトのシーケンスを識別し、そして、そのようなシーケンスを使用して、現在のセグメントが処理されている間に、次のデータセグメントを読み出すために準備するための、装置を教示する。そのような装置は、プレローディング段階の待ち時間をなくし、次のセグメントを要求があり次第ホストシステムが入手できるようにする。
【００１３】
プレロードされたセグメントがホストシステムによって要求されない場合に、冗長なステップが存在する可能性がある。本発明では、次のセグメントは実際にホストシステムによって要求されると仮定しているが、しかし、次のプレロードされたセグメントが要求されない可能性はある(例えば、ホストアプリケーションがローディング処理を中断した場合)。そのような場合、セグメントのプレローディングの実行において不必要に失われる時間はわずかである。
【００１４】
本発明の目的は、ホストシステムによって必要とされる次のセグメントを、セグメントが実際に要求される前に予測することによる、記憶装置からホストシステムへの（または、別の記憶装置への）、不連続データセグメントのより高速な転送を教示することである。
【００１５】
一部のアプリケーションでは、セグメントはランダムな順序で要求され、要求される次のセグメントを予測することは困難となっているが、他のアプリケーション（例えば、音楽の再生、画像の表示、およびプログラムコードシーケンスの実行）では、常に順次的に取り出されるセグメントの組が存在する(例えば、データオブジェクト)。セグメントは、通常、不連続な方法で記憶されるため、不連続データオブジェクトの取り出しは、いくらかの待ち時間を含む。
【００１６】
本発明では、記憶装置のコントローラが、ロードされる予測可能シーケンスを検出し、次のセグメントの識別情報に関する情報に基づいて、次のセグメントをプレロードする。取り出されるデータオブジェクトが予測可能データオブジェクトとして取り出されるべきかどうかを、記憶装置のコントローラが判定するための、いくつかの代替の方法が存在する。以下の実施形態は、表１内で、次のセグメントを決定するエンティティ（すなわち、ホストシステムまたは記憶装置）の、および決定の時(すなわち、書き込み動作時または読み出し動作時)の、「次のセグメントの決定」条件に従って分類されている。
【００１７】
【表１】
2009539168.tif 000003
【００１８】
本発明の好ましい実施形態では(表１、［１Ａ］(ｉ〜ii)参照)、ホストシステムが、データオブジェクトの書き込み時に、データオブジェクトは予測可能として処理されるべきであるということを記憶装置に通知し、そして記憶装置は、その情報を使用して、取り出し時に、データオブジェクトを予測可能として処理する(すなわち、記憶装置は、現在のセグメントの配送時に、読み出されるべき次のセグメントのアドレスを決定して、そのセグメントを「キャッシュする」(すなわち、そのセグメントをキャッシュメモリに送る))。
【００１９】
本発明の別の好ましい実施形態では(表１、［１Ｂ］(ｉ)参照)、ホストシステムは、記憶装置内のセグメントの読み出し時に、読み出し時に現在のセグメントに続くべきセグメントの識別情報を、記憶装置に指示する。記憶装置は、読み出し時に、ホストシステムの命令に従い、そして、データオブジェクトを予測可能として処理する。
【００２０】
本発明の別の好ましい実施形態では(表１、［２Ａ］(ｉ〜iii)参照)、記憶装置のコントローラは、データオブジェクトの書き込み時に、以下のように、(データオブジェクトの名前、拡張子、または内容に基づいて)データオブジェクトは予測可能であるということを認識する。
(ｉ)ファイル名に基づいて：記憶装置は、データオブジェクトのタイプ(予測可能または予測不能)を、データオブジェクトの名前(例えば、ファイル名)によって識別する。例えば、ファイルのタイプを示す特定の文字列で始まるファイル名が存在する。ファイルタイプに従って、記憶装置は、ファイルタイプが予測可能シーケンスに従うかどうかを認識する。従来技術の例は、デジタルカメラによって作成され、ファイル名IMG0.JPG、IMG1.JPG、…IMGXXX.JPGを使用して記憶された、JPEGファイルである。
(ii)ファイル拡張子に基づいて：記憶装置は、データオブジェクトのタイプ(予測可能または予測不能)を、ファイル拡張子によって識別する。例えば、ファイル名の拡張子は、ファイルのタイプを示す場合がある。ファイルタイプに従って、記憶装置は、ファイルタイプが予測可能シーケンスに従うかどうかを認識する。従来技術の例は、拡張子JPGを有するJPEGファイル、または拡張子MPGを有するMPEGファイルである。
(iii)内容形式に基づいて：記憶装置は、データオブジェクトのタイプ(予測可能または予測不能)を、ファイル内容に含まれている一意の識別情報または「シグネチャ」によって識別する。従来技術の例は、ファイル(すなわち、データオブジェクト)の特定のオフセットにおいて固有のシグネチャ、「B000FF」を含む、ウィンドウズ(登録商標)ＣＥ(またはＷｉｎＣＥ)画像である。データオブジェクトの内部で特定のオフセットを有する、そのようなシグネチャに従って、記憶装置は、データを、実行可能ＯＳ画像として識別する。特定のオフセットを有するシグネチャと、(データオブジェクトの先頭からの特定のオフセットにおける)「チェックサム」とに従って識別される、よく知られている業界形式が存在する。
【００２１】
上記の好ましい実施形態のすべてにおいて、記憶装置コントローラは、本発明の装置が読み出し時に動作可能であることを可能にする方法で、データオブジェクトを書き込む。
【００２２】
本発明の別の好ましい実施形態では(表１、［１Ｂ］(ii)参照)、ホストシステムは、データオブジェクトまたはデータオブジェクトの一部の読み出し時に、データオブジェクトは予測可能データオブジェクトとして読み出されるべきであるということを記憶装置に通知し、そして記憶装置は、書き込み時に生成されたデータシーケンスを使用して、次のデータセグメントを識別し、現在のセグメントの配送時に、次のデータセグメントをキャッシュする。
【００２３】
本発明の別の実施形態では(表１、［２Ｂ］(ｉ)参照)、ホストシステムのホストアプリケーションは、データオブジェクトの読み出し時に、希釈データオブジェクト内の次のデータセグメントを決定するために記憶装置が使用すべき、希釈式または希釈アルゴリズムを、記憶装置に指示し、そして記憶装置は、そのような式に従って、データセグメントをキャッシュして配送する。そのような実施形態の適用例は、大規模画像の取り出しである。そのような取り出しは、順序的に、または、画像の部分をサンプリングすること(そして、欠けている部分を後で埋めること)によって、行われてもよい。そのような実施形態の別の適用例は、データベース上の探索の完了に続く、大規模データベースからのレコードの取り出しである。探索は、ポインタのリストを提供し、そして取り出しは、各ポインタについて、指定された数のセグメントを必要とする。
【００２４】
本発明の別の好ましい実施形態では、次のセグメントのための「式」は、単に、「現在のセグメントに続くセグメントを読み出す」ための命令である。そのような場合、アプリケーションは、任意のデータ構造が連続データオブジェクトとして読み出されることを可能にする。
【００２５】
本発明の別の好ましい実施形態では、ホストシステムは、データオブジェクトの読み出し時に、読み出されるべき次のセグメントの特定の識別情報を、各読み出しコマンドとともに任意に指定し、そして記憶装置は、その後、次のセグメントをキャッシュする。そのような場合、式またはアルゴリズムは必要とされない。
【００２６】
記憶装置コントローラが、予測可能であることが知られているデータオブジェクトを書き込む場合、コントローラは、２つの代替の実施形態のうちの１つの中で、データオブジェクトに、そのようなものとしてマークする。
(１)コントローラは、データオブジェクトの個々のセグメントをマッピングするデータ構造を維持し、そして、取り出し時に、どれがシーケンス内の次のセグメントであるかを認識する。そのようなデータ構造は、ポインタ、インデックス、式、または、次のセグメントを予測できるように指し示すことが可能な任意のその他の指示の形態を取ってもよい。それらのインデックスを維持するための１つの方法は、すべてのフラッシュメモリ記憶装置内のマッピングテーブル内に存在する、仮想−物理「変換」データを、記憶装置の各セグメントに適用される情報を維持するために使用することである。関連するセグメントが予測可能であるかどうかを示すために、セグメント情報にビットが追加されてもよい。データオブジェクトにラベル付けするそのようなアプローチは、予測可能属性のために別個のインデックスを管理することに比較して、より少ない記憶メモリ消費と、より良好な取り出し時間性能とを確実にする。
(２)予測可能データオブジェクトの各セグメントは、書き込み時に、シーケンス内の次のセグメントへのポインタと関連付けられる。取り出し時に、コントローラは、このポインタを読み出し、そして以下で述べるように、次のセグメントを準備する。
【００２７】
本発明の別の好ましい実施形態では、「後続セグメント(follower  segment)」の識別情報は、コントローラによって統計的に決定される。コントローラは、所与のデータセグメントに続いて要求されるデータセグメントの識別情報を記録する。そのような所与のデータセグメントの識別時に、識別情報が記録されたデータセグメントが、現在のデータセグメントの後続データセグメントとして指定され、そして、現在のデータセグメントが要求されるたびに予測できるようにキャッシュされる。(ルーチンが「if/then」ブランチにおいて分岐して、２つ以上の代替のセグメントの連鎖を発生させる可能性がある、プログラムコードにおけるように)後続セグメントが、次に要求されるデータセグメントに必ずなるという保証はないが、データセグメントが「頻繁な後続」である統計的確率により、ファイルアクセス時間の改善が存在する。これは、データオブジェクトの取り出しの履歴を追跡する、単純な取り出し履歴アプローチとは対照的である。本発明では、次のデータオブジェクトだけでなく、後続セグメントを予測する。
【００２８】
本発明の本質的な特徴は、ホストシステムの、予期される次のデータセグメント取り出し要求に関して、(任意の情報源から)記憶装置に知られている情報に基づいた、記憶装置コントローラによる、次のデータセグメントのプレローディング段階の自律的な実行である。
【００２９】
ホストシステムによって(または、ダイレクトメモリアクセス(ＤＭＡ)処理の中で、別の記憶装置によって)データセグメントが要求された場合、コントローラは、データセグメントが予測可能データオブジェクトに属するかどうかを検査する。そのような検査は、上述の２つの方法のうちのいずれかで実行される。データセグメントが予測可能データオブジェクトに属することが見出された場合、ホストシステムにデータセグメントをロードした直後に、コントローラは、データオブジェクト内の次のデータセグメントをプレロードする。ホストシステムが次のデータセグメントを要求した場合、コントローラは、ただちにそのデータセグメントを配送することが可能である。
【００３０】
したがって、本発明によれば、(ａ)データを記憶するための記憶メモリと、(ｂ)ホストシステムがデータ読み出し要求を行う時にデータをプレロードするための、キャッシュメモリと、(ｃ)記憶装置コントローラであって、(ｉ)少なくとも１つのデータセグメントがデータオブジェクト内の先行するデータセグメントに対して不連続であるように記憶メモリ内に記憶された、不連続データオブジェクトを構成する複数のデータセグメントが、予測可能シーケンス内にあるということを判定するように、そして(ii)現在のデータセグメントをキャッシュメモリからホストシステム内にロードした後で、予測可能シーケンス内の不連続な次のデータセグメントをキャッシュメモリ内にプレロードするように構成される記憶装置コントローラとを含み、次のデータセグメントは、ホストシステムが次のデータセグメントの読み出し要求を行うに先立ってプレロードされる、不揮発性記憶装置が初めて提供される。
【００３１】
好ましくは、コントローラは、(iii)記憶メモリ内へのデータオブジェクトの書き込み時に、予測可能シーケンスに関する情報を記憶するように、さらに構成される。
【００３２】
好ましくは、コントローラは、(iii)データオブジェクトは予測可能データオブジェクトであるという指示を、ホストシステムから受信するように、さらに構成される。
【００３３】
最も好ましくは、指示は、記憶メモリ内へのデータオブジェクトの書き込み時に、または記憶メモリからのデータオブジェクトの読み出し時に提供される。
【００３４】
好ましくは、コントローラは、(iii)データオブジェクトの特性の調査によって、予測可能データオブジェクトとしてデータオブジェクトを判定するように、さらに構成される。
【００３５】
最も好ましくは、特性は、データオブジェクトの名前と、データオブジェクトの拡張子と、データオブジェクトの形式とからなる群からの少なくとも１つの特性を含む。
【００３６】
好ましくは、次のデータセグメントの識別情報が、データオブジェクトの外部のデータ構造と、データオブジェクトの現在のデータセグメント内のパラメータと、複数のデータセグメントの仮想アドレスから物理アドレスへの変換のためのテーブルと、現在のデータセグメントから次のデータセグメントへのポインタと、現在のデータセグメントのホストシステム指定と、現在のデータセグメントの、以前の取り出しにおける、現在のデータセグメントに続くデータセグメントの統計的頻度解析とからなる群からの少なくとも１つの項目から決定される。
【００３７】
好ましくは、ホストシステム要求は、キャッシュメモリ内にプレロードするための次のデータセグメントの識別情報を含む。
【００３８】
好ましくは、コントローラは、(iii)ホストシステムが次のデータセグメントの読み出し要求に先立って、希釈アルゴリズムまたは希釈式を使用して、複数のデータセグメントから、キャッシュメモリ内にプレロードするための次のデータセグメントを選択するように、さらに構成される。
【００３９】
これらの、およびさらなる実施形態は、以下の詳細な説明および例から明らかとなるであろう。
【００４０】
本発明を、添付の図面を参照して、あくまでも例として、ここに以下に説明する。
【図面の簡単な説明】
【００４１】
【図１】本発明の好ましい実施形態による、予測可能データ取り出しシステムの簡易化したブロック図である。
【図２】本発明の好ましい実施形態による、予測可能データ取り出し処理内のステップの簡易化したフローチャートである。
【図３】データオブジェクトが予測可能でない場合の(フローＡ)、本発明の予測可能データ取り出し処理の簡易化したフローチャートである。
【図４】予測可能データオブジェクトの最初のセグメントが読み出される場合の(フローＢ)、本発明の予測可能データ取り出し処理の簡易化したフローチャートである。
【図５】予測可能データオブジェクトが読み出される場合の(フローＣ)、本発明の予測可能データ取り出し処理の簡易化したフローチャートである。
【図６】予測可能データオブジェクトの最後のセグメントが読み出される場合の(フローＤ)、本発明の予測可能データ取り出し処理の簡易化したフローチャートである。
【図７】本発明の好ましい実施形態による、図３〜図６の処理のフローＡ〜Ｄを時間に応じて示す概略図である。
【発明を実施するための最良の形態】
【００４２】
本発明は、データセグメントがホストシステム内にロードされる前にデータセグメントをプレロードするために、キャッシュメモリが内部で使用される、不揮発性記憶装置からの、データ取り出し時間を向上させるための装置に関する。本発明による、不揮発性記憶装置からのデータ取り出し時間を向上させるための原理および動作は、添付の説明および図面を参照することによってより良く理解されるであろう。
【００４３】
ここで図面を参照すると、図１は、本発明の好ましい実施形態による、予測可能データ取り出しシステムの簡易化したブロック図である。記憶装置１２(例えば、ＵＳＢフラッシュドライブ(ＵＦＤ)またはメモリカード)に接続された、ホストシステム１０(例えば、パーソナルコンピュータまたは携帯電話)が示されている。記憶装置１２は、コントローラ１４と不揮発性記憶メモリ１６とを有する。記憶メモリ１６は、データセグメント１８で作られたデータオブジェクト１７を含む。記憶装置１２は、さらに、一般に記憶メモリ１６よりもはるかに高速でありかつ小さい、キャッシュメモリ１９を有する。データ取り出し要求をホストシステム１０から受信すると、記憶装置１２は「探索(search)」動作を実行し、これは実際には、ホストシステム１０上での読み出し動作のためにデータセグメント１８を準備する。
【００４４】
探索は、インデックスおよび／またはマッピングテーブルを読み出すことと、どのデータオブジェクト１７が読み出されたかに従って、データセグメント１８の正しいアドレスを決定することと、データセグメント１７をキャッシュメモリ１９内にロードすることとを含むため、探索は実行に時間がかかる。探索が実行されている間、記憶装置１２は、データオブジェクト１７の準備がまだできていないということを(例えば、レディ／ビジー(ready/busy)としてステータスを示すビットを介して)ホストシステム１０に通知するか、または、ホストシステム１０からのデータ取り出し要求に関連付けられた読み出し動作に対して、失敗を応答する。データオブジェクト１７の準備ができた場合(すなわち、記憶装置１２が、関連するファイル、関連するトラック、または関連するフラッシュ消去可能ユニットを見つけた場合)、記憶装置１２はホストシステム１０に、データオブジェクト１７が読み出されるための準備ができたということを(レディ／ビジービットを介して、または割り込みによって)通知する。この時点で、ホストシステム１０、または別の記憶装置は、データオブジェクト１７を読み出すことが可能である。
【００４５】
図２は、本発明の好ましい実施形態による、予測可能データ取り出し処理内のステップの簡易化したフローチャートである。データセグメント１８に対する要求をホストシステム１０から受信すると(ステップ２０)、コントローラ１４は、要求されたデータセグメント１８がキャッシュメモリ１９内にあるかどうかを判定する(ステップ２２)。
【００４６】
図３は、データオブジェクトが予測不能である場合の(フローＡ)、本発明の予測可能データ取り出し処理の簡易化したフローチャートである。予測可能データオブジェクト１７の部分として認識されないデータセグメント１８は、ホストシステム１０の要求に先立って読み出されてキャッシュメモリ１９内にロードされる、ということはない。データセグメント１８がキャッシュメモリ１９内にまだない場合(ステップ２２)、コントローラ１４は、要求されたデータセグメント１８の、キャッシュメモリ１９内へのロードに進む(ステップ２４)。コントローラ１４は、次に、データセグメント１８が読み出されるための準備ができたということをホストシステム１０に通知し、そして、ホストシステム１０がデータセグメント１８を読み出す際に、自動的にデータセグメント１８をホストシステム１０に送り(ステップ３０)、コントローラ１４は、現在要求されているデータセグメント１８が予測可能データオブジェクト１７の部分であるかどうかを検査する(ステップ３２)。現在要求されているデータセグメント１８が予測可能データオブジェクト１７の部分でない場合、コントローラ１４は、読み出し動作を終了する(ステップ３８)。
【００４７】
図４は、予測可能データオブジェクトの最初のセグメントが読み出される場合の(フローＢ)、本発明の予測可能データ取り出し処理の簡易化したフローチャートである。ステップ３２で予測可能データオブジェクト１７の場合に続いて、現在のデータセグメント１８がデータオブジェクト１７のシーケンス内の最後のデータセグメント１８ではない場合、コントローラ１４は、現在のデータセグメント１８が「後続セグメント(follower  segment)」を有するかどうかを検査する(ステップ２８)。現在のデータセグメント１８が、データオブジェクト１７のシーケンス内の最後のデータセグメント１８である場合、コントローラ１４は、終了に進む(ステップ３８)。データセグメント１８が、データオブジェクト１７のシーケンス内の最後のデータセグメントとして識別されない場合(すなわち、データセグメント１８が「後続セグメント」を有する場合)、コントローラ１４は、データオブジェクト１７のシーケンス内の次のデータセグメント１８を特定し(ステップ３４)、次のデータセグメント１８をキャッシュメモリ１９内にロードし(ステップ３６)、そしてその後、終了に進む(ステップ３８)。
【００４８】
図５は、予測可能データオブジェクトが読み出される場合の(フローＣ)、本発明の予測可能データ取り出し処理の簡易化したフローチャートである。この場合、取り出されるデータセグメントは、データオブジェクト内の最初のデータセグメントでも、最後のデータセグメントでもない。データセグメント１８は、予測可能データオブジェクト１７の部分としてデータセグメント１８が認識された場合、キャッシュメモリ１９内にロードされてもよく、そして、ホストシステム１０からの要求に先立って読み出されてキャッシュメモリ１９内にロードされた。要求されたデータセグメント１８がキャッシュメモリ１９内にすでにある場合(ステップ２２)、コントローラ１４は、データは読み出される準備ができているということをホストシステム１０に通知し、そして、関連するデータセグメント１８を読み出そうと試みるホストシステム１０に、キャッシュされたデータセグメント１８を送る(ステップ２６)。コントローラ１４は、現在要求されているデータセグメント１８が予測可能データオブジェクトの部分であるということを識別した場合、現在のデータセグメント１８が「後続セグメント」を有するかどうかの検査に進む(ステップ２８)。現在のデータセグメント１８が、データオブジェクト１７内の最後のデータセグメント１８ではない場合、コントローラ１４は、データオブジェクト１７のシーケンス内の次のデータセグメント１８を特定し(ステップ３４)、次のデータセグメント１８をキャッシュメモリ１９内にロードし(ステップ３６)、そしてその後、読み出し動作を終了する(ステップ３８)。
【００４９】
図６は、予測可能データオブジェクトの最後のセグメントが読み出される場合の(フローＤ)、本発明の予測可能データ取り出し処理の簡易化したフローチャートである。ステップ２８に続いて、現在のデータセグメント１８がデータオブジェクト１７のシーケンス内の最後のデータセグメント１８である場合、コントローラ１４は、読み出し動作を終了する(ステップ３８)。
【００５０】
図７は、本発明の好ましい実施形態による、図３〜図６の処理のフローＡ〜Ｄを、時間の関数として示す概略図である。図７は、図３〜図６で説明した４つのすべての「読み出しモード」を含むシナリオを示す。図７は、図３〜図６からのフローＡ〜Ｄの読み出しモードとしてラベル付けされた、ホストシステム１０の読み出し動作４０のシーケンスに分割される。３つのデータオブジェクト４２、４４、および４６が、連続した順序で読み出されている。データオブジェクト４２および４６は予測不能であり、データオブジェクト４４は予測可能である。例として、予測可能データオブジェクト４４の最後の読み出し動作４０は、読み出し動作４８として示されており、図６のフローＤを使用して読み出される。
【００５１】
本発明を、限られた数の実施形態に関して説明してきたが、本発明の多くの変形、修正、およびその他の適用が行われてもよいということが理解されるであろう。
【図１】
2009539168.tif 000004
【図２】
2009539168.tif 000005
【図３】
2009539168.tif 000006
【図４】
2009539168.tif 000007
【図５】
2009539168.tif 000008
【図６】
2009539168.tif 000009
【図７】
2009539168.tif 000010
【国際調査報告】
2009539168.tif 000011
2009539168.tif 000012
2009539168.tif 000013