JP2013178818A - キャッシュ利用に関する装置および方法 - Google Patents

キャッシュ利用に関する装置および方法 Download PDF

Info

Publication number
JP2013178818A
JP2013178818A JP2013106926A JP2013106926A JP2013178818A JP 2013178818 A JP2013178818 A JP 2013178818A JP 2013106926 A JP2013106926 A JP 2013106926A JP 2013106926 A JP2013106926 A JP 2013106926A JP 2013178818 A JP2013178818 A JP 2013178818A
Authority
JP
Japan
Prior art keywords
information
stream
access
request
stream access
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2013106926A
Other languages
English (en)
Other versions
JP5717790B2 (ja
Inventor
Scott Tetrick R
テトリック、アール.、スコット
Juenemann Dale
ユーネマン、デール
Howes Jordan
ハウズ、ジョーダン
Matthews Jeanna
マシューズ、ジーナ
Wells Steven
ウェルズ、スティーブン
Hinton Glenn
ヒントン、グレン
Pinto Oscar
ピント、オスカー
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of JP2013178818A publication Critical patent/JP2013178818A/ja
Application granted granted Critical
Publication of JP5717790B2 publication Critical patent/JP5717790B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0868Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0888Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using selective caching, e.g. bypass
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/22Employing cache memory using specific memory technology
    • G06F2212/222Non-volatile memory
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

【課題】ストリームアクセスを伴う電子システムにおけるキャッシュの利用方法を提供する。
【解決手段】電子システム10は、大容量記憶装置14とシステムメモリ16との間に設けられたキャッシュ12とを含み、コードは電子システム上に格納されて、第1の情報の第1の要求の第1のメタデータと、前の起動コンテキストに格納されている起動前ストリーム情報との比較に基づいて、キャッシュにストリームデータが格納されないようにして、直接システムメモリと大容量記憶装置との間でストリームデータをやりとりさせることができる。
【選択図】図1

Description

本発明はキャッシュ利用に関する。より詳しくは、本発明の幾らかの実施形態は、プロセッサベースのシステム等の電子システムで不揮発性キャッシュを利用する装置および方法に関する。
多くの電子システムがキャッシュメモリ利用の恩恵を得ている。電子システムの中には、ドライバソフトウェアを提供することでキャッシュメモリを利用しているものもある。
米国特許第7,360,015号明細書は、要求された情報がストリーミングアクセスの一部であるか否かを判断し、要求された情報がストリーミングアクセスの一部である場合に、要求された情報を記憶デバイスとメモリとの間で直接やりとりさせることを含みうるキャッシュメモリの利用法の幾らかを記載している。逆に、要求された情報がストリーミングアクセスの一部でない場合には、記憶デバイスとキャッシュとの間でやりとりすることができる。様々な実施形態では、キャッシュは不揮発性ディスクキャッシュであってよい。
ftp://download.intel.com/design/flash/NAND/turbomemory/whitepaper.pdfで公開されているホワイトペーパでは、休止後に迅速に生産モードへとレジュームする機能を提供して、限りあるハードディスクドライブアクセスによってさらなる節電機能を提供してユーザ体験を高めるべくアプリケーションのレスポンスを高める、インテル(登録商標)ターボメモリコントローラASIC(特定用途向けIC)チップおよび2つのインテルNANDフラッシュ不揮発性メモリコンポーネントで構成されるインテル(登録商標)ターボメモリが記載されている。
添付図面に示される以下の好適な実施形態の記載を読むことで本発明の様々な特徴が明らかになるが、添付図面全般にわたり、同様の参照番号を付された部材は概して同じ部材を示している。図面は必ずしも実寸に即して描かれてはおらず、本発明の原理を示すことに重きが置かれている。
本発明の幾らかの実施形態における電子システムのブロック図である。
本発明の幾らかの実施形態におけるプロセッサベースのシステムのブロック図である。
本発明の幾らかの実施形態におけるフロー図である。
本発明の幾らかの実施形態における別のフロー図である。
本発明の幾らかの実施形態における別のフロー図である。
本発明の幾らかの実施形態における別のフロー図である。
本発明の幾らかの実施形態における別のフロー図である。
本発明の幾らかの実施形態と比べるための、数固有セクタとアクセス数とを示すグラフである。
本発明の幾らかの実施形態における数固有セクタとアクセス数とを示すグラフである。
本発明の幾らかの実施形態における別のフロー図である。
以下の記載において、説明目的であり、限定を目的ではないが、特定の構造、アーキテクチャ、インタフェース、技術等の特定の詳細を示して、本発明の様々な側面の完全な理解を促す。しかし、本開示を読んだ当業者には、本発明のこれら様々な側面が、これら特定の詳細から逸脱する他の例においても実施可能であることが自明である。また他の場合には、公知のデバイス、回路、および方法の説明を省略することで、本発明の記載を不要な詳細により曖昧にしないようにしている。
図1に示す電子システム10は、大容量記憶装置14とシステムメモリ16との間にキャッシュ12を含みうる。システム10は、電子システム10上に格納されるコードを含み、該コードにより、第1の情報の第1の要求の第1のメタデータと、電子システム10の前の起動コンテキストに格納されている起動前ストリーム情報との比較に基づいて、キャッシュ12にストリームデータが格納されないようにして、ストリームデータを直接システムメモリ16と大容量記憶装置14との間でやりとりさせる。例えばコードは、大容量記憶装置14、システムメモリ16、または、電子システム10に連結された別のメモリまたは記憶デバイスに格納されてよい。
システム10の幾らかの実施形態では、コードはさらに、第1の要求に関する第1のメタデータと起動前ストリーム情報との比較に基づいて第1の情報がストリームアクセスの一部ではないと判断された場合、電子システム10に第1の情報をキャッシュさせることができる。システム10の幾らかの実施形態では、コードはさらに、第2の情報を要求するための大容量記憶アクセスに関する第2の要求を受信させ、以前に第1の情報がストリームアクセスの一部であると判断されていない場合、第1の要求に関する第1のメタデータと第2の要求に関する第2のメタデータとの比較に基づいて、第2の情報がストリームアクセスの一部であるか否かを判断させ、第2の情報がストリームアクセスの一部であると判断された場合、電子システム10のハード起動を含む電子システムの異なる電力状態において持続しているストリームアクセスに対応するストリーム情報を格納させ、ここで格納されたストリーム情報は後に、後続する起動用の起動前ストリーム情報として利用することができる。
システム10の幾らかの実施形態では、コードはさらに、第1の要求に関する第1のメタデータと起動前ストリーム情報との比較に基づいて第1の情報がストリームアクセスの一部であるか否かをシステム10に判断させ、ストリームアクセスの頻度情報と、頻度閾値とを比較させ、第1の情報がストリームアクセスの一部であると判断され、ストリームアクセスの頻度情報が頻度閾値を超えない場合、大容量記憶アクセスについての第1の要求を大容量記憶装置14に対して直接行わせ、第1の情報がストリームアクセスの一部であると判断され、ストリームアクセスの頻度情報が頻度閾値を超える場合、第1の情報をキャッシュしてよい。例えば、幾らかの実施形態では、コードはさらに、ストリームアクセスの頻度情報を更新させてよい。例えば、幾らかの実施形態では、コードはさらに、ストリームアクセスの長さ情報をストリーム長閾値と比較して、ストリームアクセスの長さ情報がストリーム長閾値を越える場合、ストリームデータをキャッシュに格納させないようにし、ストリームデータをシステムメモリ16と大容量記憶装置14との間で直接やりとりさせる。
図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に連結されてもよい。
プロセッサベースのシステム20上に格納されたコードは、プロセッサベースのシステムに、第1の情報を要求するための大容量記憶アクセスに関する第1の要求を受信させ、プロセッサベースのシステムの、現在の起動コンテキストとは異なる前の起動コンテキスト中に格納された起動前ストリーム情報を取得させる。コードは、プロセッサべースのシステム20に、第1の要求に関する第1のメタデータと起動前ストリーム情報との比較に基づいて第1の情報がストリームアクセスの一部であるか否かを判断させ、第1の要求に関する第1のメタデータと起動前ストリーム情報との比較に基づいて第1の情報がストリームアクセスの一部ではないと判断された場合、第1の情報をキャッシュさせることができる。第1の情報がストリームアクセスの一部であると判断された場合、コードはプロセッサベースのシステム20に、ストリームアクセスの頻度情報と、頻度閾値とを比較させ、第1の情報がストリームアクセスの一部であると判断され、ストリームアクセスの頻度情報が頻度閾値を超えない場合、大容量記憶アクセスについての第1の要求を大容量記憶デバイス23に対して直接行い、第1の情報がストリームアクセスの一部であると判断され、ストリームアクセスの頻度情報が頻度閾値を超える場合、第1の情報をキャッシュしてよい。例えば、コードは大容量記憶デバイス23、システムメモリ22、または、プロセッサベースのシステム20に連結された別のメモリまたは記憶デバイスに格納されてよい。例えば、コードは、ICH26に連結されたBIOS(basic input/output system)27の一部として格納することができる。
例えば、システム20の幾らかの実施形態では、コードはさらに、プロセッサベースのシステム20に、第2の情報を要求するための大容量記憶アクセスに関する第2の要求を受信させてよい。以前に第1の情報がストリームアクセスの一部であると判断されていない場合、コードはさらに、プロセッサベースのシステム20に、第1の要求に関する第1のメタデータと第2の要求に関する第2のメタデータとの比較に基づいて、第2の情報がストリームアクセスの一部であるか否かを判断させてよい。第2の情報がストリームアクセスの一部であると判断された場合、コードは、プロセッサベースのシステム20に、プロセッサベースのシステム20のハード起動を含む異なる電力状態において持続しているストリームアクセスに対応するストリーム情報を格納させ、このストリーム情報は後に、後続する起動用の起動前ストリーム情報として利用することができる。
例えば、プロセッサベースのシステム20の幾らかの実施形態では、コードはさらに、ストリームアクセスの頻度情報を更新することができる。プロセッサベースのシステム20の幾らかの実施形態では、コードはさらに、ストリームアクセスの長さ情報をストリーム長閾値と比較して、ストリームアクセスの長さ情報がストリーム長閾値を越える場合、ストリームデータをキャッシュ24に格納させないようにし、ストリームデータをシステムメモリ22と大容量記憶デバイス23との間で直接やりとりさせる。
図3および図4を参照すると、本発明の幾らかの実施形態では、電子システムでキャッシュを利用することには、大容量記憶デバイスとシステムメモリとの間にキャッシュを設けること(例えばブロック30)、第1の情報を要求するための大容量記憶アクセスに関する第1の要求を受信すること(例えばブロック31)、現在の起動コンテキストとは異なる前の起動コンテキスト中に格納された起動前ストリーム情報を取得すること(例えばブロック32)、第1の要求に関する第1のメタデータと起動前ストリーム情報との比較に基づいて第1の情報がストリームアクセスの一部であるか否かを判断すること(例えばブロック33)、および、第1の要求に関する第1のメタデータと起動前ストリーム情報との比較に基づいて第1の情報がストリームアクセスの一部であると判断された場合、大容量記憶アクセスに関する第1の要求を、大容量記憶デバイスに対して直接行うこと(例えばブロック34)が含まれてよい。
例えば、本発明の幾らかの実施形態はさらに、第1の要求に関する第1のメタデータと起動前ストリーム情報との比較に基づいて第1の情報がストリームアクセスの一部ではないと判断された場合、第1の情報をキャッシュすること(例えばブロック35)を含んでよい。例えば、本発明の幾らかの実施形態はさらに、第2の情報を要求するための大容量記憶アクセスに関する第2の要求を受信すること(ブロック36)、および、以前に第1の情報がストリームアクセスの一部であると判断されていない場合、第1の要求に関する第1のメタデータと第2の要求に関する第2のメタデータとの比較に基づいて、第2の情報がストリームアクセスの一部であるか否かを判断すること(ブロック37)、および、第2の情報がストリームアクセスの一部であると判断された場合、電子システムのハード起動を含む電子システムの異なる電力状態において持続しているストリームアクセスに対応するストリーム情報を格納し、ここで格納されたストリーム情報は後に、後続する起動用の起動前ストリーム情報として利用することができること(ブロック38)を含んでよい。
図5および図6を参照すると、本発明の幾らかの実施形態では、電子システムでキャッシュを利用することは、大容量記憶デバイスとシステムメモリとの間にキャッシュを設けること(例えばブロック50)、第1の情報を要求するための大容量記憶アクセスに関する第1の要求を受信すること(例えばブロック51)、第1の要求に関する第1のメタデータとストリームアクセスに関する他の情報との比較に基づいて第1の情報がストリームアクセスの一部であるか否かを判断すること(例えばブロック52)、第1の要求に関する第1のメタデータとストリームアクセスに関する他の情報との比較に基づいて第1の情報がストリームアクセスの一部であると判断された場合、ストリームアクセスの頻度情報と、頻度閾値とを比較すること(例えばブロック53)、第1の情報がストリームアクセスの一部であると判断され、ストリームアクセスの頻度情報が頻度閾値を超えない場合、大容量記憶アクセスに関する第1の要求を、大容量記憶デバイスに対して直接行うこと(例えばブロック54)、第1の情報がストリームアクセスの一部であると判断され、ストリームアクセスの頻度情報が頻度閾値を超える場合、第1の情報をキャッシュすること(例えばブロック55)を含んでよい。
例えば、ストリームアクセスに関する他のストリーム情報は、起動前ストリーム情報、現在の起動コンテキストにセーブされているストリーム情報、あるいは、第1の情報をストリームアクセスの一部として特定するのに利用されうるストリームアクセスに関する他の情報であってよい。例えば、幾らかの実施形態はさらに、ストリームアクセスの頻度情報を更新すること(例えばブロック56)を含んでよい。例えば、幾らかの実施形態はさらに、ストリームアクセスの長さ情報をストリーム長閾値と比較すること(例えばブロック57)、ストリームアクセスの長さ情報がストリーム長閾値を越える場合、第1の情報をキャッシュさせないようにすること(例えばブロック58)を含んでよい。
図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)を含んでよい。
本発明の幾らかの実施形態はさらに、ストリームアクセスの頻度情報を更新すること(例えばブロック78)を含んでよい。例えば、幾らかの実施形態はさらに、エントリポイントAに続くキャッシュを利用することができる(例えば図3を参照)。例えば、幾らかの実施形態はさらに、エントリポイントBに続くキャッシュを利用することもできる(例えば図5を参照)。
本発明の幾らかの実施形態では、回転媒体とキャッシュとの間のストリームアクセスを処理する技術を向上させるという利点を有する。上述したホワイトペーパにも記載されているように、インテル(登録商標)ターボメモリにより、ハードディスクアクセスを加速することのできるキャッシュ戦略が提供される。しかし、ハードディスクが良好に行うことができるものの、同時にキャッシュに対しては有害になりうるアクセスも存在する。例えば、メディアファイル再生要求は、ハードディスクがHDビデオディスプレイが要求するレートにおいて容易に実現可能である。このようなファイルは大容量且つ稀にしか再利用されないので、キャッシュの基本的な前提(つまり、時間局所性)が適用できない。これらファイルがキャッシュされると、良好な時間局所性を有する位置がキャッシュから退出して、不良な時間局所性を有するものに置き換わってしまう可能性がある。本発明の幾らかの実施形態では、情報をキャッシュする時およびキャッシュすべきか否かについての決定のタイミングおよび品質を向上させることができるという利点を有する。
この決定プロセスは、ファイルシステムのソフトウェアスタックにおけるキャッシュドライバソフトウェアの位置により複雑になりうる。例えば、キャッシュドライバソフトウェアは、ファイル名称情報に直接アクセスしない可能性がある。つまり、キャッシュドライバソフトウェアが、メタデータ(例えば、ハードドライブの開始セクタを特定するのに利用される論理ブロックアドレスであるLBA、読み書き等の大容量記憶デバイスへのコマンドであるCommand、および、コマンドのセクタ数であるLength)のような限られた情報にアクセスする場合がある。
本発明の幾らかの実施形態は、キャッシュドライバウソフトウェアが利用可能なこのような限られた情報をアセンブルおよび利用して、ストリームを特定、管理する技術を向上させることができるという利点を有する。例えば、あるストリームは、同じコマンド、および、全てのセクタ、または殆ど全てのセクタを表す一式のコマンドであってよい。例えば、幾らかの実施形態では、最小サイズがストリームを検知、特定するときに有用なパラメータであってよい。可能性の少ない候補は外されるという理由から、最小サイズパラメータは、キャッシュをより大きく見せる効果を有しうる。
図8および図9を参照すると、図8は最小サイズパラメータを有さないキャッシュ利用のシミュレーション例を示し、図9は4つのメガバイト(MB)の最小サイズパラメータを有するキャッシュ利用のシミュレーション例を示す。図9から分かるように、4MB以上のサイズ分のストリームを消去すると、キャッシュサイズの約40%が利用可能となっている。
幾らかの実施形態では、ストリームに関する情報は、メタデータに格納されてよい。このような情報は、後にアクセスを要求された場合、同じストリームを特定するのに利用することができる。このようなメタデータは、ディスクドライブおよびキャッシュの前述した格納装置などからの後のこの要求に応じて、直接データにアクセスするのに利用することができる。幾らかの実施形態では、前に行われたアクセスに関する情報を潜在的なストリーム情報アレイに記録することにより、ストリームアクセスを検知および特定することができる。このようなアレイは、システムメモリまたはキャッシュ自身等の様々な位置に格納することができる。このアレイの各エレメントは、開始位置(例えば開始ディスクアドレス)、ストリーム(または潜在的なストリーム)の要求数の長さ、カウント、および/または、ストリーム(または潜在的なストリーム)の最後の要求を受信したことを示すタイムスタンプ、等の特定のメタデータを含みうる。例えば、ストリームが全部揃った後で、ストリームの最終的な長さをメタデータに記述してよい。
図10を参照すると、本発明の幾らかの実施形態は、ストリームを特定すること(例えばブロック101)を含んでよい。例えば、この特定には、連続アクセスが含まれるが、単なる連続アクセスには限定されない。例えば、情報が連続に類似している場合にも、アクセスをストリームとして検知することもできる。読み出しアクセスおよび書き込みアクセス両方をストリームとして特定することもできる。ストリームの特定を連続アクセスに限定しないことにより、本発明の幾らかの実施形態では、a)ストリームが連続アクセスされない場合、および、b)例えば分割または圧縮(これらに限定はされない)といった理由から大容量記憶デバイス(例えば回転媒体)上にストリームが連続配置されない場合、という、2つのケースを追加として特定することができるという利点を有する。
本発明の幾らかの実施形態は、さらに、ストリームの残りの全てのアクセスを、キャッシュを介在させずに、大容量記憶デバイス(例えばハードドライブ)に直接方向付けること(例えばブロック102)、ストリームのキャッシュされているコンテンツを「早期退出」候補としてマークすること(例えばブロック103)、ストリームをシステムメモリ(例えばDRAM)へプリフェッチおよびバッファリングすること(例えばブロック104)、および、例えば再利用または経年劣化等の理由により無効になった際に、ストリームを閉鎖すること(例えばブロック105)を含んでよい。
本発明の幾らかの実施形態はさらに、全システム電力状態においてストリーム情報をセーブすること(例えばブロック106)を含んでよい。例えば、現在の起動コンテキストで検知されたストリーム情報は、(例えば、分、時間、または日という特定の時間単位に限らず)長期間保持することができ、後続する起動における起動前ストリーム情報としての利用に備えさせることができる。起動前ストリーム情報を格納しておくことにより、ストリーム自身の第1のエレメントのアクセスについてストリームを検知する助けとなり、これにより、ストリームを(例えば第2のアクセス要求の前に)早期に特定することが可能となり、キャッシュのより有効な活用が可能となる(例えば、第1のアクセスから情報をキャッシュしないこと等により)という利点を有する。例えば、起動前ストリーム情報は、ハードディスク、不揮発性メモリ、あるいは電池駆動型メモリ等の永続記憶デバイスに格納することができる。
例えば、システム電力状態には、低減電力状態および電力停止状態が含まれてよい。プロセッサベースのシステムのなかには、例えば準備完了状態、待ち状態、停止状態、休止状態、およびオフ状態等を含む様々な電力状態を利用するものもある。例えば、ハード起動は、オフ状態からシステムを再開させることに対応していてよい。
本発明の幾らかの実施形態は、ストリームアクセス情報の頻度をセーブすること(例えばブロック107)、および、ストリーム頻度情報を利用して、ストリームアクセスを直接ディスクに対して行うか、ストリームアクセスをキャッシュにセーブするか、を決定すること(例えばブロック108)を含んでもよい。また現状のキャッシュ利用状況には反しているが、本発明の幾らかの実施形態では、比較的大きなストリームが比較的頻繁にアクセスを受ける場合には、該ストリームをキャッシュに格納することができることができるという利点も有しうる。例えば、キャッシュが大容量記憶デバイスと比較して性能が良好である場合、頻繁にアクセスされるストリームをキャッシュすることでユーザ体験を向上させることができる。
本発明の幾らかの実施形態では、キャッシュは以下の疑似コードに従って利用することができる。
入力:
アクセス、システムからの要求
主要な変数:
N、ストリーム検知スロット数
IsAStream、フィルタリング開始前のストリームデータのセクタ数
M、既知のストリームスロット数
// 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
全システム電力状態においてストリーム情報を格納すること、および/または、ストリーム頻度情報をセーブすることにより、情報をキャッシュに格納する時およびキャッシュすべきか否かについての決定のタイミングおよび品質を向上させることができるという利点が生じる。幾らかの実施形態では、キャッシュメモリの利用に関するより良い決定を行うことにより、小さなキャッシュをより有効に活用することができるようになり、これによりシステムサイズおよび/またはコストが低減される。幾らかの実施形態では、キャッシュに対して利点をもたらす可能性の少ないアクセスを排除することで待ち行列トラフィックがなくなり、キャッシュのレスポンスを高めることができ、一方で、大容量記憶デバイスの良好な媒体性能を保持することもできるという利点もある。幾らかの実施形態では、頻繁に利用される特定のサイズのストリームをキャッシュすることで、ユーザ体験を向上させることができる。
当業者であれば、本気際の利点を利用することで、多くの種類の他の回路およびハードウェアおよび/またはソフトウェアの組み合わせを、ここで記載する実施形態および本発明の他の実施形態に応じた様々な方法、回路、およびシステムを実装するよう構成することができるであろう。図1から図10に示す例は、適切な実施形態の、非制限的な例示である。
本発明の前述した、あるいはその他の側面は、個々に、または組み合わせにより実現可能である。本発明は、そうではないことが特定の請求項で必須である場合を除いて、これら側面の2以上を必要するとの解釈に限定されるべきではない。本発明を現在の時点で好適な例示とみなされるものに関して記載してきたが、本発明は、開示されている例示に限定されると解釈されるべきではなく、本発明の精神および範囲に含まれる様々な変形例および均等物である構成を含むことを意図している。
本発明の前述した、あるいはその他の側面は、個々に、または組み合わせにより実現可能である。本発明は、そうではないことが特定の請求項で必須である場合を除いて、これら側面の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に記載のプロセッサベースのシステム。

