(57)【要約】  幾らかの実施形態では、電子システムは、大容量記憶装置とシステムメモリとの間に設けられたキャッシュとを含み、コードは電子システム上に格納されて、第１の情報の第１の要求の第１のメタデータと、前の起動コンテキストに格納されている起動前ストリーム情報との比較に基づいて、キャッシュにストリームデータが格納されないようにして、直接システムメモリと大容量記憶装置との間でストリームデータをやりとりさせることができる。他の実施形態も開示され請求される。【選択図】図１
2011514593.tif 000002
【特許請求の範囲】
【請求項１】
電子システムにおいてキャッシュを利用する方法であって、
大容量記憶デバイスとシステムメモリとの間にキャッシュを設けることと、
第１の情報を要求するための大容量記憶アクセスに関する第１の要求を受信することと、
現在の起動コンテキストとは異なる前の起動コンテキスト中に格納された起動前ストリーム情報を取得することと、
前記第１の要求に関する第１のメタデータと前記起動前ストリーム情報との比較に基づいて前記第１の情報がストリームアクセスの一部であるか否かを判断することと、
前記第１の要求に関する前記第１のメタデータと前記起動前ストリーム情報との前記比較に基づいて前記第１の情報が前記ストリームアクセスの一部であると判断された場合、大容量記憶アクセスに関する前記第１の要求を、前記大容量記憶デバイスに対して直接行うこととを備える方法。
【請求項２】
前記第１の要求に関する前記第１のメタデータと前記起動前ストリーム情報との前記比較に基づいて前記第１の情報が前記ストリームアクセスの一部ではないと判断された場合、前記第１の情報をキャッシュすることをさらに備える請求項１に記載の方法。
【請求項３】
第２の情報を要求するための大容量記憶アクセスに関する第２の要求を受信することと、
以前に前記第１の情報が前記ストリームアクセスの一部であると判断されていない場合、前記第１の要求に関する前記第１のメタデータと前記第２の要求に関する第２のメタデータとの比較に基づいて、前記第２の情報が前記ストリームアクセスの一部であるか否かを判断することと、
前記第２の情報が前記ストリームアクセスの一部であると判断された場合、前記電子システムのハード起動を含む前記電子システムの異なる電力状態において持続している前記ストリームアクセスに対応するストリーム情報を格納することとをさらに備え、
格納された前記ストリーム情報は、後に、後続する起動用の前記起動前ストリーム情報として利用可能である請求項２に記載の方法。
【請求項４】
電子システムにおいてキャッシュを利用する方法であって、
大容量記憶デバイスとシステムメモリとの間にキャッシュを設けることと、
第１の情報を要求するための大容量記憶アクセスに関する第１の要求を受信することと、
前記第１の要求に関する第１のメタデータとストリームアクセスに関する他の情報との比較に基づいて前記第１の情報が前記ストリームアクセスの一部であるか否かを判断することと、
前記第１の要求に関する前記第１のメタデータと前記ストリームアクセスに関する前記他の情報との比較に基づいて前記第１の情報が前記ストリームアクセスの一部であると判断された場合、前記ストリームアクセスの周波数情報と、周波数閾値とを比較することと、
前記第１の情報が前記ストリームアクセスの一部であると判断され、前記ストリームアクセスの前記周波数情報が前記周波数閾値を超えない場合、大容量記憶アクセスに関する前記第１の要求を、前記大容量記憶デバイスに対して直接行うことと、
前記第１の情報が前記ストリームアクセスの一部であると判断され、前記ストリームアクセスの前記周波数情報が前記周波数閾値を超える場合、前記第１の情報をキャッシュすることとを備える方法。
【請求項５】
前記ストリームアクセスの前記周波数情報を更新することをさらに備える請求項４に記載の方法。
【請求項６】
前記ストリームアクセスの長さ情報をストリーム長閾値と比較することと、
前記ストリームアクセスの前記長さ情報が前記ストリーム長閾値を越える場合、第１の情報をキャッシュさせないようにすることとをさらに備える請求項４に記載の方法。
【請求項７】
プロセッサベースのシステムにおいてキャッシュを利用する方法であって、
大容量記憶デバイスとシステムメモリとの間にキャッシュを設けることと、
第１の情報を要求するための大容量記憶アクセスに関する第１の要求を受信することと、
現在の起動コンテキストとは異なる前の起動コンテキスト中に格納された起動前ストリーム情報を取得することと、
前記第１の要求に関する第１のメタデータと前記起動前ストリーム情報との比較に基づいて前記第１の情報がストリームアクセスの一部であるか否かを判断することと、
前記第１の要求に関する前記第１のメタデータと前記起動前ストリーム情報との前記比較に基づいて前記第１の情報が前記ストリームアクセスの一部ではないと判断された場合、前記第１の情報をキャッシュすることと、
前記第１の要求に関する前記第１のメタデータと前記起動前ストリーム情報との前記比較に基づいて前記第１の情報が前記ストリームアクセスの一部であると判断された場合、
前記ストリームアクセスの周波数情報と、周波数閾値とを比較することと、
前記第１の情報が前記ストリームアクセスの一部であると判断され、前記ストリームアクセスの前記周波数情報が前記周波数閾値を超えない場合、大容量記憶アクセスに関する前記第１の要求を、前記大容量記憶デバイスに対して直接行うことと、
前記第１の情報が前記ストリームアクセスの一部であると判断され、前記ストリームアクセスの前記周波数情報が前記周波数閾値を超える場合、前記第１の情報をキャッシュすることとを備える方法。
【請求項８】
第２の情報を要求するための大容量記憶アクセスに関する第２の要求を受信することと、
以前に前記第１の情報が前記ストリームアクセスの一部であると判断されていない場合、前記第１の要求に関する第１のメタデータと前記第２の要求に関する第２のメタデータとの比較に基づいて、前記第２の情報が前記ストリームアクセスの一部であるか否かを判断することと、
前記第２の情報が前記ストリームアクセスの一部であると判断された場合、前記プロセッサベースのシステムのハード起動を含む異なる電力状態において持続している前記ストリームアクセスに対応するストリーム情報を格納することとをさらに備え、
前記ストリーム情報は、後に、後続する起動用の前記起動前ストリーム情報として利用可能である請求項７に記載の方法。
【請求項９】
前記ストリームアクセスの前記周波数情報を更新することをさらに備える請求項７に記載の方法。
【請求項１０】
前記ストリームアクセスの長さ情報をストリーム長閾値と比較することと、
前記ストリームアクセスの前記長さ情報が前記ストリーム長閾値を越える場合、前記第１の情報をキャッシュさせないようにすることとをさらに備える請求項７に記載の方法。
【請求項１１】
電子システムであって、
前記電子システムの大容量記憶装置およびシステムメモリの間に設けられたキャッシュと、
前記電子システムに格納され、第１の情報の第１の要求の第１のメタデータと、前記電子システムの前の起動コンテキストに格納されている起動前ストリーム情報との比較に基づいて、前記キャッシュにストリームデータが格納されないようにして、前記ストリームデータを直接前記システムメモリと前記大容量記憶装置との間でやりとりさせるコードとを備える電子システム。
【請求項１２】
前記コードはさらに、前記第１の要求に関する第１のメタデータと前記起動前ストリーム情報との前記比較に基づいて前記第１の情報がストリームアクセスの一部ではないと判断された場合、前記第１の情報をキャッシュさせる請求項１１に記載の電子システム。
【請求項１３】
前記コードはさらに、
第２の情報を要求するための大容量記憶アクセスに関する第２の要求を受信させ、
以前に前記第１の情報が前記ストリームアクセスの一部であると判断されていない場合、前記第１の要求に関する第１のメタデータと前記第２の要求に関する第２のメタデータとの比較に基づいて、前記第２の情報が前記ストリームアクセスの一部であるか否かを判断させ、
前記第２の情報が前記ストリームアクセスの一部であると判断された場合、前記電子システムのハード起動を含む前記電子システムの異なる電力状態において持続している前記ストリームアクセスに対応するストリーム情報を格納させ、
格納された前記ストリーム情報は後に、後続する起動用の前記起動前ストリーム情報として利用可能である請求項１２に記載の電子システム。
【請求項１４】
前記コードはさらに、前記第１の要求に関する第１のメタデータと前記起動前ストリーム情報との前記比較に基づいて前記第１の情報がストリームアクセスの一部であるか否かを判断させ、
前記ストリームアクセスの周波数情報と、周波数閾値とを比較させ、
前記第１の情報が前記ストリームアクセスの一部であると判断され、前記ストリームアクセスの前記周波数情報が前記周波数閾値を超えない場合、大容量記憶アクセスについての前記第１の要求を前記大容量記憶装置に対して直接行わせ、
前記第１の情報が前記ストリームアクセスの一部であると判断され、前記ストリームアクセスの前記周波数情報が前記周波数閾値を超える場合、前記第１の情報をキャッシュさせる請求項１１に記載の電子システム。
【請求項１５】
前記コードはさらに、前記ストリームアクセスの前記周波数情報を更新させる請求項１４に記載の電子システム。
【請求項１６】
前記コードはさらに、前記ストリームアクセスの長さ情報をストリーム長閾値と比較させ、
前記ストリームアクセスの前記長さ情報が前記ストリーム長閾値を越える場合、ストリームデータを前記キャッシュに格納させず、前記ストリームデータを直接前記システムメモリと前記大容量記憶装置との間でやりとりさせる請求項１４に記載の電子システム。
【請求項１７】
プロセッサベースのシステムであって、
プロセッサと、
前記プロセッサに連結されたシステムメモリと、
大容量記憶デバイスと、
前記システムメモリおよび前記大容量記憶デバイスの間に設けられた不揮発性キャッシュメモリと、
前記プロセッサベースのシステムに格納されたコードとを備え、
前記コードは前記プロセッサベースのシステムに、
第１の情報を要求するための大容量記憶アクセスに関する第１の要求を受信することと、
現在の起動コンテキストとは異なる、前記プロセッサベースのシステムの前の起動コンテキスト中に格納された起動前ストリーム情報を取得することと、
前記第１の要求に関する第１のメタデータと前記起動前ストリーム情報との比較に基づいて前記第１の情報がストリームアクセスの一部であるか否かを判断することと、
前記第１の要求に関する第１のメタデータと前記起動前ストリーム情報との前記比較に基づいて前記第１の情報が前記ストリームアクセスの一部ではないと判断された場合、前記第１の情報をキャッシュすること、
前記第１の情報が前記ストリームアクセスの一部であると判断された場合、
前記ストリームアクセスの周波数情報と、周波数閾値とを比較することと、
前記第１の情報が前記ストリームアクセスの一部であると判断され、前記ストリームアクセスの前記周波数情報が前記周波数閾値を超えない場合、大容量記憶に対するアクセスに関する前記第１の要求を、前記大容量記憶デバイスに対して直接行うことと、
前記第１の情報が前記ストリームアクセスの一部であると判断され、前記ストリームアクセスの前記周波数情報が前記周波数閾値を超える場合、前記第１の情報をキャッシュすることとを行わせるプロセッサベースのシステム。
【請求項１８】
前記コードは前記プロセッサベースのシステムにさらに、
第２の情報を要求するための大容量記憶アクセスに関する第２の要求を受信することと、
以前に前記第１の情報が前記ストリームアクセスの一部であると判断されていない場合、前記第１の要求に関する前記第１のメタデータと前記第２の要求に関する第２のメタデータとの比較に基づいて、前記第２の情報が前記ストリームアクセスの一部であるか否かを判断することと、
前記第２の情報が前記ストリームアクセスの一部であると判断された場合、前記プロセッサベースのシステムのハード起動を含む異なる電力状態において持続している前記ストリームアクセスに対応するストリーム情報を格納することとを行わせ、
前記ストリーム情報は、後に、後続する起動用の前記起動前ストリーム情報として利用可能である請求項１７に記載のプロセッサベースのシステム。
【請求項１９】
前記コードはさらに、前記ストリームアクセスの前記周波数情報を更新することを行わせる請求項１７に記載のプロセッサベースのシステム。
【請求項２０】
前記コードはさらに、
前記ストリームアクセスの長さ情報をストリーム長閾値と比較することと、
前記ストリームアクセスの前記長さ情報が前記ストリーム長閾値を越える場合、ストリームデータを前記キャッシュに格納させず、前記ストリームデータを直接前記システムメモリと前記大容量記憶デバイスとの間でやりとりさせることとを行わせる請求項１８に記載のプロセッサベースのシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はキャッシュ利用に関する。より詳しくは、本発明の幾らかの実施形態は、プロセッサベースのシステム等の電子システムで不揮発性キャッシュを利用する装置および方法に関する。
【背景技術】
【０００２】
多くの電子システムがキャッシュメモリ利用の恩恵を得ている。電子システムの中には、ドライバソフトウェアを提供することでキャッシュメモリを利用しているものもある。
【０００３】
米国特許第７，３６０，０１５号明細書は、要求された情報がストリーミングアクセスの一部であるか否かを判断し、要求された情報がストリーミングアクセスの一部である場合に、要求された情報を記憶デバイスとメモリとの間で直接やりとりさせることを含みうるキャッシュメモリの利用法の幾らかを記載している。逆に、要求された情報がストリーミングアクセスの一部でない場合には、記憶デバイスとキャッシュとの間でやりとりすることができる。様々な実施形態では、キャッシュは不揮発性ディスクキャッシュであってよい。
【０００４】
ftp://download.intel.com/design/flash/NAND/turbomemory/whitepaper.pdfで公開されているホワイトペーパでは、休止後に迅速に生産モードへとレジュームする機能を提供して、限りあるハードディスクドライブアクセスによってさらなる節電機能を提供してユーザ体験を高めるべくアプリケーションのレスポンスを高める、インテル（登録商標）ターボメモリコントローラＡＳＩＣ（特定用途向けＩＣ）チップおよび２つのインテルＮＡＮＤフラッシュ不揮発性メモリコンポーネントで構成されるインテル（登録商標）ターボメモリが記載されている。
【図面の簡単な説明】
【０００５】
添付図面に示される以下の好適な実施形態の記載を読むことで本発明の様々な特徴が明らかになるが、添付図面全般にわたり、同様の参照番号を付された部材は概して同じ部材を示している。図面は必ずしも実寸に即して描かれてはおらず、本発明の原理を示すことに重きが置かれている。
【０００６】
【図１】本発明の幾らかの実施形態における電子システムのブロック図である。
【０００７】
【図２】本発明の幾らかの実施形態におけるプロセッサベースのシステムのブロック図である。
【０００８】
【図３】本発明の幾らかの実施形態におけるフロー図である。
【０００９】
【図４】本発明の幾らかの実施形態における別のフロー図である。
【００１０】
【図５】本発明の幾らかの実施形態における別のフロー図である。
【００１１】
【図６】本発明の幾らかの実施形態における別のフロー図である。
【００１２】
【図７】本発明の幾らかの実施形態における別のフロー図である。
【００１３】
【図８】本発明の幾らかの実施形態と比べるための、数固有セクタとアクセス数とを示すグラフである。
【００１４】
【図９】本発明の幾らかの実施形態における数固有セクタとアクセス数とを示すグラフである。
【００１５】
【図１０】本発明の幾らかの実施形態における別のフロー図である。
【発明を実施するための形態】
【００１６】
以下の記載において、説明目的であり、限定を目的ではないが、特定の構造、アーキテクチャ、インタフェース、技術等の特定の詳細を示して、本発明の様々な側面の完全な理解を促す。しかし、本開示を読んだ当業者には、本発明のこれら様々な側面が、これら特定の詳細から逸脱する他の例においても実施可能であることが自明である。また他の場合には、公知のデバイス、回路、および方法の説明を省略することで、本発明の記載を不要な詳細により曖昧にしないようにしている。
【００１７】
図１に示す電子システム１０は、大容量記憶装置１４とシステムメモリ１６との間にキャッシュ１２を含みうる。システム１０は、電子システム１０上に格納されるコードを含み、該コードにより、第１の情報の第１の要求の第１のメタデータと、電子システム１０の前の起動コンテキストに格納されている起動前ストリーム情報との比較に基づいて、キャッシュ１２にストリームデータが格納されないようにして、ストリームデータを直接システムメモリ１６と大容量記憶装置１４との間でやりとりさせる。例えばコードは、大容量記憶装置１４、システムメモリ１６、または、電子システム１０に連結された別のメモリまたは記憶デバイスに格納されてよい。
【００１８】
システム１０の幾らかの実施形態では、コードはさらに、第１の要求に関する第１のメタデータと起動前ストリーム情報との比較に基づいて第１の情報がストリームアクセスの一部ではないと判断された場合、電子システム１０に第１の情報をキャッシュさせることができる。システム１０の幾らかの実施形態では、コードはさらに、第２の情報を要求するための大容量記憶アクセスに関する第２の要求を受信させ、以前に第１の情報がストリームアクセスの一部であると判断されていない場合、第１の要求に関する第１のメタデータと第２の要求に関する第２のメタデータとの比較に基づいて、第２の情報がストリームアクセスの一部であるか否かを判断させ、第２の情報がストリームアクセスの一部であると判断された場合、電子システム１０のハード起動を含む電子システムの異なる電力状態において持続しているストリームアクセスに対応するストリーム情報を格納させ、ここで格納されたストリーム情報は後に、後続する起動用の起動前ストリーム情報として利用することができる。
【００１９】
システム１０の幾らかの実施形態では、コードはさらに、第１の要求に関する第１のメタデータと起動前ストリーム情報との比較に基づいて第１の情報がストリームアクセスの一部であるか否かをシステム１０に判断させ、ストリームアクセスの周波数情報と、周波数閾値とを比較させ、第１の情報がストリームアクセスの一部であると判断され、ストリームアクセスの周波数情報が周波数閾値を超えない場合、大容量記憶アクセスについての第１の要求を大容量記憶装置１４に対して直接行わせ、第１の情報がストリームアクセスの一部であると判断され、ストリームアクセスの周波数情報が周波数閾値を超える場合、第１の情報をキャッシュしてよい。例えば、幾らかの実施形態では、コードはさらに、ストリームアクセスの周波数情報を更新させてよい。例えば、幾らかの実施形態では、コードはさらに、ストリームアクセスの長さ情報をストリーム長閾値と比較して、ストリームアクセスの長さ情報がストリーム長閾値を越える場合、ストリームデータをキャッシュに格納させないようにし、ストリームデータをシステムメモリ１６と大容量記憶装置１４との間で直接やりとりさせる。
【００２０】
図２のプロセッサベースのシステム２０は、プロセッサ２１、プロセッサ２１に連結されたシステムメモリ２２、大容量記憶デバイス２３、および、システムメモリ２２と大容量記憶デバイス２３との間に設けられた不揮発性キャッシュメモリ２４を含んでよい。例えば、プロセッサ２１は、中央処理装置（ＣＰＵ）であってよい。例えば、システムメモリ２２はＤＲＡＭであってよい。例えば、システムメモリ２２は、メモリコントローラハブ（ＭＣＨ）２５経由でプロセッサ２１に連結されてよい。例えば、キャッシュ２４は、不揮発性メモリ（ＮＶＭ）キャッシュであってよい。例えば、大容量記憶デバイス２３は、ハードディスクドライブまたは光ディスクドライブ等の回転媒体であってよい。例えば、大容量記憶デバイス２３は、固体ドライブ等の非回転媒体であってもよい。例えば、キャッシュ２４および大容量記憶デバイス２３の両方が、入出力コントローラハブ（ＩＣＨ）２６経由でＭＣＨに連結されてもよい。
【００２１】
プロセッサベースのシステム２０上に格納されたコードは、プロセッサベースのシステムに、第１の情報を要求するための大容量記憶アクセスに関する第１の要求を受信させ、プロセッサベースのシステムの、現在の起動コンテキストとは異なる前の起動コンテキスト中に格納された起動前ストリーム情報を取得させる。コードは、プロセッサべースのシステム２０に、第１の要求に関する第１のメタデータと起動前ストリーム情報との比較に基づいて第１の情報がストリームアクセスの一部であるか否かを判断させ、第１の要求に関する第１のメタデータと起動前ストリーム情報との比較に基づいて第１の情報がストリームアクセスの一部ではないと判断された場合、第１の情報をキャッシュさせることができる。第１の情報がストリームアクセスの一部であると判断された場合、コードはプロセッサベースのシステム２０に、ストリームアクセスの周波数情報と、周波数閾値とを比較させ、第１の情報がストリームアクセスの一部であると判断され、ストリームアクセスの周波数情報が周波数閾値を超えない場合、大容量記憶アクセスについての第１の要求を大容量記憶デバイス２３に対して直接行い、第１の情報がストリームアクセスの一部であると判断され、ストリームアクセスの周波数情報が周波数閾値を超える場合、第１の情報をキャッシュしてよい。例えば、コードは大容量記憶デバイス２３、システムメモリ２２、または、プロセッサベースのシステム２０に連結された別のメモリまたは記憶デバイスに格納されてよい。例えば、コードは、ＩＣＨ２６に連結されたＢＩＯＳ（basic input/output system）２７の一部として格納することができる。
【００２２】
例えば、システム２０の幾らかの実施形態では、コードはさらに、プロセッサベースのシステム２０に、第２の情報を要求するための大容量記憶アクセスに関する第２の要求を受信させてよい。以前に第１の情報がストリームアクセスの一部であると判断されていない場合、コードはさらに、プロセッサベースのシステム２０に、第１の要求に関する第１のメタデータと第２の要求に関する第２のメタデータとの比較に基づいて、第２の情報がストリームアクセスの一部であるか否かを判断させてよい。第２の情報がストリームアクセスの一部であると判断された場合、コードは、プロセッサベースのシステム２０に、プロセッサベースのシステム２０のハード起動を含む異なる電力状態において持続しているストリームアクセスに対応するストリーム情報を格納させ、このストリーム情報は後に、後続する起動用の起動前ストリーム情報として利用することができる。
【００２３】
例えば、プロセッサベースのシステム２０の幾らかの実施形態では、コードはさらに、ストリームアクセスの周波数情報を更新することができる。プロセッサベースのシステム２０の幾らかの実施形態では、コードはさらに、ストリームアクセスの長さ情報をストリーム長閾値と比較して、ストリームアクセスの長さ情報がストリーム長閾値を越える場合、ストリームデータをキャッシュ２４に格納させないようにし、ストリームデータをシステムメモリ２２と大容量記憶デバイス２３との間で直接やりとりさせる。
【００２４】
図３および図４を参照すると、本発明の幾らかの実施形態では、電子システムでキャッシュを利用することには、大容量記憶デバイスとシステムメモリとの間にキャッシュを設けること（例えばブロック３０）、第１の情報を要求するための大容量記憶アクセスに関する第１の要求を受信すること（例えばブロック３１）、現在の起動コンテキストとは異なる前の起動コンテキスト中に格納された起動前ストリーム情報を取得すること（例えばブロック３２）、第１の要求に関する第１のメタデータと起動前ストリーム情報との比較に基づいて第１の情報がストリームアクセスの一部であるか否かを判断すること（例えばブロック３３）、および、第１の要求に関する第１のメタデータと起動前ストリーム情報との比較に基づいて第１の情報がストリームアクセスの一部であると判断された場合、大容量記憶アクセスに関する第１の要求を、大容量記憶デバイスに対して直接行うこと（例えばブロック３４）が含まれてよい。
【００２５】
例えば、本発明の幾らかの実施形態はさらに、第１の要求に関する第１のメタデータと起動前ストリーム情報との比較に基づいて第１の情報がストリームアクセスの一部ではないと判断された場合、第１の情報をキャッシュすること（例えばブロック３５）を含んでよい。例えば、本発明の幾らかの実施形態はさらに、第２の情報を要求するための大容量記憶アクセスに関する第２の要求を受信すること（ブロック３６）、および、以前に第１の情報がストリームアクセスの一部であると判断されていない場合、第１の要求に関する第１のメタデータと第２の要求に関する第２のメタデータとの比較に基づいて、第２の情報がストリームアクセスの一部であるか否かを判断すること（ブロック３７）、および、第２の情報がストリームアクセスの一部であると判断された場合、電子システムのハード起動を含む電子システムの異なる電力状態において持続しているストリームアクセスに対応するストリーム情報を格納し、ここで格納されたストリーム情報は後に、後続する起動用の起動前ストリーム情報として利用することができること（ブロック３８）を含んでよい。
【００２６】
図５および図６を参照すると、本発明の幾らかの実施形態では、電子システムでキャッシュを利用することは、大容量記憶デバイスとシステムメモリとの間にキャッシュを設けること（例えばブロック５０）、第１の情報を要求するための大容量記憶アクセスに関する第１の要求を受信すること（例えばブロック５１）、第１の要求に関する第１のメタデータとストリームアクセスに関する他の情報との比較に基づいて第１の情報がストリームアクセスの一部であるか否かを判断すること（例えばブロック５２）、第１の要求に関する第１のメタデータとストリームアクセスに関する他の情報との比較に基づいて第１の情報がストリームアクセスの一部であると判断された場合、ストリームアクセスの周波数情報と、周波数閾値とを比較すること（例えばブロック５３）、第１の情報がストリームアクセスの一部であると判断され、ストリームアクセスの周波数情報が周波数閾値を超えない場合、大容量記憶アクセスに関する第１の要求を、大容量記憶デバイスに対して直接行うこと（例えばブロック５４）、第１の情報がストリームアクセスの一部であると判断され、ストリームアクセスの周波数情報が周波数閾値を超える場合、第１の情報をキャッシュすること（例えばブロック５５）を含んでよい。
【００２７】
例えば、ストリームアクセスに関する他のストリーム情報は、起動前ストリーム情報、現在の起動コンテキストにセーブされているストリーム情報、あるいは、第１の情報をストリームアクセスの一部として特定するのに利用されうるストリームアクセスに関する他の情報であってよい。例えば、幾らかの実施形態はさらに、ストリームアクセスの周波数情報を更新すること（例えばブロック５６）を含んでよい。例えば、幾らかの実施形態はさらに、ストリームアクセスの長さ情報をストリーム長閾値と比較すること（例えばブロック５７）、ストリームアクセスの長さ情報がストリーム長閾値を越える場合、第１の情報をキャッシュさせないようにすること（例えばブロック５８）を含んでよい。
【００２８】
図７を参照すると、本発明の幾らかの実施形態では、プロセッサベースのシステムにおいてキャッシュを利用することは、大容量記憶デバイスとシステムメモリとの間にキャッシュを設けること（例えばブロック７０）、第１の情報を要求するための大容量記憶アクセスに関する第１の要求を受信すること（例えばブロック７１）、現在の起動コンテキストとは異なる前の起動コンテキスト中に格納された起動前ストリーム情報を取得すること（例えばブロック７２）、第１の要求に関する第１のメタデータと起動前ストリーム情報との比較に基づいて第１の情報がストリームアクセスの一部であるか否かを判断すること（例えばブロック７３）、第１の要求に関する第１のメタデータと起動前ストリーム情報との比較に基づいて第１の情報がストリームアクセスの一部であると判断されなかった場合、第１の情報をキャッシュすること（例えばブロック７４）を含んでよい。第１の要求に関する第１のメタデータと起動前ストリーム情報との比較に基づいて第１の情報がストリームアクセスの一部であると判断された場合、幾らかの実施形態はさらに、ストリームアクセスの周波数情報と、周波数閾値とを比較すること（例えばブロック７５）、第１の情報がストリームアクセスの一部であると判断され、ストリームアクセスの周波数情報が周波数閾値を超えない場合、大容量記憶アクセスに関する第１の要求を、大容量記憶デバイスに対して直接行うこと（例えばブロック７６）、第１の情報がストリームアクセスの一部であると判断され、ストリームアクセスの周波数情報が周波数閾値を超える場合、第１の情報をキャッシュすること（例えばブロック７７）を含んでよい。
【００２９】
本発明の幾らかの実施形態はさらに、ストリームアクセスの周波数情報を更新すること（例えばブロック７８）を含んでよい。例えば、幾らかの実施形態はさらに、エントリポイントＡに続くキャッシュを利用することができる（例えば図３を参照）。例えば、幾らかの実施形態はさらに、エントリポイントＢに続くキャッシュを利用することもできる（例えば図５を参照）。
【００３０】
本発明の幾らかの実施形態では、回転媒体とキャッシュとの間のストリームアクセスを処理する技術を向上させるという利点を有する。上述したホワイトペーパにも記載されているように、インテル（登録商標）ターボメモリにより、ハードディスクアクセスを加速することのできるキャッシュ戦略が提供される。しかし、ハードディスクが良好に行うことができるものの、同時にキャッシュに対しては有害になりうるアクセスも存在する。例えば、メディアファイル再生要求は、ハードディスクがＨＤビデオディスプレイが要求するレートにおいて容易に実現可能である。このようなファイルは大容量且つ稀にしか再利用されないので、キャッシュの基本的な前提（つまり、時間局所性）が適用できない。これらファイルがキャッシュされると、良好な時間局所性を有する位置がキャッシュから退出して、不良な時間局所性を有するものに置き換わってしまう可能性がある。本発明の幾らかの実施形態では、情報をキャッシュする時およびキャッシュすべきか否かについての決定のタイミングおよび品質を向上させることができるという利点を有する。
【００３１】
この決定プロセスは、ファイルシステムのソフトウェアスタックにおけるキャッシュドライバソフトウェアの位置により複雑になりうる。例えば、キャッシュドライバソフトウェアは、ファイル名称情報に直接アクセスしない可能性がある。つまり、キャッシュドライバソフトウェアが、メタデータ（例えば、ハードドライブの開始セクタを特定するのに利用される論理ブロックアドレスであるＬＢＡ、読み書き等の大容量記憶デバイスへのコマンドであるＣｏｍｍａｎｄ、および、コマンドのセクタ数であるＬｅｎｇｔｈ）のような限られた情報にアクセスする場合がある。
【００３２】
本発明の幾らかの実施形態は、キャッシュドライバウソフトウェアが利用可能なこのような限られた情報をアセンブルおよび利用して、ストリームを特定、管理する技術を向上させることができるという利点を有する。例えば、あるストリームは、同じコマンド、および、全てのセクタ、または殆ど全てのセクタを表す一式のコマンドであってよい。例えば、幾らかの実施形態では、最小サイズがストリームを検知、特定するときに有用なパラメータであってよい。可能性の少ない候補は外されるという理由から、最小サイズパラメータは、キャッシュをより大きく見せる効果を有しうる。
【００３３】
図８および図９を参照すると、図８は最小サイズパラメータを有さないキャッシュ利用のシミュレーション例を示し、図９は４つのメガバイト（ＭＢ）の最小サイズパラメータを有するキャッシュ利用のシミュレーション例を示す。図９から分かるように、４ＭＢ以上のサイズ分のストリームを消去すると、キャッシュサイズの約４０％が利用可能となっている。
【００３４】
幾らかの実施形態では、ストリームに関する情報は、メタデータに格納されてよい。このような情報は、後にアクセスを要求された場合、同じストリームを特定するのに利用することができる。このようなメタデータは、ディスクドライブおよびキャッシュの前述した格納装置などからの後のこの要求に応じて、直接データにアクセスするのに利用することができる。幾らかの実施形態では、前に行われたアクセスに関する情報を潜在的なストリーム情報アレイに記録することにより、ストリームアクセスを検知および特定することができる。このようなアレイは、システムメモリまたはキャッシュ自身等の様々な位置に格納することができる。このアレイの各エレメントは、開始位置（例えば開始ディスクアドレス）、ストリーム（または潜在的なストリーム）の要求数の長さ、カウント、および／または、ストリーム（または潜在的なストリーム）の最後の要求を受信したことを示すタイムスタンプ、等の特定のメタデータを含みうる。例えば、ストリームが全部揃った後で、ストリームの最終的な長さをメタデータに記述してよい。
【００３５】
図１０を参照すると、本発明の幾らかの実施形態は、ストリームを特定すること（例えばブロック１０１）を含んでよい。例えば、この特定には、連続アクセスが含まれるが、単なる連続アクセスには限定されない。例えば、情報が連続に類似している場合にも、アクセスをストリームとして検知することもできる。読み出しアクセスおよび書き込みアクセス両方をストリームとして特定することもできる。ストリームの特定を連続アクセスに限定しないことにより、本発明の幾らかの実施形態では、ａ）ストリームが連続アクセスされない場合、および、ｂ）例えば分割または圧縮（これらに限定はされない）といった理由から大容量記憶デバイス（例えば回転媒体）上にストリームが連続配置されない場合、という、２つのケースを追加として特定することができるという利点を有する。
【００３６】
本発明の幾らかの実施形態は、さらに、ストリームの残りの全てのアクセスを、キャッシュを介在させずに、大容量記憶デバイス（例えばハードドライブ）に直接方向付けること（例えばブロック１０２）、ストリームのキャッシュされているコンテンツを「早期退出」候補としてマークすること（例えばブロック１０３）、ストリームをシステムメモリ（例えばＤＲＡＭ）へプリフェッチおよびバッファリングすること（例えばブロック１０４）、および、例えば再利用または経年劣化等の理由により無効になった際に、ストリームを閉鎖すること（例えばブロック１０５）を含んでよい。
【００３７】
本発明の幾らかの実施形態はさらに、全システム電力状態においてストリーム情報をセーブすること（例えばブロック１０６）を含んでよい。例えば、現在の起動コンテキストで検知されたストリーム情報は、（例えば、分、時間、または日という特定の時間単位に限らず）長期間保持することができ、後続する起動における起動前ストリーム情報としての利用に備えさせることができる。起動前ストリーム情報を格納しておくことにより、ストリーム自身の第１のエレメントのアクセスについてストリームを検知する助けとなり、これにより、ストリームを（例えば第２のアクセス要求の前に）早期に特定することが可能となり、キャッシュのより有効な活用が可能となる（例えば、第１のアクセスから情報をキャッシュしないこと等により）という利点を有する。例えば、起動前ストリーム情報は、ハードディスク、不揮発性メモリ、あるいは電池駆動型メモリ等の永続記憶デバイスに格納することができる。
【００３８】
例えば、システム電力状態には、低減電力状態および電力停止状態が含まれてよい。プロセッサベースのシステムのなかには、例えば準備完了状態、待ち状態、停止状態、休止状態、およびオフ状態等を含む様々な電力状態を利用するものもある。例えば、ハード起動は、オフ状態からシステムを再開させることに対応していてよい。
【００３９】
本発明の幾らかの実施形態は、ストリームアクセス情報の周波数をセーブすること（例えばブロック１０７）、および、ストリーム周波数情報を利用して、ストリームアクセスを直接ディスクに対して行うか、ストリームアクセスをキャッシュにセーブするか、を決定すること（例えばブロック１０８）を含んでもよい。また現状のキャッシュ利用状況には反しているが、本発明の幾らかの実施形態では、比較的大きなストリームが比較的頻繁にアクセスを受ける場合には、該ストリームをキャッシュに格納することができることができるという利点も有しうる。例えば、キャッシュが大容量記憶デバイスと比較して性能が良好である場合、頻繁にアクセスされるストリームをキャッシュすることでユーザ体験を向上させることができる。
【００４０】
本発明の幾らかの実施形態では、キャッシュは以下の疑似コードに従って利用することができる。
入力：
アクセス、システムからの要求
主要な変数：
Ｎ、ストリーム検知スロット数
ＩｓＡＳｔｒｅａｍ、フィルタリング開始前のストリームデータのセクタ数
Ｍ、既知のストリームスロット数
【００４１】
// Handle pre-detected case where there is retention of pre-boot stream information:
LOOP M
IF KnownStream[M].Startl_BA = Access.StartLBA
&& KnownStream[M].RequestSizeThreshold = AVERAGE(Access.RequestSize)
&& KnownStream [M].Operation = Access. Operation THEN
KnownStream[M].Frequency++
IF KnownStream [M].Frequency > FREQUENCY_THRESHOLD
&& KnownStream [M].Length < CACH ED_STREAM_TH RESHOLD THEN
Pre-fetch(M) OR Send to Disk
Save stream in Cache
EXIT
ENDIF
ENDIF
END LOOP
【００４２】
// Detect streams on the fly
LOOP N
IF Stream[N].ExpectedStartLBA = Access.StartLBA
&& Stream[N].ExpectedRequestSize = AVERAGE(Access.RequestSize)
&& Stream [N].ExpectedOperation = Access.Operation
&& Stream [N].VaIid
&& Stream[N].NotEmpty THEN
Stream [N].ExpectedStartLBA += Stream[N].ExpectedRequestSize
Stream[N].Length += ExpectedRequestSize 
PlacedInStream = TRUE
IF Stream[N]. Length > IsAStream THEN
GOTO Pre-Fetch(N) OR Send To Disk
Move Stream[N] to Stream[M]
ENDIF
ELSE IF Stream[N].NotEmpty THEN
Stream[N].Expire++
IF Steam[N].Expire > HighestExpire.Value THEN
HighestExpire.Value = Stream[N]. Expire
HighestExpired. Index = N
ENDIF
ENDIF
END LOOP
【００４３】
// Add new access to available stream slot and let N detect new streams
IF Placed InStream = FALSE THEN
IF Stream[ANY N] IS OPEN THEN
Steam[ANY N].Valid = TRUE
Steam[ANY N].ExpectedLBA = Access.StartLBA + Access. RequestSize
Steam[ANY N].ExpectedRequestSize = Access.RequestSize
Steam[ANY N].ExpectedOperation = Access.Operation
ELSE
Place In Stream [HighestExpired.Index]
ENDIF
ENDIF
【００４４】
全システム電力状態においてストリーム情報を格納すること、および／または、ストリーム周波数情報をセーブすることにより、情報をキャッシュに格納する時およびキャッシュすべきか否かについての決定のタイミングおよび品質を向上させることができるという利点が生じる。幾らかの実施形態では、キャッシュメモリの利用に関するより良い決定を行うことにより、小さなキャッシュをより有効に活用することができるようになり、これによりシステムサイズおよび／またはコストが低減される。幾らかの実施形態では、キャッシュに対して利点をもたらす可能性の少ないアクセスを排除することで待ち行列トラフィックがなくなり、キャッシュのレスポンスを高めることができ、一方で、大容量記憶デバイスの良好な媒体性能を保持することもできるという利点もある。幾らかの実施形態では、頻繁に利用される特定のサイズのストリームをキャッシュすることで、ユーザ体験を向上させることができる。
【００４５】
当業者であれば、本気際の利点を利用することで、多くの種類の他の回路およびハードウェアおよび／またはソフトウェアの組み合わせを、ここで記載する実施形態および本発明の他の実施形態に応じた様々な方法、回路、およびシステムを実装するよう構成することができるであろう。図１から図１０に示す例は、適切な実施形態の、非制限的な例示である。
【００４６】
本発明の前述した、あるいはその他の側面は、個々に、または組み合わせにより実現可能である。本発明は、そうではないことが特定の請求項で必須である場合を除いて、これら側面の２以上を必要するとの解釈に限定されるべきではない。本発明を現在の時点で好適な例示とみなされるものに関して記載してきたが、本発明は、開示されている例示に限定されると解釈されるべきではなく、本発明の精神および範囲に含まれる様々な変形例および均等物である構成を含むことを意図している。
【図１】
2011514593.tif 000003
【図２】
2011514593.tif 000004
【図３】
2011514593.tif 000005
【図４】
2011514593.tif 000006
【図５】
2011514593.tif 000007
【図６】
2011514593.tif 000008
【図７】
2011514593.tif 000009
【図８】
2011514593.tif 000010
【図９】
2011514593.tif 000011
【図１０】
2011514593.tif 000012
【国際調査報告】
2011514593.tif 000013
2011514593.tif 000014