![]() キャッシュ利用に関する装置および方法
专利摘要:
幾らかの実施形態では、電子システムは、大容量記憶装置とシステムメモリとの間に設けられたキャッシュとを含み、コードは電子システム上に格納されて、第1の情報の第1の要求の第1のメタデータと、前の起動コンテキストに格納されている起動前ストリーム情報との比較に基づいて、キャッシュにストリームデータが格納されないようにして、直接システムメモリと大容量記憶装置との間でストリームデータをやりとりさせることができる。他の実施形態も開示され請求される。 公开号:JP2011514593A 申请号:JP2010547880 申请日:2009-06-09 公开日:2011-05-06 发明作者:ウェルズ、スティーブン;テトリック、アール.、スコット;ハウズ、ジョーダン;ピント、オスカー;ヒントン、グレン;マシューズ、ジーナ;ユーネマン、デール 申请人:インテル・コーポレーション; IPC主号:G06F12-08
专利说明:
[0001] 本発明はキャッシュ利用に関する。より詳しくは、本発明の幾らかの実施形態は、プロセッサベースのシステム等の電子システムで不揮発性キャッシュを利用する装置および方法に関する。] 背景技術 [0002] 多くの電子システムがキャッシュメモリ利用の恩恵を得ている。電子システムの中には、ドライバソフトウェアを提供することでキャッシュメモリを利用しているものもある。] [0003] 米国特許第7,360,015号明細書は、要求された情報がストリーミングアクセスの一部であるか否かを判断し、要求された情報がストリーミングアクセスの一部である場合に、要求された情報を記憶デバイスとメモリとの間で直接やりとりさせることを含みうるキャッシュメモリの利用法の幾らかを記載している。逆に、要求された情報がストリーミングアクセスの一部でない場合には、記憶デバイスとキャッシュとの間でやりとりすることができる。様々な実施形態では、キャッシュは不揮発性ディスクキャッシュであってよい。] [0004] ftp://download.intel.com/design/flash/NAND/turbomemory/whitepaper.pdfで公開されているホワイトペーパでは、休止後に迅速に生産モードへとレジュームする機能を提供して、限りあるハードディスクドライブアクセスによってさらなる節電機能を提供してユーザ体験を高めるべくアプリケーションのレスポンスを高める、インテル(登録商標)ターボメモリコントローラASIC(特定用途向けIC)チップおよび2つのインテルNANDフラッシュ不揮発性メモリコンポーネントで構成されるインテル(登録商標)ターボメモリが記載されている。] 図面の簡単な説明 [0005] 添付図面に示される以下の好適な実施形態の記載を読むことで本発明の様々な特徴が明らかになるが、添付図面全般にわたり、同様の参照番号を付された部材は概して同じ部材を示している。図面は必ずしも実寸に即して描かれてはおらず、本発明の原理を示すことに重きが置かれている。] [0006] 本発明の幾らかの実施形態における電子システムのブロック図である。] [0007] 本発明の幾らかの実施形態におけるプロセッサベースのシステムのブロック図である。] [0008] 本発明の幾らかの実施形態におけるフロー図である。] [0009] 本発明の幾らかの実施形態における別のフロー図である。] [0010] 本発明の幾らかの実施形態における別のフロー図である。] [0011] 本発明の幾らかの実施形態における別のフロー図である。] [0012] 本発明の幾らかの実施形態における別のフロー図である。] [0013] 本発明の幾らかの実施形態と比べるための、数固有セクタとアクセス数とを示すグラフである。] [0014] 本発明の幾らかの実施形態における数固有セクタとアクセス数とを示すグラフである。] [0015] 本発明の幾らかの実施形態における別のフロー図である。] 実施例 [0016] 以下の記載において、説明目的であり、限定を目的ではないが、特定の構造、アーキテクチャ、インタフェース、技術等の特定の詳細を示して、本発明の様々な側面の完全な理解を促す。しかし、本開示を読んだ当業者には、本発明のこれら様々な側面が、これら特定の詳細から逸脱する他の例においても実施可能であることが自明である。また他の場合には、公知のデバイス、回路、および方法の説明を省略することで、本発明の記載を不要な詳細により曖昧にしないようにしている。] [0017] 図1に示す電子システム10は、大容量記憶装置14とシステムメモリ16との間にキャッシュ12を含みうる。システム10は、電子システム10上に格納されるコードを含み、該コードにより、第1の情報の第1の要求の第1のメタデータと、電子システム10の前の起動コンテキストに格納されている起動前ストリーム情報との比較に基づいて、キャッシュ12にストリームデータが格納されないようにして、ストリームデータを直接システムメモリ16と大容量記憶装置14との間でやりとりさせる。例えばコードは、大容量記憶装置14、システムメモリ16、または、電子システム10に連結された別のメモリまたは記憶デバイスに格納されてよい。] 図1 [0018] システム10の幾らかの実施形態では、コードはさらに、第1の要求に関する第1のメタデータと起動前ストリーム情報との比較に基づいて第1の情報がストリームアクセスの一部ではないと判断された場合、電子システム10に第1の情報をキャッシュさせることができる。システム10の幾らかの実施形態では、コードはさらに、第2の情報を要求するための大容量記憶アクセスに関する第2の要求を受信させ、以前に第1の情報がストリームアクセスの一部であると判断されていない場合、第1の要求に関する第1のメタデータと第2の要求に関する第2のメタデータとの比較に基づいて、第2の情報がストリームアクセスの一部であるか否かを判断させ、第2の情報がストリームアクセスの一部であると判断された場合、電子システム10のハード起動を含む電子システムの異なる電力状態において持続しているストリームアクセスに対応するストリーム情報を格納させ、ここで格納されたストリーム情報は後に、後続する起動用の起動前ストリーム情報として利用することができる。] [0019] システム10の幾らかの実施形態では、コードはさらに、第1の要求に関する第1のメタデータと起動前ストリーム情報との比較に基づいて第1の情報がストリームアクセスの一部であるか否かをシステム10に判断させ、ストリームアクセスの周波数情報と、周波数閾値とを比較させ、第1の情報がストリームアクセスの一部であると判断され、ストリームアクセスの周波数情報が周波数閾値を超えない場合、大容量記憶アクセスについての第1の要求を大容量記憶装置14に対して直接行わせ、第1の情報がストリームアクセスの一部であると判断され、ストリームアクセスの周波数情報が周波数閾値を超える場合、第1の情報をキャッシュしてよい。例えば、幾らかの実施形態では、コードはさらに、ストリームアクセスの周波数情報を更新させてよい。例えば、幾らかの実施形態では、コードはさらに、ストリームアクセスの長さ情報をストリーム長閾値と比較して、ストリームアクセスの長さ情報がストリーム長閾値を越える場合、ストリームデータをキャッシュに格納させないようにし、ストリームデータをシステムメモリ16と大容量記憶装置14との間で直接やりとりさせる。] [0020] 図2のプロセッサベースのシステム20は、プロセッサ21、プロセッサ21に連結されたシステムメモリ22、大容量記憶デバイス23、および、システムメモリ22と大容量記憶デバイス23との間に設けられた不揮発性キャッシュメモリ24を含んでよい。例えば、プロセッサ21は、中央処理装置(CPU)であってよい。例えば、システムメモリ22はDRAMであってよい。例えば、システムメモリ22は、メモリコントローラハブ(MCH)25経由でプロセッサ21に連結されてよい。例えば、キャッシュ24は、不揮発性メモリ(NVM)キャッシュであってよい。例えば、大容量記憶デバイス23は、ハードディスクドライブまたは光ディスクドライブ等の回転媒体であってよい。例えば、大容量記憶デバイス23は、固体ドライブ等の非回転媒体であってもよい。例えば、キャッシュ24および大容量記憶デバイス23の両方が、入出力コントローラハブ(ICH)26経由でMCHに連結されてもよい。] 図2 [0021] プロセッサベースのシステム20上に格納されたコードは、プロセッサベースのシステムに、第1の情報を要求するための大容量記憶アクセスに関する第1の要求を受信させ、プロセッサベースのシステムの、現在の起動コンテキストとは異なる前の起動コンテキスト中に格納された起動前ストリーム情報を取得させる。コードは、プロセッサべースのシステム20に、第1の要求に関する第1のメタデータと起動前ストリーム情報との比較に基づいて第1の情報がストリームアクセスの一部であるか否かを判断させ、第1の要求に関する第1のメタデータと起動前ストリーム情報との比較に基づいて第1の情報がストリームアクセスの一部ではないと判断された場合、第1の情報をキャッシュさせることができる。第1の情報がストリームアクセスの一部であると判断された場合、コードはプロセッサベースのシステム20に、ストリームアクセスの周波数情報と、周波数閾値とを比較させ、第1の情報がストリームアクセスの一部であると判断され、ストリームアクセスの周波数情報が周波数閾値を超えない場合、大容量記憶アクセスについての第1の要求を大容量記憶デバイス23に対して直接行い、第1の情報がストリームアクセスの一部であると判断され、ストリームアクセスの周波数情報が周波数閾値を超える場合、第1の情報をキャッシュしてよい。例えば、コードは大容量記憶デバイス23、システムメモリ22、または、プロセッサベースのシステム20に連結された別のメモリまたは記憶デバイスに格納されてよい。例えば、コードは、ICH26に連結されたBIOS(basicinput/output system)27の一部として格納することができる。] [0022] 例えば、システム20の幾らかの実施形態では、コードはさらに、プロセッサベースのシステム20に、第2の情報を要求するための大容量記憶アクセスに関する第2の要求を受信させてよい。以前に第1の情報がストリームアクセスの一部であると判断されていない場合、コードはさらに、プロセッサベースのシステム20に、第1の要求に関する第1のメタデータと第2の要求に関する第2のメタデータとの比較に基づいて、第2の情報がストリームアクセスの一部であるか否かを判断させてよい。第2の情報がストリームアクセスの一部であると判断された場合、コードは、プロセッサベースのシステム20に、プロセッサベースのシステム20のハード起動を含む異なる電力状態において持続しているストリームアクセスに対応するストリーム情報を格納させ、このストリーム情報は後に、後続する起動用の起動前ストリーム情報として利用することができる。] [0023] 例えば、プロセッサベースのシステム20の幾らかの実施形態では、コードはさらに、ストリームアクセスの周波数情報を更新することができる。プロセッサベースのシステム20の幾らかの実施形態では、コードはさらに、ストリームアクセスの長さ情報をストリーム長閾値と比較して、ストリームアクセスの長さ情報がストリーム長閾値を越える場合、ストリームデータをキャッシュ24に格納させないようにし、ストリームデータをシステムメモリ22と大容量記憶デバイス23との間で直接やりとりさせる。] [0024] 図3および図4を参照すると、本発明の幾らかの実施形態では、電子システムでキャッシュを利用することには、大容量記憶デバイスとシステムメモリとの間にキャッシュを設けること(例えばブロック30)、第1の情報を要求するための大容量記憶アクセスに関する第1の要求を受信すること(例えばブロック31)、現在の起動コンテキストとは異なる前の起動コンテキスト中に格納された起動前ストリーム情報を取得すること(例えばブロック32)、第1の要求に関する第1のメタデータと起動前ストリーム情報との比較に基づいて第1の情報がストリームアクセスの一部であるか否かを判断すること(例えばブロック33)、および、第1の要求に関する第1のメタデータと起動前ストリーム情報との比較に基づいて第1の情報がストリームアクセスの一部であると判断された場合、大容量記憶アクセスに関する第1の要求を、大容量記憶デバイスに対して直接行うこと(例えばブロック34)が含まれてよい。] 図3 図4 [0025] 例えば、本発明の幾らかの実施形態はさらに、第1の要求に関する第1のメタデータと起動前ストリーム情報との比較に基づいて第1の情報がストリームアクセスの一部ではないと判断された場合、第1の情報をキャッシュすること(例えばブロック35)を含んでよい。例えば、本発明の幾らかの実施形態はさらに、第2の情報を要求するための大容量記憶アクセスに関する第2の要求を受信すること(ブロック36)、および、以前に第1の情報がストリームアクセスの一部であると判断されていない場合、第1の要求に関する第1のメタデータと第2の要求に関する第2のメタデータとの比較に基づいて、第2の情報がストリームアクセスの一部であるか否かを判断すること(ブロック37)、および、第2の情報がストリームアクセスの一部であると判断された場合、電子システムのハード起動を含む電子システムの異なる電力状態において持続しているストリームアクセスに対応するストリーム情報を格納し、ここで格納されたストリーム情報は後に、後続する起動用の起動前ストリーム情報として利用することができること(ブロック38)を含んでよい。] [0026] 図5および図6を参照すると、本発明の幾らかの実施形態では、電子システムでキャッシュを利用することは、大容量記憶デバイスとシステムメモリとの間にキャッシュを設けること(例えばブロック50)、第1の情報を要求するための大容量記憶アクセスに関する第1の要求を受信すること(例えばブロック51)、第1の要求に関する第1のメタデータとストリームアクセスに関する他の情報との比較に基づいて第1の情報がストリームアクセスの一部であるか否かを判断すること(例えばブロック52)、第1の要求に関する第1のメタデータとストリームアクセスに関する他の情報との比較に基づいて第1の情報がストリームアクセスの一部であると判断された場合、ストリームアクセスの周波数情報と、周波数閾値とを比較すること(例えばブロック53)、第1の情報がストリームアクセスの一部であると判断され、ストリームアクセスの周波数情報が周波数閾値を超えない場合、大容量記憶アクセスに関する第1の要求を、大容量記憶デバイスに対して直接行うこと(例えばブロック54)、第1の情報がストリームアクセスの一部であると判断され、ストリームアクセスの周波数情報が周波数閾値を超える場合、第1の情報をキャッシュすること(例えばブロック55)を含んでよい。] 図5 図6 [0027] 例えば、ストリームアクセスに関する他のストリーム情報は、起動前ストリーム情報、現在の起動コンテキストにセーブされているストリーム情報、あるいは、第1の情報をストリームアクセスの一部として特定するのに利用されうるストリームアクセスに関する他の情報であってよい。例えば、幾らかの実施形態はさらに、ストリームアクセスの周波数情報を更新すること(例えばブロック56)を含んでよい。例えば、幾らかの実施形態はさらに、ストリームアクセスの長さ情報をストリーム長閾値と比較すること(例えばブロック57)、ストリームアクセスの長さ情報がストリーム長閾値を越える場合、第1の情報をキャッシュさせないようにすること(例えばブロック58)を含んでよい。] [0028] 図7を参照すると、本発明の幾らかの実施形態では、プロセッサベースのシステムにおいてキャッシュを利用することは、大容量記憶デバイスとシステムメモリとの間にキャッシュを設けること(例えばブロック70)、第1の情報を要求するための大容量記憶アクセスに関する第1の要求を受信すること(例えばブロック71)、現在の起動コンテキストとは異なる前の起動コンテキスト中に格納された起動前ストリーム情報を取得すること(例えばブロック72)、第1の要求に関する第1のメタデータと起動前ストリーム情報との比較に基づいて第1の情報がストリームアクセスの一部であるか否かを判断すること(例えばブロック73)、第1の要求に関する第1のメタデータと起動前ストリーム情報との比較に基づいて第1の情報がストリームアクセスの一部であると判断されなかった場合、第1の情報をキャッシュすること(例えばブロック74)を含んでよい。第1の要求に関する第1のメタデータと起動前ストリーム情報との比較に基づいて第1の情報がストリームアクセスの一部であると判断された場合、幾らかの実施形態はさらに、ストリームアクセスの周波数情報と、周波数閾値とを比較すること(例えばブロック75)、第1の情報がストリームアクセスの一部であると判断され、ストリームアクセスの周波数情報が周波数閾値を超えない場合、大容量記憶アクセスに関する第1の要求を、大容量記憶デバイスに対して直接行うこと(例えばブロック76)、第1の情報がストリームアクセスの一部であると判断され、ストリームアクセスの周波数情報が周波数閾値を超える場合、第1の情報をキャッシュすること(例えばブロック77)を含んでよい。] 図7 [0029] 本発明の幾らかの実施形態はさらに、ストリームアクセスの周波数情報を更新すること(例えばブロック78)を含んでよい。例えば、幾らかの実施形態はさらに、エントリポイントAに続くキャッシュを利用することができる(例えば図3を参照)。例えば、幾らかの実施形態はさらに、エントリポイントBに続くキャッシュを利用することもできる(例えば図5を参照)。] 図3 図5 [0030] 本発明の幾らかの実施形態では、回転媒体とキャッシュとの間のストリームアクセスを処理する技術を向上させるという利点を有する。上述したホワイトペーパにも記載されているように、インテル(登録商標)ターボメモリにより、ハードディスクアクセスを加速することのできるキャッシュ戦略が提供される。しかし、ハードディスクが良好に行うことができるものの、同時にキャッシュに対しては有害になりうるアクセスも存在する。例えば、メディアファイル再生要求は、ハードディスクがHDビデオディスプレイが要求するレートにおいて容易に実現可能である。このようなファイルは大容量且つ稀にしか再利用されないので、キャッシュの基本的な前提(つまり、時間局所性)が適用できない。これらファイルがキャッシュされると、良好な時間局所性を有する位置がキャッシュから退出して、不良な時間局所性を有するものに置き換わってしまう可能性がある。本発明の幾らかの実施形態では、情報をキャッシュする時およびキャッシュすべきか否かについての決定のタイミングおよび品質を向上させることができるという利点を有する。] [0031] この決定プロセスは、ファイルシステムのソフトウェアスタックにおけるキャッシュドライバソフトウェアの位置により複雑になりうる。例えば、キャッシュドライバソフトウェアは、ファイル名称情報に直接アクセスしない可能性がある。つまり、キャッシュドライバソフトウェアが、メタデータ(例えば、ハードドライブの開始セクタを特定するのに利用される論理ブロックアドレスであるLBA、読み書き等の大容量記憶デバイスへのコマンドであるCommand、および、コマンドのセクタ数であるLength)のような限られた情報にアクセスする場合がある。] [0032] 本発明の幾らかの実施形態は、キャッシュドライバウソフトウェアが利用可能なこのような限られた情報をアセンブルおよび利用して、ストリームを特定、管理する技術を向上させることができるという利点を有する。例えば、あるストリームは、同じコマンド、および、全てのセクタ、または殆ど全てのセクタを表す一式のコマンドであってよい。例えば、幾らかの実施形態では、最小サイズがストリームを検知、特定するときに有用なパラメータであってよい。可能性の少ない候補は外されるという理由から、最小サイズパラメータは、キャッシュをより大きく見せる効果を有しうる。] [0033] 図8および図9を参照すると、図8は最小サイズパラメータを有さないキャッシュ利用のシミュレーション例を示し、図9は4つのメガバイト(MB)の最小サイズパラメータを有するキャッシュ利用のシミュレーション例を示す。図9から分かるように、4MB以上のサイズ分のストリームを消去すると、キャッシュサイズの約40%が利用可能となっている。] 図8 図9 [0034] 幾らかの実施形態では、ストリームに関する情報は、メタデータに格納されてよい。このような情報は、後にアクセスを要求された場合、同じストリームを特定するのに利用することができる。このようなメタデータは、ディスクドライブおよびキャッシュの前述した格納装置などからの後のこの要求に応じて、直接データにアクセスするのに利用することができる。幾らかの実施形態では、前に行われたアクセスに関する情報を潜在的なストリーム情報アレイに記録することにより、ストリームアクセスを検知および特定することができる。このようなアレイは、システムメモリまたはキャッシュ自身等の様々な位置に格納することができる。このアレイの各エレメントは、開始位置(例えば開始ディスクアドレス)、ストリーム(または潜在的なストリーム)の要求数の長さ、カウント、および/または、ストリーム(または潜在的なストリーム)の最後の要求を受信したことを示すタイムスタンプ、等の特定のメタデータを含みうる。例えば、ストリームが全部揃った後で、ストリームの最終的な長さをメタデータに記述してよい。] [0035] 図10を参照すると、本発明の幾らかの実施形態は、ストリームを特定すること(例えばブロック101)を含んでよい。例えば、この特定には、連続アクセスが含まれるが、単なる連続アクセスには限定されない。例えば、情報が連続に類似している場合にも、アクセスをストリームとして検知することもできる。読み出しアクセスおよび書き込みアクセス両方をストリームとして特定することもできる。ストリームの特定を連続アクセスに限定しないことにより、本発明の幾らかの実施形態では、a)ストリームが連続アクセスされない場合、および、b)例えば分割または圧縮(これらに限定はされない)といった理由から大容量記憶デバイス(例えば回転媒体)上にストリームが連続配置されない場合、という、2つのケースを追加として特定することができるという利点を有する。] 図10 [0036] 本発明の幾らかの実施形態は、さらに、ストリームの残りの全てのアクセスを、キャッシュを介在させずに、大容量記憶デバイス(例えばハードドライブ)に直接方向付けること(例えばブロック102)、ストリームのキャッシュされているコンテンツを「早期退出」候補としてマークすること(例えばブロック103)、ストリームをシステムメモリ(例えばDRAM)へプリフェッチおよびバッファリングすること(例えばブロック104)、および、例えば再利用または経年劣化等の理由により無効になった際に、ストリームを閉鎖すること(例えばブロック105)を含んでよい。] [0037] 本発明の幾らかの実施形態はさらに、全システム電力状態においてストリーム情報をセーブすること(例えばブロック106)を含んでよい。例えば、現在の起動コンテキストで検知されたストリーム情報は、(例えば、分、時間、または日という特定の時間単位に限らず)長期間保持することができ、後続する起動における起動前ストリーム情報としての利用に備えさせることができる。起動前ストリーム情報を格納しておくことにより、ストリーム自身の第1のエレメントのアクセスについてストリームを検知する助けとなり、これにより、ストリームを(例えば第2のアクセス要求の前に)早期に特定することが可能となり、キャッシュのより有効な活用が可能となる(例えば、第1のアクセスから情報をキャッシュしないこと等により)という利点を有する。例えば、起動前ストリーム情報は、ハードディスク、不揮発性メモリ、あるいは電池駆動型メモリ等の永続記憶デバイスに格納することができる。] [0038] 例えば、システム電力状態には、低減電力状態および電力停止状態が含まれてよい。プロセッサベースのシステムのなかには、例えば準備完了状態、待ち状態、停止状態、休止状態、およびオフ状態等を含む様々な電力状態を利用するものもある。例えば、ハード起動は、オフ状態からシステムを再開させることに対応していてよい。] [0039] 本発明の幾らかの実施形態は、ストリームアクセス情報の周波数をセーブすること(例えばブロック107)、および、ストリーム周波数情報を利用して、ストリームアクセスを直接ディスクに対して行うか、ストリームアクセスをキャッシュにセーブするか、を決定すること(例えばブロック108)を含んでもよい。また現状のキャッシュ利用状況には反しているが、本発明の幾らかの実施形態では、比較的大きなストリームが比較的頻繁にアクセスを受ける場合には、該ストリームをキャッシュに格納することができることができるという利点も有しうる。例えば、キャッシュが大容量記憶デバイスと比較して性能が良好である場合、頻繁にアクセスされるストリームをキャッシュすることでユーザ体験を向上させることができる。] [0040] 本発明の幾らかの実施形態では、キャッシュは以下の疑似コードに従って利用することができる。 入力: アクセス、システムからの要求 主要な変数: N、ストリーム検知スロット数 IsAStream、フィルタリング開始前のストリームデータのセクタ数 M、既知のストリームスロット数] [0041] // 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] [0042] // 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] [0043] // 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] [0044] 全システム電力状態においてストリーム情報を格納すること、および/または、ストリーム周波数情報をセーブすることにより、情報をキャッシュに格納する時およびキャッシュすべきか否かについての決定のタイミングおよび品質を向上させることができるという利点が生じる。幾らかの実施形態では、キャッシュメモリの利用に関するより良い決定を行うことにより、小さなキャッシュをより有効に活用することができるようになり、これによりシステムサイズおよび/またはコストが低減される。幾らかの実施形態では、キャッシュに対して利点をもたらす可能性の少ないアクセスを排除することで待ち行列トラフィックがなくなり、キャッシュのレスポンスを高めることができ、一方で、大容量記憶デバイスの良好な媒体性能を保持することもできるという利点もある。幾らかの実施形態では、頻繁に利用される特定のサイズのストリームをキャッシュすることで、ユーザ体験を向上させることができる。] [0045] 当業者であれば、本気際の利点を利用することで、多くの種類の他の回路およびハードウェアおよび/またはソフトウェアの組み合わせを、ここで記載する実施形態および本発明の他の実施形態に応じた様々な方法、回路、およびシステムを実装するよう構成することができるであろう。図1から図10に示す例は、適切な実施形態の、非制限的な例示である。] 図1 図10 [0046] 本発明の前述した、あるいはその他の側面は、個々に、または組み合わせにより実現可能である。本発明は、そうではないことが特定の請求項で必須である場合を除いて、これら側面の2以上を必要するとの解釈に限定されるべきではない。本発明を現在の時点で好適な例示とみなされるものに関して記載してきたが、本発明は、開示されている例示に限定されると解釈されるべきではなく、本発明の精神および範囲に含まれる様々な変形例および均等物である構成を含むことを意図している。]
权利要求:
請求項1 電子システムにおいてキャッシュを利用する方法であって、大容量記憶デバイスとシステムメモリとの間にキャッシュを設けることと、第1の情報を要求するための大容量記憶アクセスに関する第1の要求を受信することと、現在の起動コンテキストとは異なる前の起動コンテキスト中に格納された起動前ストリーム情報を取得することと、前記第1の要求に関する第1のメタデータと前記起動前ストリーム情報との比較に基づいて前記第1の情報がストリームアクセスの一部であるか否かを判断することと、前記第1の要求に関する前記第1のメタデータと前記起動前ストリーム情報との前記比較に基づいて前記第1の情報が前記ストリームアクセスの一部であると判断された場合、大容量記憶アクセスに関する前記第1の要求を、前記大容量記憶デバイスに対して直接行うこととを備える方法。 請求項2 前記第1の要求に関する前記第1のメタデータと前記起動前ストリーム情報との前記比較に基づいて前記第1の情報が前記ストリームアクセスの一部ではないと判断された場合、前記第1の情報をキャッシュすることをさらに備える請求項1に記載の方法。 請求項3 第2の情報を要求するための大容量記憶アクセスに関する第2の要求を受信することと、以前に前記第1の情報が前記ストリームアクセスの一部であると判断されていない場合、前記第1の要求に関する前記第1のメタデータと前記第2の要求に関する第2のメタデータとの比較に基づいて、前記第2の情報が前記ストリームアクセスの一部であるか否かを判断することと、前記第2の情報が前記ストリームアクセスの一部であると判断された場合、前記電子システムのハード起動を含む前記電子システムの異なる電力状態において持続している前記ストリームアクセスに対応するストリーム情報を格納することとをさらに備え、格納された前記ストリーム情報は、後に、後続する起動用の前記起動前ストリーム情報として利用可能である請求項2に記載の方法。 請求項4 電子システムにおいてキャッシュを利用する方法であって、大容量記憶デバイスとシステムメモリとの間にキャッシュを設けることと、第1の情報を要求するための大容量記憶アクセスに関する第1の要求を受信することと、前記第1の要求に関する第1のメタデータとストリームアクセスに関する他の情報との比較に基づいて前記第1の情報が前記ストリームアクセスの一部であるか否かを判断することと、前記第1の要求に関する前記第1のメタデータと前記ストリームアクセスに関する前記他の情報との比較に基づいて前記第1の情報が前記ストリームアクセスの一部であると判断された場合、前記ストリームアクセスの周波数情報と、周波数閾値とを比較することと、前記第1の情報が前記ストリームアクセスの一部であると判断され、前記ストリームアクセスの前記周波数情報が前記周波数閾値を超えない場合、大容量記憶アクセスに関する前記第1の要求を、前記大容量記憶デバイスに対して直接行うことと、前記第1の情報が前記ストリームアクセスの一部であると判断され、前記ストリームアクセスの前記周波数情報が前記周波数閾値を超える場合、前記第1の情報をキャッシュすることとを備える方法。 請求項5 前記ストリームアクセスの前記周波数情報を更新することをさらに備える請求項4に記載の方法。 請求項6 前記ストリームアクセスの長さ情報をストリーム長閾値と比較することと、前記ストリームアクセスの前記長さ情報が前記ストリーム長閾値を越える場合、第1の情報をキャッシュさせないようにすることとをさらに備える請求項4に記載の方法。 請求項7 プロセッサベースのシステムにおいてキャッシュを利用する方法であって、大容量記憶デバイスとシステムメモリとの間にキャッシュを設けることと、第1の情報を要求するための大容量記憶アクセスに関する第1の要求を受信することと、現在の起動コンテキストとは異なる前の起動コンテキスト中に格納された起動前ストリーム情報を取得することと、前記第1の要求に関する第1のメタデータと前記起動前ストリーム情報との比較に基づいて前記第1の情報がストリームアクセスの一部であるか否かを判断することと、前記第1の要求に関する前記第1のメタデータと前記起動前ストリーム情報との前記比較に基づいて前記第1の情報が前記ストリームアクセスの一部ではないと判断された場合、前記第1の情報をキャッシュすることと、前記第1の要求に関する前記第1のメタデータと前記起動前ストリーム情報との前記比較に基づいて前記第1の情報が前記ストリームアクセスの一部であると判断された場合、前記ストリームアクセスの周波数情報と、周波数閾値とを比較することと、前記第1の情報が前記ストリームアクセスの一部であると判断され、前記ストリームアクセスの前記周波数情報が前記周波数閾値を超えない場合、大容量記憶アクセスに関する前記第1の要求を、前記大容量記憶デバイスに対して直接行うことと、前記第1の情報が前記ストリームアクセスの一部であると判断され、前記ストリームアクセスの前記周波数情報が前記周波数閾値を超える場合、前記第1の情報をキャッシュすることとを備える方法。 請求項8 第2の情報を要求するための大容量記憶アクセスに関する第2の要求を受信することと、以前に前記第1の情報が前記ストリームアクセスの一部であると判断されていない場合、前記第1の要求に関する第1のメタデータと前記第2の要求に関する第2のメタデータとの比較に基づいて、前記第2の情報が前記ストリームアクセスの一部であるか否かを判断することと、前記第2の情報が前記ストリームアクセスの一部であると判断された場合、前記プロセッサベースのシステムのハード起動を含む異なる電力状態において持続している前記ストリームアクセスに対応するストリーム情報を格納することとをさらに備え、前記ストリーム情報は、後に、後続する起動用の前記起動前ストリーム情報として利用可能である請求項7に記載の方法。 請求項9 前記ストリームアクセスの前記周波数情報を更新することをさらに備える請求項7に記載の方法。 請求項10 前記ストリームアクセスの長さ情報をストリーム長閾値と比較することと、前記ストリームアクセスの前記長さ情報が前記ストリーム長閾値を越える場合、前記第1の情報をキャッシュさせないようにすることとをさらに備える請求項7に記載の方法。 請求項11 電子システムであって、前記電子システムの大容量記憶装置およびシステムメモリの間に設けられたキャッシュと、前記電子システムに格納され、第1の情報の第1の要求の第1のメタデータと、前記電子システムの前の起動コンテキストに格納されている起動前ストリーム情報との比較に基づいて、前記キャッシュにストリームデータが格納されないようにして、前記ストリームデータを直接前記システムメモリと前記大容量記憶装置との間でやりとりさせるコードとを備える電子システム。 請求項12 前記コードはさらに、前記第1の要求に関する第1のメタデータと前記起動前ストリーム情報との前記比較に基づいて前記第1の情報がストリームアクセスの一部ではないと判断された場合、前記第1の情報をキャッシュさせる請求項11に記載の電子システム。 請求項13 前記コードはさらに、第2の情報を要求するための大容量記憶アクセスに関する第2の要求を受信させ、以前に前記第1の情報が前記ストリームアクセスの一部であると判断されていない場合、前記第1の要求に関する第1のメタデータと前記第2の要求に関する第2のメタデータとの比較に基づいて、前記第2の情報が前記ストリームアクセスの一部であるか否かを判断させ、前記第2の情報が前記ストリームアクセスの一部であると判断された場合、前記電子システムのハード起動を含む前記電子システムの異なる電力状態において持続している前記ストリームアクセスに対応するストリーム情報を格納させ、格納された前記ストリーム情報は後に、後続する起動用の前記起動前ストリーム情報として利用可能である請求項12に記載の電子システム。 請求項14 前記コードはさらに、前記第1の要求に関する第1のメタデータと前記起動前ストリーム情報との前記比較に基づいて前記第1の情報がストリームアクセスの一部であるか否かを判断させ、前記ストリームアクセスの周波数情報と、周波数閾値とを比較させ、前記第1の情報が前記ストリームアクセスの一部であると判断され、前記ストリームアクセスの前記周波数情報が前記周波数閾値を超えない場合、大容量記憶アクセスについての前記第1の要求を前記大容量記憶装置に対して直接行わせ、前記第1の情報が前記ストリームアクセスの一部であると判断され、前記ストリームアクセスの前記周波数情報が前記周波数閾値を超える場合、前記第1の情報をキャッシュさせる請求項11に記載の電子システム。 請求項15 前記コードはさらに、前記ストリームアクセスの前記周波数情報を更新させる請求項14に記載の電子システム。 請求項16 前記コードはさらに、前記ストリームアクセスの長さ情報をストリーム長閾値と比較させ、前記ストリームアクセスの前記長さ情報が前記ストリーム長閾値を越える場合、ストリームデータを前記キャッシュに格納させず、前記ストリームデータを直接前記システムメモリと前記大容量記憶装置との間でやりとりさせる請求項14に記載の電子システム。 請求項17 プロセッサベースのシステムであって、プロセッサと、前記プロセッサに連結されたシステムメモリと、大容量記憶デバイスと、前記システムメモリおよび前記大容量記憶デバイスの間に設けられた不揮発性キャッシュメモリと、前記プロセッサベースのシステムに格納されたコードとを備え、前記コードは前記プロセッサベースのシステムに、第1の情報を要求するための大容量記憶アクセスに関する第1の要求を受信することと、現在の起動コンテキストとは異なる、前記プロセッサベースのシステムの前の起動コンテキスト中に格納された起動前ストリーム情報を取得することと、前記第1の要求に関する第1のメタデータと前記起動前ストリーム情報との比較に基づいて前記第1の情報がストリームアクセスの一部であるか否かを判断することと、前記第1の要求に関する第1のメタデータと前記起動前ストリーム情報との前記比較に基づいて前記第1の情報が前記ストリームアクセスの一部ではないと判断された場合、前記第1の情報をキャッシュすること、前記第1の情報が前記ストリームアクセスの一部であると判断された場合、前記ストリームアクセスの周波数情報と、周波数閾値とを比較することと、前記第1の情報が前記ストリームアクセスの一部であると判断され、前記ストリームアクセスの前記周波数情報が前記周波数閾値を超えない場合、大容量記憶に対するアクセスに関する前記第1の要求を、前記大容量記憶デバイスに対して直接行うことと、前記第1の情報が前記ストリームアクセスの一部であると判断され、前記ストリームアクセスの前記周波数情報が前記周波数閾値を超える場合、前記第1の情報をキャッシュすることとを行わせるプロセッサベースのシステム。 請求項18 前記コードは前記プロセッサベースのシステムにさらに、第2の情報を要求するための大容量記憶アクセスに関する第2の要求を受信することと、以前に前記第1の情報が前記ストリームアクセスの一部であると判断されていない場合、前記第1の要求に関する前記第1のメタデータと前記第2の要求に関する第2のメタデータとの比較に基づいて、前記第2の情報が前記ストリームアクセスの一部であるか否かを判断することと、前記第2の情報が前記ストリームアクセスの一部であると判断された場合、前記プロセッサベースのシステムのハード起動を含む異なる電力状態において持続している前記ストリームアクセスに対応するストリーム情報を格納することとを行わせ、前記ストリーム情報は、後に、後続する起動用の前記起動前ストリーム情報として利用可能である請求項17に記載のプロセッサベースのシステム。 請求項19 前記コードはさらに、前記ストリームアクセスの前記周波数情報を更新することを行わせる請求項17に記載のプロセッサベースのシステム。 請求項20 前記コードはさらに、前記ストリームアクセスの長さ情報をストリーム長閾値と比較することと、前記ストリームアクセスの前記長さ情報が前記ストリーム長閾値を越える場合、ストリームデータを前記キャッシュに格納させず、前記ストリームデータを直接前記システムメモリと前記大容量記憶デバイスとの間でやりとりさせることとを行わせる請求項18に記載のプロセッサベースのシステム。
类似技术:
公开号 | 公开日 | 专利标题 US10216638B2|2019-02-26|Methods and systems for reducing churn in a caching device US8335896B1|2012-12-18|Digital locked loop on channel tagged memory requests for memory optimization US8656088B2|2014-02-18|Optimized flash based cache memory US8656256B2|2014-02-18|Apparatus and method for multi-mode operation of a flash memory device TWI388983B|2013-03-11|用於促進快閃記憶體系統之快速喚起的方法及系統 CA2523761C|2015-04-21|Using external memory devices to improve system performance KR100706808B1|2007-04-12|쓰기 버퍼로서 동작하는 불 휘발성 메모리를 구비한 데이터저장 장치 및 그것의 블록 회수 방법 US6725342B1|2004-04-20|Non-volatile mass storage cache coherency apparatus US8656083B2|2014-02-18|Frequency distributed flash memory allocation based on free page tables US9152568B1|2015-10-06|Environmental-based device operation US7814276B2|2010-10-12|Data cache architecture and cache algorithm used therein KR101422855B1|2014-07-24|데이터를 효율적으로 저장하는 방법, 컴퓨터 판독가능 매체및 컴퓨터 시스템 US8417878B2|2013-04-09|Selection of units for garbage collection in flash memory KR101286477B1|2013-07-16|플래시 메모리 시스템의 고속 웨이크-업을 용이하게 하는방법 및 시스템 US8972690B2|2015-03-03|Methods and apparatuses for usage based allocation block size tuning US8347029B2|2013-01-01|Systems and methods for fast state modification of at least a portion of non-volatile memory US9141526B2|2015-09-22|Reclaiming units by searching units for a predetermined criterion and storing data from a valid subunit US7752391B2|2010-07-06|Variable caching policy system and method US20150363457A1|2015-12-17|Deduplicating storage with enhanced frequent-block detection US8051249B2|2011-11-01|Method for preloading data to improve data-retrieval times US8595451B2|2013-11-26|Managing a storage cache utilizing externally assigned cache priority tags US7610438B2|2009-10-27|Flash-memory card for caching a hard disk drive with data-area toggling of pointers stored in a RAM lookup table US8838875B2|2014-09-16|Systems, methods and computer program products for operating a data processing system in which a file delete command is sent to an external storage device for invalidating data thereon KR101054153B1|2011-08-03|기억 장치 US7627713B2|2009-12-01|Method and apparatus to maintain data integrity in disk cache memory during and after periods of cache inaccessibility
同族专利:
公开号 | 公开日 JP2013178818A|2013-09-09| WO2009158183A3|2010-02-25| GB2473149A|2011-03-02| DE112009000418T5|2011-04-21| US20090327607A1|2009-12-31| WO2009158183A2|2009-12-30| GB2473149B|2012-10-17| GB201015976D0|2010-11-03| CN101981551B|2014-04-16| US8433854B2|2013-04-30| JP5340315B2|2013-11-13| JP5717790B2|2015-05-13| CN101981551A|2011-02-23|
引用文献:
公开号 | 申请日 | 公开日 | 申请人 | 专利标题
法律状态:
2012-09-12| A131| Notification of reasons for refusal|Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20120911 | 2012-12-11| A524| Written submission of copy of amendment under section 19 (pct)|Free format text: JAPANESE INTERMEDIATE CODE: A524 Effective date: 20121210 | 2013-01-23| A02| Decision of refusal|Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20130122 | 2013-05-22| A521| Written amendment|Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20130521 | 2013-06-08| A521| Written amendment|Free format text: JAPANESE INTERMEDIATE CODE: A821 Effective date: 20130522 | 2013-06-14| A911| Transfer of reconsideration by examiner before appeal (zenchi)|Free format text: JAPANESE INTERMEDIATE CODE: A911 Effective date: 20130613 | 2013-07-03| TRDD| Decision of grant or rejection written| 2013-07-10| A01| Written decision to grant a patent or to grant a registration (utility model)|Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20130709 | 2013-08-15| A61| First payment of annual fees (during grant procedure)|Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20130806 | 2013-08-16| R150| Certificate of patent or registration of utility model|Free format text: JAPANESE INTERMEDIATE CODE: R150 | 2016-08-02| R250| Receipt of annual fees|Free format text: JAPANESE INTERMEDIATE CODE: R250 | 2017-08-08| R250| Receipt of annual fees|Free format text: JAPANESE INTERMEDIATE CODE: R250 | 2018-08-16| LAPS| Cancellation because of no payment of annual fees|
优先权:
[返回顶部]
申请号 | 申请日 | 专利标题 相关专利
Sulfonates, polymers, resist compositions and patterning process
Washing machine
Washing machine
Device for fixture finishing and tension adjusting of membrane
Structure for Equipping Band in a Plane Cathode Ray Tube
Process for preparation of 7 alpha-carboxyl 9, 11-epoxy steroids and intermediates useful therein an
国家/地区
|