Claims (20)

  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に記載のプロセッサベースのシステム。
JP2013106926A 2008-06-25 2013-05-21 キャッシュ利用に関する装置および方法 Expired - Fee Related JP5717790B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/215,093 2008-06-25
US12/215,093 US8433854B2 (en) 2008-06-25 2008-06-25 Apparatus and method for cache utilization

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2010547880A Division JP5340315B2 (ja) 2008-06-25 2009-06-09 キャッシュ利用に関する装置および方法

Publications (2)

Publication Number Publication Date
JP2013178818A true JP2013178818A (ja) 2013-09-09
JP5717790B2 JP5717790B2 (ja) 2015-05-13

Family

ID=41445201

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2010547880A Expired - Fee Related JP5340315B2 (ja) 2008-06-25 2009-06-09 キャッシュ利用に関する装置および方法
JP2013106926A Expired - Fee Related JP5717790B2 (ja) 2008-06-25 2013-05-21 キャッシュ利用に関する装置および方法

Family Applications Before (1)

Application Number Title Priority Date Filing Date
JP2010547880A Expired - Fee Related JP5340315B2 (ja) 2008-06-25 2009-06-09 キャッシュ利用に関する装置および方法

Country Status (6)

Country Link
US (1) US8433854B2 (ja)
JP (2) JP5340315B2 (ja)
CN (1) CN101981551B (ja)
DE (1) DE112009000418T5 (ja)
GB (1) GB2473149B (ja)
WO (1) WO2009158183A2 (ja)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8433854B2 (en) 2008-06-25 2013-04-30 Intel Corporation Apparatus and method for cache utilization
US8161304B2 (en) * 2009-01-20 2012-04-17 Microsoft Corporation Power management for large memory subsystems
US8533445B2 (en) * 2009-04-21 2013-09-10 Hewlett-Packard Development Company, L.P. Disabling a feature that prevents access to persistent secondary storage
FI20105743A0 (fi) * 2010-06-29 2010-06-29 Tuxera Inc Muistista lukeminen tai muistiin kirjoittaminen
CN102651861B (zh) * 2011-02-24 2014-08-20 腾讯科技(深圳)有限公司 用于移动终端的下载方法、移动终端和代理下载服务器
JP5117608B1 (ja) * 2011-09-30 2013-01-16 株式会社東芝 情報処理装置、ハイブリッド記憶装置、およびキャッシュ方法
US11003464B2 (en) * 2012-04-19 2021-05-11 Microsoft Technology Licensing, Llc Control flow integrity enforcement at scale
US9244980B1 (en) 2012-05-05 2016-01-26 Paraccel Llc Strategies for pushing out database blocks from cache
CN105917318A (zh) * 2012-07-24 2016-08-31 英特尔公司 用于实现基于ssd的i/o高速缓存的系统和方法
US20140095778A1 (en) * 2012-09-28 2014-04-03 Jaewoong Chung Methods, systems and apparatus to cache code in non-volatile memory
US9009439B2 (en) * 2013-03-12 2015-04-14 Sap Se On-disk operations on fragments to support huge data sizes
CN104424314B (zh) * 2013-09-06 2019-06-11 Sap欧洲公司 对列状表数据库的数据库操作
US11169925B2 (en) 2015-08-25 2021-11-09 Samsung Electronics Co., Ltd. Capturing temporal store streams into CPU caches by dynamically varying store streaming thresholds
CN113448877A (zh) * 2020-03-26 2021-09-28 伊姆西Ip控股有限责任公司 用于数据存储的方法、设备和计算机程序

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04340637A (ja) * 1991-05-17 1992-11-27 Mitsubishi Electric Corp キャッシュ制御方式
JPH06195265A (ja) * 1992-12-25 1994-07-15 Matsushita Electric Ind Co Ltd キャッシュメモリの操作方法
JPH0773107A (ja) * 1993-09-03 1995-03-17 Pfu Ltd ディスク・システムの制御方法
JP2000003309A (ja) * 1998-06-15 2000-01-07 Fujitsu Ltd 記憶装置
JP2005149276A (ja) * 2003-11-18 2005-06-09 Hitachi Ltd 情報処理システム、情報処理装置、情報処理装置の制御方法及びプログラム
US20050251630A1 (en) * 2004-05-04 2005-11-10 Matthews Jeanna N Preventing storage of streaming accesses in a cache

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6748487B1 (en) * 1998-02-04 2004-06-08 Hitachi, Ltd. Disk cache control method, disk array system, and storage system
US6578111B1 (en) * 2000-09-29 2003-06-10 Sun Microsystems, Inc. Cache memory system and method for managing streaming-data
US6826710B2 (en) 2001-01-25 2004-11-30 Dell Products L.P. System and method for providing a fault-resilient boot
US7051161B2 (en) * 2002-09-17 2006-05-23 Nokia Corporation Memory admission control based on object size or request frequency
US7526613B2 (en) * 2003-03-06 2009-04-28 Nxp B.V. Data processing system with prefetching means
US20040255106A1 (en) 2003-06-10 2004-12-16 Rothman Michael A. Recovery of operating system configuration data by firmware of computer system
US20040267708A1 (en) 2003-06-18 2004-12-30 Rothman Michael A Device information collection and error detection in a pre-boot environment of a computer system
US7392340B1 (en) * 2005-03-21 2008-06-24 Western Digital Technologies, Inc. Disk drive employing stream detection engine to enhance cache management policy
US8490065B2 (en) * 2005-10-13 2013-07-16 International Business Machines Corporation Method and apparatus for software-assisted data cache and prefetch control
GB2439577B (en) * 2006-06-30 2011-12-14 Data Equation Ltd Data processing
US8433854B2 (en) 2008-06-25 2013-04-30 Intel Corporation Apparatus and method for cache utilization

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04340637A (ja) * 1991-05-17 1992-11-27 Mitsubishi Electric Corp キャッシュ制御方式
JPH06195265A (ja) * 1992-12-25 1994-07-15 Matsushita Electric Ind Co Ltd キャッシュメモリの操作方法
JPH0773107A (ja) * 1993-09-03 1995-03-17 Pfu Ltd ディスク・システムの制御方法
JP2000003309A (ja) * 1998-06-15 2000-01-07 Fujitsu Ltd 記憶装置
JP2005149276A (ja) * 2003-11-18 2005-06-09 Hitachi Ltd 情報処理システム、情報処理装置、情報処理装置の制御方法及びプログラム
US20050251630A1 (en) * 2004-05-04 2005-11-10 Matthews Jeanna N Preventing storage of streaming accesses in a cache

Also Published As

Publication number Publication date
GB2473149B (en) 2012-10-17
WO2009158183A2 (en) 2009-12-30
CN101981551B (zh) 2014-04-16
JP5717790B2 (ja) 2015-05-13
GB2473149A (en) 2011-03-02
CN101981551A (zh) 2011-02-23
JP5340315B2 (ja) 2013-11-13
DE112009000418T5 (de) 2011-04-21
US8433854B2 (en) 2013-04-30
JP2011514593A (ja) 2011-05-06
WO2009158183A3 (en) 2010-02-25
US20090327607A1 (en) 2009-12-31
GB201015976D0 (en) 2010-11-03

Similar Documents

Publication Publication Date Title
JP5717790B2 (ja) キャッシュ利用に関する装置および方法
US7979631B2 (en) Method of prefetching data in hard disk drive, recording medium including program to execute the method, and apparatus to perform the method
KR102510384B1 (ko) 압축된 데이터 백그라운드를 캐싱하는 장치, 시스템 및 방법
US8151064B2 (en) Hybrid hard disk drive and data storage method thereof
US9569351B2 (en) Storing corresponding data units in a common storage unit
JP2011514593A5 (ja)
US9213646B1 (en) Cache data value tracking
TW201017405A (en) Improved hybrid drive
US8214596B2 (en) Apparatus and method for segmented cache utilization
KR102663304B1 (ko) 구역 네임스페이스 디바이스들에서의 판독 처리
US20130086307A1 (en) Information processing apparatus, hybrid storage apparatus, and cache method
JP2011022926A (ja) データ記憶装置及びキャッシュ制御方法
US10152410B2 (en) Magnetoresistive random-access memory cache write management
WO2012023953A1 (en) Improving the i/o efficiency of persisent caches in a storage system
KR20120098068A (ko) 플래시 메모리 배드 블록 관리 장치 및 방법
JP2003167781A (ja) 磁気ディスク装置およびデータ読み出し制御方法
JP7170093B2 (ja) 記憶デバイスのための改良された先読み能力
JP5025670B2 (ja) 情報処理装置およびデータ記憶装置
US20200409852A1 (en) Enhanced read-ahead capability for storage devices
JP6100750B2 (ja) メモリおよびコントローラを備える装置およびデータ記憶装置を備える装置
US7650489B2 (en) Determining coherency between a non-volatile memory and a system
US20160217074A1 (en) Temporary cache memory eviction
KR101831126B1 (ko) 스토리지 내의 데이터 처리 장치의 제어 방법
JP2009123185A (ja) フラッシュメモリ装置及びそのアクセス方法

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140212

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140512

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20140812

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20141212

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20150130

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20150217

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20150317

R150 Certificate of patent or registration of utility model

Ref document number: 5717790

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees