JP2014534520A - セグメント化されたキャッシュ - Google Patents

セグメント化されたキャッシュ Download PDF

Info

Publication number
JP2014534520A
JP2014534520A JP2014538763A JP2014538763A JP2014534520A JP 2014534520 A JP2014534520 A JP 2014534520A JP 2014538763 A JP2014538763 A JP 2014538763A JP 2014538763 A JP2014538763 A JP 2014538763A JP 2014534520 A JP2014534520 A JP 2014534520A
Authority
JP
Japan
Prior art keywords
software
segment
segments
type
pinning
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.)
Pending
Application number
JP2014538763A
Other languages
English (en)
Inventor
トーマス,フレッド,チャールズ,ザ・サード
ギャスパード,ウォルター,エイ
ソ,チ,ダブリュー
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.)
Hewlett Packard Development Co LP
Original Assignee
Hewlett Packard Development Co LP
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 Hewlett Packard Development Co LP filed Critical Hewlett Packard Development Co LP
Publication of JP2014534520A publication Critical patent/JP2014534520A/ja
Pending legal-status Critical Current

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/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • 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
    • 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/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0842Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking
    • 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/0871Allocation or management of cache space
    • 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/0891Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using clearing, invalidating or resetting means
    • 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/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/126Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/6042Allocation of cache space to multiple users or processors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7205Cleaning, compaction, garbage collection, erase control
    • 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)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

本発明の実施形態は、キャッシュ情報を格納するための第1の不揮発性メモリをセグメント化してピン留めすることに関する。1実施形態では、第1の不揮発性メモリが複数のセグメントに分割される。次に、複数のタイプのソフトウェアのうちの第1のタイプのソフトウェアが複数のセグメントのうちの第1のセグメントにピン留めされる。ピン留めされた第1のセグメントは、第1のタイプのソフトウェアに関連するキャッシュ情報を格納する。【選択図】図1

Description

コンピューティング装置(計算装置)は、フラッシュメモリなどのアクセス時間が比較的速い高速記憶装置を備えている場合がある。頻繁にアクセスされる情報を記憶するためのキャッシュとして高速記憶装置を使用することができる。しかしながら、高速記憶装置は、ハードディスクドライブ(HDD)などのアクセス時間が比較的遅い他のタイプの記憶装置に比べて、記憶単位あたりのコストは高くなりうる。
その結果、高速記憶装置の記憶容量は比較的小さくなりうる。高速記憶装置が一杯になると、コンピューティング装置の性能が影響を受けうる。製造業者は、コンピューティング装置の性能を改善するために、高速記憶装置をより効率的に使用する必要性に迫られている。
複数のセグメントを有する第1の不揮発性メモリを備える装置のブロック図の1例である。 図1の第1の不揮発性メモリのブロック図の例である。 第1の不揮発性メモリをセグメント化してピン留めするための命令を有するコンピューティング装置のブロック図の1例である。 第1の不揮発性メモリをセグメント化してピン留めするための方法のフローチャートの1例である。 第1の不揮発性メモリをセグメント化してピン留めするための方法のフローチャートの別の例である。
以下、添付の図面を参照して詳細に説明する。
実施形態を十分に理解できるようにするために、以下の説明において特定の細部が与えられている。しかしながら、当業者には、それらの特定の細部がなくても実施形態を実施できることが理解されよう。たとえば、いくつかのブロック図では、不要な細部に関して実施形態が不明瞭にならないようにシステムを図示している場合がある。他の例では、実施形態が不明瞭にならないようにするために、周知のプロセス、構成、及び技術については、不要な細部は省いて説明ないし図示されている場合がある。
コンピューティング装置は、ハードディスクドライブ(HDD)などの比較的低速の記憶装置に加えて、フラッシュメモリなどの比較的高速の記憶装置を備えている場合がある。比較的高速の記憶装置の方が比較的低速の記憶装置よりも待ち時間が短いであろう。コンピューティング装置は、キャッシュ情報などのより頻繁にアクセスされる情報を、比較的低速の記憶装置ではなく、比較的高速の記憶装置に格納することによって性能を高めることができる。たとえば、コンピューティング装置は、頻繁にアクセスされるソフトウェアコード及び/またはそのデータを含むキャッシュ情報を格納するためのキャッシュとして比較的高速の記憶装置を使用することができる。コンピューティング装置は、比較的高速の記憶装置にある最新のキャッシュ情報を比較的低速の記憶装置にただちに書き込む(ライトスルー)か、または、ある時間経過後に書き込む(ライトバック)ことができる。たとえば、キャッシュをクリアした後に、比較的高速の記憶装置内の非一時的ファイルを比較的低速の記憶装置にミラーリング(複製)することができる。
しかしながら、比較的高速の記憶装置は、コンピューティング装置によって使用されているキャッシュ情報の全てを格納するのに十分な記憶容量を有していない場合がある。また、キャッシュミスの際などに、キャッシュ情報を比較的高速な記憶装置から取り出すことができない場合には、(該比較的高速な記憶装置には)存在しないキャッシュ情報は比較的低速な記憶装置から取り出されるだろう。したがって、比較的高速の記憶装置の記憶容量は、コンピューティング装置の性能に対するボトルネックとして間接的に作用しうる。さらに、比較的高速の記憶装置は、一般に、比較的低速の記憶装置に比べて、単位記憶容量あたりのコストがかなり高いので、通常は、比較的高速の記憶装置の記憶容量を増やすことができない。
さらに、第1のアプリケーションがユーザーによって連続的に使用されるにつれて、第1のアプリケーションのより多くのキャッシュ情報を比較的高速の記憶装置に格納していくことができ、これによって、第1のアプリケーションの応答性を次第に向上させることができ、及び/または、該アプリケーションの性能を向上させることができる。たとえば、第1のアプリケーションの起動または実行(動作)が次第に速くなりうる。しかしながら、ユーザーが第2のアプリケーションの使用を開始すると、この応答性は失われうる。なぜなら、ユーザーは、第2のアプリケーションのキャッシュ情報が比較的高速の記憶装置に徐々に格納されていくのを待つことになるからである。
さらに、比較的高速の記憶装置の記憶容量が限られているために、第1のアプリケーションのキャッシュ情報が第2のアプリケーションのキャッシュ情報で上書きされる場合がある。したがって、ユーザーが第1のアプリケーションに切り替えて戻った場合には、第1のアプリケーションの(切り替えた後の)最初のうちの応答性は、以前よりも劣る場合がある。このように、比較的高速の記憶装置に現在使用しているアプリケーションのキャッシュ情報が格納されていくのを待つことに起因して、新たに起動したアプリケーションは即座に応答することができず、及び/または、以前使用したアプリケーションに戻ったときに応答性が失われる場合がある。
本発明の実施形態によれば、第1のアプリケーション(などのソフトウェア)に最初にアクセスする場合でも、または、第1のアプリケーション(などのソフトウェア)にアクセスしている間に第2のアプリケーションなどの別のアプリケーションが頻繁に使用される場合でも、第1のアプリケーションなどのソフトウェアが、即座に応答するようにすることができ、または、初期の期間により良好な応答性を有するようにすることができる。たとえば、いくつかの実施形態では、比較的高速な記憶装置をセグメントに分割することができる。それらのセグメントのうちの少なくとも1つのセグメント、たとえば第1のセグメントを、第1のアプリケーションなどのあるタイプのソフトウェアにピン留めする(すなわち、固定的に割り当てる。尚、「ピン留めする」の具体的意味は後述)ことによって、当該タイプのソフトウェアのキャッシュ情報だけを格納するようにすることができる。さらに、当該タイプのソフトウェアのキャッシュ情報を、当該タイプのソフトウェアにアクセスする前であっても、当該タイプのソフトウェアにピン留めされたセグメントに格納することができる。
たとえば、第1のアプリケーションを第1のセグメントにピン留めすることができる。したがって、第1のアプリケーションにアクセスする前であっても、第1のアプリケーションのキャッシュ情報のうちの少なくともいくつか(たとえば、第1のアプリケーションを起動するためのソフトウェアコード)を第1のセグメントに格納することができる。それゆえ、ユーザーが第1のアプリケーションに最初にアクセスしたときでも、第1のアプリケーションをより速く起動させることなどによって、第1のアプリケーションの応答性をより良好にすることができる。ユーザーが、第2のアプリケーションを頻繁に使用した後、再び第1のアプリケーションに切り替えて戻る場合がある。それにもかかわらず、第1のアプリケーションの応答性は維持されるであろう。なぜなら、第1のアプリケーションのキャッシュ情報は第1のセグメントに保持されているであろうからである。
図1は、複数のセグメント142−1〜142−nを含む第1の不揮発性メモリ140を有する装置100のブロック図の1例である。装置100の例には、ノート型コンピュータ(またはノートパソコン)、デスクトップコンピュータ、オールインワンシステム、スレートコンピューティング装置、携帯型読取装置、無線電子メール装置、及び携帯電話などを含めることができる。図1の実施形態では、装置100は、プロセッサ110、セグメント化モジュール120、ピン留めモジュール130(ピン留めモジュールは固定化モジュールともいう)、及び、第1の不揮発性メモリ140を備えている。第1の不揮発性メモリ140はさらに、複数のセグメント142−1〜142−n(nは1より大きな自然数)を備えている。
プロセッサ110を、第1の不揮発性メモリ140から命令を取り出して実行するのに適したCPU、GPU、またはマイクロプロセッサ、及び/または、後述のモジュール120、130のうちの任意のモジュールの機能を実行するように構成された電子回路とすることができる。第1の不揮発性メモリ140を、電力が供給されていないときでも格納されている情報を保持する任意の電子記憶装置、磁気記憶装置、光学記憶装置、もしくはその他の物理的記憶装置などの1以上の不揮発性機械可読記憶媒体とすることができる。第1の不揮発性メモリ140の例には、ソリッドステートドライブ(SSD)やフラッシュメモリを含めることができる。
モジュール120、130の各々は、たとえば、後述の機能を実施するための電子回路を有するハードウェア装置を備えることができる。これに加えて、または、これに代えて、それぞれのモジュールを、第1の不揮発性メモリ140などの機械可読記憶媒体における符号化された一連の命令であって、プロセッサ110によって実行可能な一連の命令として実施することができる。いくつかの実施形態では、モジュール120、130のうちの一部分をハードウェア装置として実施し、他の部分を実行可能命令として実施することができる。たとえば、モジュール120、130を、装置100上で動作するオペレーティングシステム(OS)(不図示)によって実行されるアプリケーションの一部として実施することができる。
第1の不揮発性メモリ140を、キャッシュ情報を格納するためのキャッシュとして使用することができる。第1の不揮発性メモリ140は、装置100の第2の不揮発性メモリ(不図示)よりも待ち時間が短いものとすることができる。第2の不揮発性メモリは、第1のタイプ及び/または第2のタイプのソフトウェアなどの複数のタイプのソフトウェアを格納することができる。第2の不揮発性メモリを、電力が供給されていないときでも格納されている情報を保持する任意の電子記憶装置、磁気記憶装置、光学記憶装置、もしくはその他の物理的記憶装置などの1以上の不揮発性機械可読記憶媒体とすることができる。第2の不揮発性メモリの例には、ハードディスクドライブ(HDD)や記憶ドライブ(磁気ディスク装置など)を含めることができる。
キャッシュ情報は、ソフトウェア命令及び/または該命令に関連するデータ(たとえば、ユーザーもしくはソフトウェアによって生成されもしくは変更されるメタデータ及び/もしくはデータ)などの、再使用されるか頻繁に使用される可能性が高い情報を含むことができる。キャッシュデータにより高速にアクセスするために、たとえば、OSやアプリケーションやウェブブラウザなどの複数のタイプのソフトウェアのキャッシュ情報、または、プロセッサ110や別のメモリなどのハードウェアのキャッシュ情報を第1の不揮発性メモリ140に格納することができる。
セグメント化モジュール120は、第1の不揮発性メモリ140を複数のセグメント142−1〜142−nに分割するためのものである。セグメント142−1〜142−nのセグメントの数、及び、セグメント142−1〜142−nの各々のセグメントのサイズ(大きさ)を変更可能とすることができる。ピン留めモジュール130は、複数のタイプのソフトウェアのうちの1以上のタイプのソフトウェアを複数のセグメント142−1〜142−nのうちの1以上のセグメントにピン留めすることができる。たとえば、ピン留めモジュール130は、複数のタイプのソフトウェアのうちの第1のタイプのソフトウェアを、複数のセグメント142−1〜142−nのうちの第1のセグメント142−1にピン留めすることができる。
ピン留めモジュール130はさらに、たとえば、複数のタイプのソフトウェアのうちの第2のタイプのソフトウェアを、複数のセグメント142−1〜142−nのうちの第2のセグメント142−2にピン留めすることができる。この場合、ピン留めされた第2のセグメント142−2は、該第2のタイプのソフトウェアに関連するキャッシュ情報を格納する。第2のセグメント142−2を、複数のセグメント142−1〜142−nのうちのまだピン留めされていない任意のセグメントとすることができる。いくつかの実施形態は、最大で、複数のセグメント142−1〜142−nの全てがピン留めされる場合を含むことができる。しかしながら、一般に、複数のセグメント142−1〜142−nのうちの1つ、たとえば第3のセグメント142−3を、汎用キャッシュ(汎用的に使用される一般的なキャッシュ)として動作するようにピン留めされないままとすることができる。第1の不揮発性メモリ140の1例については、図2に関してより詳細に後述する。
セグメント142−1〜142−nのうちの1つをピン留めするとは、該ピン留めされたセグメントのメモリ空間を特定の用途専用に確保すること、すなわち、該メモリ空間を特定の用途専用のものとして割り当てることを意味する。そのため、第1のタイプのソフトウェアが第1のセグメント142−1にピン留めされた場合には、ピン留めされた第1のセグメント142−1は、該第1のタイプのソフトウェアに関連するキャッシュ情報を格納することができる。さらに、ピン留めされた第1のセグメント142−1は、該第1のタイプのソフトウェアに関連しないどのキャッシュ情報(たとえば、第2のタイプのソフトウェアのキャッシュ情報)も格納することはできない。これらタイプのソフトウェアの例には、OS、または、ブートプロセスや休止プロセス(ハイバネーションプロセスともいう。以下同じ)やシャットダウンプロセスやスリーププロセスなどのプロセス、または、ウェブブラウザ、または、グラフィックス(画像ないし図形)編集プログラムやCADプログラムエディタなどの生産性向上ツール、または、ソフトウェアフレームワーク、または、ユーザーアプリケーション、または、ベンダーアプリケーションなどの少なくとも一部を含めることができる。
これらのタイプのソフトウェアのうちの1つ、たとえば第1のタイプのソフトウェアが、セグメント142−1〜142−nのうちの1つ、たとえば第1のセグメント142−1にピン留めされたときは、ピン留めモジュール130は、第1のセグメント142−1に対して最も頻繁に使用される、第1のタイプのソフトウェアに関連するファイルもしくは論理ブロックアドレス(LBA)などのコード及び/もしくはデータを格納することができる。たとえば、該コードは、ソースコード及び/またはランタイムコード(runtime code)を含むことができ、該データは、メタデータ及び/またはユーザーデータを含むことができる。さらに、該コードのうちの少なくともいくつか、たとえば第1のタイプのソフトウェアを起動させるためのコードを、該第1のタイプのソフトウェアが最初に起動される前であっても、第1のセグメント142−1に格納することができ、これによって、該第1のタイプのソフトウェアをより速く起動させることができる。その場合は、第1のタイプのソフトウェアの呼び出し(または第1のタイプのソフトウェアに対する要求)を、第2の不揮発性メモリから第1の不揮発性メモリ140に向けて送ることができる。
さらに、第1のタイプのソフトウェアが、起動され及び/または変更されたとき、並びに、第1のセグメント142−1がアクセスされたときに、第1のセグメント142−1を、第1のタイプのソフトウェアのコードで更新することができる。この代わりに、または、これに加えて、第1のセグメント142−1を、第1のタイプのソフトウェアの使用率に基づいて更新することができる。あるタイプのソフトウェアの使用率とは、所定の時間の間に該あるタイプのソフトウェアがアクセスされる回数及び/または変更される回数を意味する。たとえば、第1のタイプのソフトウェアの使用率が使用率のある閾値(使用率閾値)より大きい場合には、ピン留めモジュール130は、第1のセグメント142−1を更新することができる。ピン留めモジュール130は、第1のセグメント142−1の旧バージョンを置き換えるために、第2の不揮発性メモリに格納されている第1のタイプのソフトウェアのファイルまたはLBAの最新バージョンを第1のセグメント142−1に転送する(またはプッシュする)ことによって、第1のセグメント142−1を更新することができる。
図1は、セグメント142−1〜142−nのうちの1つに1つのタイプのソフトウェアだけがピン留めされる場合を説明するものであるが、いくつかの実施形態は、セグメント142−1〜142−nのうちの1つに2以上のタイプのソフトウェアがピン留めされる態様を含むことができる。セグメント142−1〜142−nのサイズ及び数、並びに、セグメント142−1〜142−nのうちの任意のセグメントにピン留めされるソフトウェアのタイプを、たとえば、ベンダー及び/またはユーザー及び/またはモジュール120及び130によって決定することができる。さらに、いくつかの実施形態では、セグメント142−1〜142−nのサイズ、数、及びピン留めのうちの任意のものを、静的なものとすることができ、または、動的に変更することができる。「静的」という用語は、固定されている状態、すなわち、変更できない状態を意味する。たとえば、ユーザーは、静的なセグメントのサイズまたは該セグメントにピン留めされたソフトウェアのタイプを変更することはできない。ピン留めモジュール130は、どのタイプのソフトウェアをセグメント142−1〜142−nのうちのどのセグメントにピン留めするかを、それらのタイプのソフトウェアの使用率に基づいて決定することができる。
1例では、ベンダー(装置100のメーカーないし販売業者など)は、装置100が速くブートするのを確保しようとする場合がある。そのため、ベンダーは、装置100のブート時間を短くするために、第1のセグメント142−1を生成して、ブートプロセスなどのOSプロセスを第1のセグメント142−1に静的に(すなわち不変的に)ピン留めすることができる。第1の不揮発性メモリ140は電力が供給されなくても情報を保持することができるので、ブートプロセスに関連するキャッシュ情報は、装置100の電源が切られている場合でも失われないだろう。
別の例では、ユーザーは、グラフィカルユーザーインターフェース(GUI)を介して、セグメント142−1〜142−nのサイズを変更し、及び/または、セグメント142−1〜142−n(中のセグメント)を削除もしくは追加し、及び/または、セグメント142−1〜142−nにピン留めするソフトウェアのタイプを変更することができる。GUIは、装置100のOS上で動作することができ、アプリケーションプログラミングインターフェース(API)を介して第1の不揮発性メモリ140と相互作用することができる。
さらに他の例では、セグメント化モジュール120及び/またはピン留めモジュール130は、適合アルゴリズムを用いて、セグメント142−1〜142−nのサイズ及び/または数及び/またはピン留めを動的に変更することができる。たとえば、セグメント化モジュール120は、セグメント142−1〜142−nのうち通常は完全には一杯ではない(すなわち、通常は記憶容量の全てが使用されているわけではない)セグメントのサイズを自動的に小さくすることができ、または、セグメント142−1〜142−nのうち通常は完全に一杯である(すなわち、通常は記憶容量の全てが使用されている)別のセグメントのサイズを自動的に大きくすることができる。あるタイプのソフトウェアの応答性は、該ソフトウェアにピン留めされているセグメントのサイズの関数でありうる。セグメント化モジュール120はまた、セグメント142−1〜142−nのうち、該タイプのソフトウェアにピン留めされているアクセス頻度が低いセグメントを削除し、これによって、セグメント142−1〜142−nのうちアクセス頻度が高い別のセグメントのサイズを大きくすることができる。
装置100は、1つのタイプのソフトウェアに対して複数の実体を備えることもできる。たとえば、装置100は、インターネットエクスプローラー(Internet Explorer)やファイアフォックス(Firefox)などの2つのウェブブラウザを備えることができる。この場合、ウェブブラウザタイプのソフトウェアの全ての実体のキャッシュ情報を、該ウェブブラウザタイプのソフトウェアにピン留めされたセグメント、たとえば第3のセグメント142−3に送ることができる。代替的には、ユーザー及び/またはベンダー及び/またはピン留めモジュール130は、あるタイプのソフトウェアのどの実体をピン留めするかを決定することができる。たとえば、ユーザーは、インターネットエクスプローラーよりもファイアフォックスをより多く使用するために、該ユーザーは、ファイアフォックスを第3のセグメント142−3にピン留めすることができるが、インターネットエクスプローラーを第3のセグメント142−3にピン留めしないようにすることができる。ピン留めモジュール130は、使用率に基づいて、単一のタイプのソフトウェアのどの実体をピン留めするかを決定することができる。たとえば、ピン留めモジュール130は、最も高い使用率を有する実体をピン留めすることができる。
1実施形態では、たとえば、第1の不揮発性メモリ140及び第2の不揮発性メモリがハイブリッドドライブ(hybrid drive)の一部である場合に、装置100は、第1の不揮発性メモリ140及び第2の不揮発性メモリを制御するためのメモリコントローラ(不図示)を備えることができる。この場合、セグメント化モジュール120とピン留めモジュール130は、OSを介してメモリコントローラと通信して、複数のセグメント142−1〜142−nのうちの少なくとも1つのセグメントを生成してピン留めすることができる。たとえば、セグメント化モジュール120とピン留めモジュール130は、SATAインターフェース、PATAインターフェース、タグ付けされた短いコマンドファイル(tagged short command file)、または、他のハイブリッド駆動通信メカニズム(hybrid drive communication mechanism)を介して、メモリコントローラと通信することができる。
上記したように、RAMとは異なり、装置100が電源オフ状態にある場合(すなわち、装置100に電力が供給されていない場合)でも、キャッシュ情報は第1の不揮発性メモリ140に保持される。しかしながら、ユーザー及び/またはベンダーは、全てのキャッシュ情報が保持されるのを望まないかもしれない。たとえば、ユーザー及び/またはベンダーは、個人情報や専有情報(企業秘密など)のような秘密のキャッシュ情報、及び/または、装置100の構成要素の一時的なコンテキスト情報のような不要なキャッシュ情報を消去することを望む場合がある。それでも、ユーザー及び/またはベンダーは、装置100をより速くブートするためのブートプロセスのキャッシュ情報やユーザーアプリケーションをより速く起動及び/または実行させるためのユーザーアプリケーションのキャッシュ情報などの他のキャッシュ情報は依然として保持しようとする場合がある。
装置100は、消去モジュール(不図示)を備えることができる。該消去モジュールは、少なくとも1つのOSが低電力状態(たとえば低消費電力状態)に移行することになり、かつ、ユーザーが、複数のセグメント142−1〜142−nのうちの消去すべき1以上のセグメントを選択した場合に、該1以上のセグメントを個別に消去する(消去するとは、記憶されている内容を消去することを意味する。この場合は、セグメントに記憶されている内容が個別に消去される)。低電力状態の例には、装置100の電源オフ状態、休止状態、またはスリープ状態を含めることができる。たとえば、ユーザー及び/またはベンダーは、低電力状態に移行する前に、セグメント142−1〜142−nのうちの1以上のセグメントを自動的に消去するように装置100を設定することができる。さらに、ユーザーは、装置100の動作中に、GUIなどを介して、セグメント142−1〜142−nのうちの1以上のセグメントを消去することができる。該1以上のセグメントが首尾よく消去されると、そのことをユーザーに知らせることができる。消去モジュールについては、図5に関してより詳細に後述する。
第1のセグメント142−1及び/または第2のセグメント142−2に関して説明した任意の動作または特性は、複数のセグメント142−1〜142−nのうちの他の任意のセグメントにも妥当しうる。このため、いくつかの実施形態は、たとえば、複数のタイプのソフトウェアのキャッシュ情報に対するアクセス時間を短くすることにより、起動時間または実行時間を短くすることによって、それらのタイプのソフトウェアの応答性を向上させることができる。さらに、複数のセグメント142−1〜142−nは、あるタイプのソフトウェアの最初の起動時に、この向上した応答性が生じるようにすることができ、及び/または、異なるタイプのソフトウェアとの間で切り替えられたときでも、該応答性が維持されるようにすることができる。さらに、ベンダーは、すぐ使える状態になる(OBE:out of box)ように装置100の性能を向上させることができる。
図2は、図1の第1の不揮発性メモリ140のブロック図の1例である。この実施形態では、第1の不揮発性メモリ140は、たとえば、nが6の場合である、6つのセグメント142−1〜142−6を備えている。第1のセグメント142−1は、OSプロセスなどの第1のタイプのソフトウェアに関連するキャッシュ情報を格納するものとして図示されている。OSプロセスの例には、ブートプロセス、休止プロセス、シャットダウンプロセス、またはスリーププロセスを含めることができる。第2のセグメント142−2は、ベンダーアプリケーションなどの第2のタイプのソフトウェアに関連するキャッシュ情報を格納するものとして図示されている。ベンダーアプリケーションの例には、プロプライエタリソフトウェアや、装置100のハードウェア構成要素に固有のソフトウェアなどの、装置100に予めインストールされているソフトウェアを含めることができる。
第3のセグメント142−3は、ウェブブラウザなどの第3のタイプのソフトウェアに関連するキャッシュ情報を格納するものとして図示されている。ウェブブラウザの例には、インターネットエクスプローラー、ファイアフォックス、グーグルクローム(Google Chrome)、サファリ(Safari)、オペラ(Opera)などのソフトウェアを含めることができる。第4のセグメント142−4は、第1のユーザーアプリケーションなどの第4のタイプのソフトウェアに関連するキャッシュ情報を格納するものとして図示されており、第5のセグメント142−5は、第2のユーザーアプリケーションなどの第5のタイプのソフトウェアに関連するキャッシュ情報を格納するものとして図示されている。第1及び第2のユーザーアプリケーションの例には、グラフィックスプログラムム、ビデオゲーム、マルチメディアソフトウェアなどのユーザーがインストールした任意のタイプのアプリケーション及び/または任意のタイプの非ベンダーアプリケーションを含めることができる。
第6のセグメント142−6は、任意のキャッシュ情報を格納することができる汎用キャッシュとして図示されている。汎用キャッシュは、最長時間未使用法(LRU:Reast Recently Used)や最短時間未使用(MRU:MostRecently Used)などのキャッシュアルゴリズムにしたがって動作することができる。したがって、この例では、第1〜第5のセグメント141−1〜142−5はピン留めされるが、第6のセグメント142−6はピン留めされないままである。たとえば、第1〜第5のセグメント142−1〜142−5にはピン留めされていない任意のキャッシュ情報を、第6のセグメント142−6に格納することができる。さらに、第1〜第5のセグメント142−1〜142−5のうちの任意のセグメントが一杯になった場合には、該一杯になったセグメントへの追加のキャッシュ情報または該一杯になったセグメントに入りきらないキャッシュ情報を(該キャッシュ情報が第6のセグメント142−6にピン留めされていないにもかかわらず)、第6のセグメント142−6に格納することもできる。たとえば、第1のセグメント142−1または第2のセグメント142−2が一杯になった場合には、OSプロセスなどの第1のタイプのソフトウェアに関連するキャッシュ情報や、ベンダーアプリケーション情報などの第2のタイプのソフトウェアに関連するキャッシュ情報を第6のセグメント142−6に格納することができる。セグメント142−1〜142−5のうちのセグメントにピン留めされたキャッシュ情報は、そのピン留めされているセグメントが一杯になるまでは、汎用キャッシュすなわち第6のセグメント142−6には格納されず、したがって、第1の不揮発性メモリ140の記憶容量の一部が浪費されるかまたは使用されない可能性が低くなる。
図2の第1の不揮発性メモリ140は、6つのセグメント142−1〜142−6を有するものとして図示されているが、第1の不揮発性メモリ140のいくつかの実施形態は、7以上または5以下の数のセグメントを有することができる。さらに、第1の不揮発性メモリ140のセグメントのサイズ及び/または数は、第1の不揮発性メモリ140の記憶容量に依存しうる。たとえば、第1の不揮発性メモリ140の記憶容量が大きい場合は、該記憶容量が小さい場合よりも、セグメントのサイズ及び/または数は大きくなりうる。
図3は、第1の不揮発性メモリ140をセグメント化してピン留めするための命令を含むコンピューティング装置300のブロック図の1例である。図3の実施形態では、コンピューティング装置300は、プロセッサ310、(上記の)第1の不揮発性メモリ140、及び、機械可読記憶媒体320を備えている。機械可読記憶媒体320はさらに、第1の不揮発性メモリ140をセグメント化し及びピン留めするための命令322及び324を含んでいる。
コンピューティング装置300を、たとえば、チップセット、ノート型コンピュータ、スレートコンピューティング装置、携帯型読取装置、無線電子メール装置、携帯電話、または、命令322及び324を実行することができる他の任意の装置とすることができる。いくつかの例では、コンピューティング装置300は、メモリ(記憶装置)、センサー、ディスプレイ(表示装置)などの追加の構成要素(コンポーネント)を含むことができ、または、コンピューティング装置300を該追加の構成要素に接続することができる。たとえば、コンピューティング装置300は、図1に関して説明した第2の不揮発性メモリに類似の第2の不揮発性メモリ(不図示)を備えることができる。代替的には、該第2の不揮発性メモリを、機械可読記憶媒体320の一部とすることができる。
プロセッサ310を、少なくとも1つの中央処理装置(CPU)、少なくとも1つの半導体ベースのマイクロプロセッサ、少なくとも1つのグラフィックプロセッシングユニット(GPU)、機械可読記憶媒体320に格納されている命令の取り出し及び実行に適した他のハードウェア装置、または、それらの組み合わせとすることができる。プロセッサ310は、第1の不揮発性メモリ140のセグメント化及びピン留めを実施するために命令322及び324をフェッチし、デコード(復号)し、及び実行することができる。命令を取り出して実行する代わりに、または、命令を取り出して実行することに加えて、プロセッサ310は、少なくとも1つの集積回路(IC)、または、その他の制御論理回路(制御ロジック)、または、その他の電子回路、または、それらの組み合わせ(これらは、命令322及び324の機能を実行するための複数の電子部品を含む)を備えることができる。
機械可読記憶媒体320を、実行可能命令を含んでいるかまたは格納する任意の電子記憶装置、磁気記憶装置、光学記憶装置、または、その他の物理的記憶装置とすることができる。したがって、機械可読記憶媒体320を、たとえば、ランダムアクセスメモリ(RAM)、電気的消去可能プログラマブルROM(EEPROM)、記憶ドライブ(磁気ディスク装置など)、CD-ROM(Compact Disk Read Only Memory)などとすることができる。したがって、機械可読記憶媒体320を非一時的なもの(すなわち持続的に記憶可能なもの)とすることができる。後述するように、機械可読記憶媒体320を、第1の不揮発性メモリ140をセグメント化し及びピン留めするための一連の実行可能命令で符号化することができる。
さらに、命令322及び324がプロセッサによって(たとえば、該プロセッサの1つの処理要素もしくは複数の処理要素によって)実行されると、それらの命令は、図4または図5に示されているプロセスなどのプロセスを、該プロセッサに実行させることができる。たとえば、セグメント化命令322を、プロセッサ310によって実行して、第1の不揮発性メモリ140を複数のセグメントにセグメント化(分割)することができる。ピン留め命令324をプロセッサ310によって実行して、複数のタイプのソフトウェアのうちの第1のタイプのソフトウェアを、複数のセグメント142−1〜142−nのうちの第1のセグメント142−1にピン留めすることができる。ピン留めされた第1のセグメントは、第1のタイプのソフトウェアに関連するキャッシュ情報を格納する。また、ピン留め命令324をプロセッサ310によって実行して、複数のタイプのソフトウェアのうちの第2のタイプのソフトウェアを、複数のセグメント142−1〜142−nのうちの第2のセグメント142−2にピン留めすることもできる。ピン留めされた第2のセグメント142−2は、第2のタイプのソフトウェアに関連するキャッシュ情報を格納する。
機械可読記憶媒体320はまた、第1のセグメントが一杯の場合には、第1のタイプのソフトウェアに関連する情報を、複数のセグメント142−1〜142−nのうちの第3のセグメント142−3に格納し、及び、第2のセグメントが一杯の場合には、第2のタイプのソフトウェアに関連する情報を第3のセグメント142−3に格納するための命令(不図示)を含むこともできる。装置300の動作を図4及び図5に関してより詳細に説明する。
図4は、第1の不揮発性メモリ140をセグメント化してピン留めするための方法400のフローチャートの1例である。以下では、方法400の実行を装置100を参照して説明するが、装置300などの、方法400を実行するための他の適切なコンポーネント(構成要素や装置)を使用することもできる。さらに、方法400を実行するためのそれらのコンポーネントを複数の装置(たとえば、入力装置及び出力装置と通信する処理装置)間に分散させることができる。いくつかの状況では、連係して動作する複数の装置を、方法400を実行する単一の装置とみなすことができる。方法400を、記憶媒体320などの機械可読記憶媒体に格納されている実行可能命令の形態で、及び/または、電子回路の形態で、実装ないし実施することができる。
ブロック410において、装置100は、キャッシュ情報を格納するための第1の不揮発性メモリ140を複数のセグメント142−1〜142−nに分割する(または、キャッシュ情報を複数のセグメント142−1〜142−nに格納するために、第1の不揮発性メモリ140を分割する)。ブロック410において、装置100は、初めに、ベンダー仕様(メーカー仕様など)、ユーザーコマンド、及び第1の不揮発性メモリ140のサイズのうちの少なくとも1つに基づいて、複数のセグメント142−1〜142−nのセグメントの数及びサイズを設定することができる。ブロック410において、ユーザーコマンドと複数のタイプのソフトウェアの使用形態(または使用パターン)との少なくとも一方に基づいて、複数のセグメント142−1〜142−nのセグメントの数とサイズの少なくとも一方を動的に変更することができる。
次に、ブロック420において、装置100は、複数のタイプのソフトウェアのうちの第1のタイプのソフトウェアを、複数のセグメント142−1〜142−nのうちの第1のセグメント142−1にピン留めする。ピン留めされた第1のセグメント142−1は、第1のタイプのソフトウェアに関連するキャッシュ情報を格納する。ブロック420において、上記のように、装置100は、該複数のタイプのソフトウェアの使用形態とユーザーコマンドとの少なくとも一方に基づいて、該複数のタイプのソフトウェアのうちの1以上のタイプのソフトウェアを複数のセグメント142−1〜142−nのうちの1つに動的にピン留めすることができる。
たとえば、装置100は、第2のタイプのソフトウェアを、複数のセグメント142−1〜142−nのうちの第2のセグメント142−2にピン留めすることができる。ブロック420において、装置100は、複数のセグメント142−1〜142−nの全てをピン留めしなくてもよく、たとえば、複数のセグメント142−1〜142−nのうちの第3のセグメント142−3をピン留めしないようにすることができる。さらに、ブロック420において、第1のセグメント142−1が一杯の場合には、装置100は、第1のタイプのソフトウェアに関連するキャッシュ情報を第3のセグメント142−3に格納することができ、第2のセグメント142−2が一杯の場合には、第2のタイプのソフトウェアに関連するキャッシュ情報を第3のセグメント142−3に格納することができる。
ブロック420において、装置100はまた、第1のタイプのソフトウェアに分類される第1及び第2のアプリケーションの使用率を決定することができ、及び、決定された使用率に基づいて、第1及び第2のアプリケーションの一方をピン留めされている第1のセグメント142−1に動的にピン留めすることができる。ブロック420において、第1のタイプのソフトウェアの変更と、第1のタイプのソフトウェアの起動のうちの少なくとも一方が実施された場合には、装置100はピン留めされている第1のセグメント142−1を更新する。装置100は、ピン留めされている第1のセグメント142−1から第1のタイプのソフトウェアを起動することと、第1のタイプのソフトウェアに対する呼び出しをピン留めされている第1のセグメント142−1に向けることとの少なくとも一方を実施する。
図5は、第1の不揮発性メモリ140をセグメント化してピン留めするためのもう1つの方法500のフローチャートの1例である。以下では、方法500の実行を装置100を参照して説明するが、装置300などの、方法500を実行するための他の適切なコンポーネント(構成要素や装置)を使用することもできる。さらに、方法500を実行するためのそれらのコンポーネントを複数の装置(たとえば、入力装置及び出力装置と通信する処理装置)間に分散させることができる。いくつかの状況では、連係して動作する複数の装置を、方法500を実行する単一の装置とみなすことができる。方法500を、記憶媒体320などの機械可読記憶媒体に格納されている実行可能命令の形態で、及び/または、電子回路の形態で、実装ないし実施することができる。
図5のブロック510を図4のブロック410に類似のものとすることができ、図5のブロック520を図4のブロック420に類似のものとすることができる。たとえば、ブロック510において、装置100は、キャッシュ情報を格納するための第1の不揮発性メモリ140を複数のセグメント142−1〜142−nに分割する(または、キャッシュ情報を複数のセグメント142−1〜142−nに格納するために、第1の不揮発性メモリ140を分割する)。次に、ブロック520において、装置100は、複数のタイプのソフトウェアのうちの第1のタイプのソフトウェアを、複数のセグメント142−1〜142−nのうちの第1のセグメント142−1にピン留めする。ピン留めされた第1のセグメント142−1は、第1のタイプのソフトウェアに関連するキャッシュ情報を格納する。ブロック530において、少なくとも1つの装置100が低電力状態(たとえば低消費電力状態)に移行し、及び、ユーザーが複数のセグメント142−1〜142−nのうちの消去すべき1以上のセグメントを選択した場合には、装置100は、該1以上のセグメントを個別に消去する。たとえば、装置100の消去モジュールは、ユーザーからコマンド(命令)を受け取って、複数のセグメント142−1〜142−nのうちの第1のセグメント142−1をすぐに消去することができ、及び/または、装置100のOSからコマンド(命令)を受け取って、装置100が低電力状態に移行する前に、第1のセグメント142−1を消去することができる。
しかしながら、第1の不揮発性メモリ140がフラッシュメモリまたはSSDメモリを含んでいる場合には、複数のセグメント142−1〜142−nのアドレス指定構造には対応しないブロック単位でしか第1の不揮発性メモリ140を消去できない。たとえば、複数のブロックのうちの1つのブロックを消去すると、複数のセグメント142−1〜142−nのうちの、第1のセグメント142−1の一部だけ及び/または第2のセグメント142−2の一部だけが消去される場合がある。第1のセグメント142−1だけが確実に消去されるようにするために、消去モジュールは、第1の不揮発性メモリ140のフラッシュコントローラ(不図示)と通信することができる。
フラッシュコントローラは、データを格納し、取り出し、及び更新するための手順を提供し、並びに、第1の不揮発性メモリ140上の利用可能な空間を管理するために使用されるフラッシュファイルシステムを維持することができる。たとえば、ブロックに書き込む前に該ブロックを明確に消去する必要があるので、フラッシュコントローラは、時間を節約するために、装置100が動作を停止している間に、使用されていないブロックを消去することができる。さらに、フラッシュコントローラは、(複数のブロックのうちのブロックに繰り返し上書きすることによって該ブロックの寿命が短くなったときに行われる)ウェアレベリング(wear leveling)を低減しまたは阻止するために、書き込みを第1の不揮発性メモリ140全体に均等に分散させることができる。
消去モジュールは、フラッシュコントローラと通信して、複数のセグメント142−1〜142−nのマッピングと第1の不揮発性メモリ140の複数のブロックとの間の相互関係を決定することができる。また、消去モジュールは、フラッシュコントローラと通信して、複数のセグメント142−1〜142−nのうちの消去されないセグメントのキャッシュ情報を保持することができる。たとえば、第1のセグメント142−1と第2のセグメント142−2が同じブロックの一部を共有している場合などのように、第1のセグメント142−1を消去すると、第2のセグメント142−2の少なくとも一部も消去されてしまう場合には、消去モジュールはフラッシュコントローラと通信して、先に、消去されるブロック内の第2のセグメント142−2のキャッシュ情報を、別のメモリブロックなどの別の場所に保存することができる。代替的には、消去されるブロック内の第3のセグメント142−3のキャッシュ情報を、記憶媒体320や第2の不揮発性メモリなどの別のメモリに保存することができる。次に、消去モジュールは、フラッシュコントローラと通信して、第1のセグメント142−1のキャッシュ情報を格納している1以上のブロックを消去することによって第1のセグメント142−1を消去することができる。その後、消去モジュールは、第3のセグメント142−3のキャッシュ情報がどこに格納されたかに依存して、第3のセグメント142−3のキャッシュ情報をライトバックするようにフラッシュコントローラに命じることができる。
さらに、ブロック530において、消去モジュールは、OSと通信して、セグメント142−1〜142−nのうちの1以上のセグメントの消去が完了するまで、装置100が低電力状態(たとえば低消費電力状態)に移行するのを遅らせることができる。しかしながら、装置100が低電力状態に移行する前に該1以上のセグメントの消去が完了しない場合には、消去モジュールは、装置100が電源オン状態(パワーオン状態ともいう)などの高電力状態(たとえば高消費電力状態)に戻ったときに該1以上のセグメントの消去を続行することになる。さらに、複数のセグメント142−1〜142−nのうちの消去されるべき1以上のセグメントの消去が完了するまで、該1以上のセグメントをキャッシュ情報の格納用に使用できないようにすることができる。上記の手順を消去に関して説明したが、本発明の実施形態はこれには限定されない。たとえば、装置100は、セグメント142−1〜142−nのうちの少なくとも1つのセグメントのキャッシュ情報を上書きし、及び/または、暗号化ないし暗号解読するための類似の手順を実行することもできる。
上記によれば、本発明の実施形態は、キャッシュ情報を格納している第1の不揮発性メモリをセグメント化してピン留めするための方法及び/または装置を提供する。たとえば、第1のタイプのソフトウェアのキャッシュ情報を、複数のセグメントのうちの第1のセグメントにピン留めすることができる。したがって、いくつかの実施形態では、第1のタイプのソフトウェアに最初にアクセスする場合や、第1のタイプのソフトウェアへのアクセスの間に第2のタイプのソフトウェアが頻繁に使用される場合でも、第1のタイプのソフトウェアがすぐに応答するようにすることができ、または、第1のタイプのソフトウェアの初期の応答性をより向上させることができる。

Claims (15)

  1. キャッシュをセグメント化するための方法であって、
    キャッシュ情報を格納するための第1の不揮発性メモリを複数のセグメントに分割するステップと、
    複数のタイプのソフトウェアのうちの第1のタイプのソフトウェアを、前記複数のセグメントのうちの第1のセグメントにピン留めするステップ
    を含み、
    ピン留めされた前記第1のセグメントは、前記第1のタイプのソフトウェアに関連するキャッシュ情報を格納する、方法。
  2. 前記ピン留めするステップは、前記複数のタイプのソフトウェアのうちの第2のタイプのソフトウェアを、前記複数のセグメントのうちの第2のセグメントにピン留めし、
    ピン留めされた前記第2のセグメントは、前記第2のタイプのソフトウェアに関連するキャッシュ情報を格納する、請求項1の方法。
  3. 前記第1及び第2のタイプのソフトウェアは、あるタイプのアプリケーションと、オペレーティングシステム(OS)に関連するあるタイプのプロセスとのうちの少なくとも一方であり、
    前記アプリケーションは、ウェブブラウザ、ユーザーアプリケーション、及びベンダーアプリケーションのうちの少なくとも1つであり、
    前記プロセスは、ブートプロセス、休止プロセス、シャットダウンプロセス、及びスリーププロセスのうちの少なくとも1つである、請求項2の方法。
  4. 前記ピン留めするステップは、前記複数のセグメントのうちの第3のセグメントをピン留めせず、
    前記ピン留めするステップは、前記第1のセグメントが一杯の場合には、前記第1のタイプのソフトウェアに関連するキャッシュ情報を前記第3のセグメントに格納し、
    前記ピン留めするステップは、前記第2のセグメントが一杯の場合には、前記第2のタイプのソフトウェアに関連するキャッシュ情報を前記第3のセグメントに格納する、請求項3の方法。
  5. 前記分割するステップは、最初に、ベンダー仕様、ユーザーコマンド、及び、前記第1の不揮発性メモリのサイズのうちの少なくとも1つに基づいて、前記複数のセグメントのセグメントの数及びサイズを設定し、
    前記分割するステップは、前記ユーザーコマンドと前記複数のタイプのソフトウェアの使用形態との少なくとも一方に基づいて、前記複数のセグメントの前記数と前記サイズとの少なくとも一方を動的に変化させる、請求項1の方法。
  6. 前記ピン留めするステップは、前記複数のタイプのソフトウェアの使用形態とユーザーコマンドとの少なくとも一方に基づいて、前記複数のタイプのソフトウェアのうちの1つのタイプのソフトウェアを、前記複数のセグメントのうちの1つのセグメントに動的にピン留めする、請求項1の方法。
  7. 前記ピン留めするステップは、前記第1のタイプのソフトウェアに分類される第1及び第2のアプリケーションの使用率を決定し、
    前記ピン留めするステップは、前記決定された使用率に基づいて、前記第1及び第2のアプリケーションの一方を前記ピン留めされた第1のセグメントに動的にピン留めする、請求項1の方法。
  8. 前記ピン留めするステップは、前記第1のタイプのソフトウェアを変更することと前記第1のタイプのソフトウェアを起動することとのうちの少なくとも一方が実施された場合に、前記ピン留めされた第1のセグメントを更新し、
    前記ピン留めするステップは、前記ピン留めされた第1のセグメントから前記第1のタイプのソフトウェアを起動することと、前記第1のタイプのソフトウェアの呼び出しを前記ピン留めされた第1のセグメントに向けることとの少なくとも一方を実施する、請求項1の方法。
  9. 前記第1の不揮発性メモリを備える少なくとも1つの装置が低電力状態に移行することになり、かつ、ユーザーが、前記複数のセグメントのうちの消去すべき1以上のセグメントを選択した場合には、該1以上のセグメントを個別に消去するステップをさらに含む、請求項1の方法。
  10. 前記消去するステップは、前記装置が前記低電力状態に移行する前に前記1以上のセグメントの消去が完了しない場合には、前記装置が高電力状態に戻ったときに前記1以上のセグメントの消去を続行し、
    前記消去が完了するまでは、前記1以上のセグメントは、前記キャッシュ情報を格納するためには使用できない、請求項9の方法。
  11. 命令を格納している非一時的なコンピュータ可読記憶媒体であって、
    前記命令は、装置のプロセッサによって実行されると、該プロセッサに、
    キャッシュ情報を格納するための第1の不揮発性メモリを複数のセグメントにセグメント化するステップと、
    複数のタイプのソフトウェアのうちの第1のタイプのソフトウェアを、前記複数のセグメントのうちの第1のセグメントにピン留めするステップ
    を実行させ、
    ピン留めされた前記第1のセグメントは、前記第1のタイプのソフトウェアに関連するキャッシュ情報を格納することからなる、コンピュータ可読記憶媒体。
  12. 前記プロセッサによって実行されると、該プロセッサに、前記複数のタイプのソフトウェアのうちの第2のタイプのソフトウェアを、前記複数のセグメントのうちの第2のセグメントにピン留めするステップを実行させる命令をさらに含み、
    前記ピン留めされた第2のセグメントは、前記第2のタイプのソフトウェアに関連するキャッシュ情報を格納し、
    ユーザーコマンド、ベンダー仕様、及び使用率のうちの少なくとも1つに基づいて、前記第1と前記第2のタイプのソフトウェアのうちの少なくとも一方がピン留めされるために選択される、請求項11のコンピュータ可読記憶媒体。
  13. 前記プロセッサによって実行されると、該プロセッサに、
    前記第1のセグメントが一杯の場合には、前記第1のタイプのソフトウェアに関連する情報を、前記複数のセグメントのうちの第3のセグメントに格納するステップと、
    前記第2のセグメントが一杯の場合には、前記第2のタイプのソフトウェアに関連する情報を前記第3のセグメントに格納するステップ
    を実行させる命令をさらに含む、請求項12のコンピュータ可読記憶媒体。
  14. キャッシュ情報を格納するための第1の不揮発性メモリと、
    前記第1の不揮発性メモリを複数のセグメントに分割するためのセグメント化モジュールと、
    複数のタイプのソフトウェアのうちの第1のタイプのソフトウェアを、前記複数のセグメントのうちの第1のセグメントにピン留めするためのピン留めモジュール
    を備え、
    ピン留めされた前記第1のセグメントは、前記第1のタイプのソフトウェアに関連するキャッシュ情報を格納することからなる、装置。
  15. 前記第1のタイプのソフトウェアを格納するための第2の不揮発性メモリと、
    前記第1及び前記第2の不揮発性メモリを制御するためのメモリコントローラ
    をさらに備え、
    前記セグメント化モジュール及び前記ピン留めモジュールは、前記複数のセグメントの生成とピン留めの少なくとも一方を実施するために、オペレーティングシステム(OS)を介して前記メモリコントローラと通信する、請求項14の装置。
JP2014538763A 2011-10-26 2011-10-26 セグメント化されたキャッシュ Pending JP2014534520A (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2011/057913 WO2013062542A1 (en) 2011-10-26 2011-10-26 Segmented caches

Publications (1)

Publication Number Publication Date
JP2014534520A true JP2014534520A (ja) 2014-12-18

Family

ID=48168213

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014538763A Pending JP2014534520A (ja) 2011-10-26 2011-10-26 セグメント化されたキャッシュ

Country Status (9)

Country Link
US (1) US9697115B2 (ja)
EP (1) EP2771795B1 (ja)
JP (1) JP2014534520A (ja)
KR (1) KR101842321B1 (ja)
CN (1) CN103999062A (ja)
BR (1) BR112014009920B1 (ja)
IN (1) IN2014CN02958A (ja)
TW (2) TWI498811B (ja)
WO (1) WO2013062542A1 (ja)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10613982B1 (en) 2012-01-06 2020-04-07 Seagate Technology Llc File-aware caching driver
US9542324B1 (en) * 2012-04-05 2017-01-10 Seagate Technology Llc File associated pinning
US9268692B1 (en) * 2012-04-05 2016-02-23 Seagate Technology Llc User selectable caching
US10185501B2 (en) * 2015-09-25 2019-01-22 Intel Corporation Method and apparatus for pinning memory pages in a multi-level system memory
US11165825B2 (en) * 2017-02-16 2021-11-02 Emerald Cactus Ventures, Inc. System and method for creating encrypted virtual private network hotspot
US11122013B2 (en) * 2017-02-16 2021-09-14 Emerald Cactus Ventures, Inc. System and method for encrypting data interactions delineated by zones
US11165751B2 (en) * 2017-02-16 2021-11-02 Emerald Cactus Ventures, Inc. System and method for establishing simultaneous encrypted virtual private networks from a single computing device
US20180336131A1 (en) * 2017-05-22 2018-11-22 Dell Products L.P. Optimizing Memory/Caching Relative to Application Profile
TWI649652B (zh) * 2017-12-29 2019-02-01 國科美國研究實驗室 Fast and safe data storage device and method

Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0216654A (ja) * 1988-07-05 1990-01-19 Hitachi Ltd キャッシュメモリ制御方法
EP0475639A2 (en) * 1990-08-31 1992-03-18 Kawasaki Steel Corporation Hard disk emulator
JPH0511933A (ja) * 1991-07-08 1993-01-22 Kawasaki Steel Corp ハードデイスクエミユレータ及びその固定キヤツシユエリア割付方法
JPH06282488A (ja) * 1993-03-25 1994-10-07 Mitsubishi Electric Corp キャッシュ記憶装置
JPH09114737A (ja) * 1995-10-16 1997-05-02 Hitachi Ltd キャッシュディスク制御
JPH10154101A (ja) * 1996-11-26 1998-06-09 Toshiba Corp データ記憶システム及び同システムに適用するキャッシュ制御方法
JPH10333984A (ja) * 1997-05-30 1998-12-18 Matsushita Electric Ind Co Ltd 記録再生装置
JP2004030090A (ja) * 2002-06-25 2004-01-29 Hitachi Ltd キャッシュメモリ管理方法
JP2004118305A (ja) * 2002-09-24 2004-04-15 Sharp Corp キャッシュメモリ制御装置
JP2007179546A (ja) * 2005-12-27 2007-07-12 Samsung Electronics Co Ltd 不揮発性メモリをキャッシュとして用いる保存装置及びその動作方法
JP2008538437A (ja) * 2005-04-15 2008-10-23 マイクロソフト コーポレーション インライン不揮発性メモリ・ディスク読み取りキャッシュおよび書き込みバッファ

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0389151A3 (en) * 1989-03-22 1992-06-03 International Business Machines Corporation System and method for partitioned cache memory management
US20020112116A1 (en) * 2000-11-17 2002-08-15 Nelson Mark Edward Methods, systems, and computer program products for storing data in collections of tagged data pieces
US7089371B2 (en) 2002-02-12 2006-08-08 Ip-First, Llc Microprocessor apparatus and method for prefetch, allocation, and initialization of a block of cache lines from memory
KR100970933B1 (ko) 2003-07-26 2010-07-20 엘지전자 주식회사 오퍼레이팅 시스템의 고속 부팅장치 및 방법
JP4819369B2 (ja) * 2005-02-15 2011-11-24 株式会社日立製作所 ストレージシステム
US20070005898A1 (en) 2005-06-30 2007-01-04 William Halleck Method, apparatus and system for task context cache replacement
US20080005462A1 (en) 2006-06-30 2008-01-03 Mosaid Technologies Incorporated Method of configuring non-volatile memory for a hybrid disk drive
KR101128234B1 (ko) 2006-08-23 2012-03-23 엘지전자 주식회사 메모리 접근 제어 장치 및 방법
US7554855B2 (en) 2006-12-20 2009-06-30 Mosaid Technologies Incorporated Hybrid solid-state memory system having volatile and non-volatile memory
JP2008250718A (ja) 2007-03-30 2008-10-16 Toshiba Corp 不揮発性キャッシュメモリを用いた記憶装置とその制御方法
US7890691B2 (en) 2007-09-28 2011-02-15 Intel Corporation Memory cache sharing in hybrid hard disk
KR20100114540A (ko) * 2008-02-10 2010-10-25 램버스 인코포레이티드 부분적인 휘발성 저장부에 대한 플래시 메모리의 세그먼트화
US7895374B2 (en) 2008-07-01 2011-02-22 International Business Machines Corporation Dynamic segment sparing and repair in a memory system
US8214596B2 (en) * 2008-09-30 2012-07-03 Intel Corporation Apparatus and method for segmented cache utilization
US8407398B2 (en) 2008-10-01 2013-03-26 Lenovo (Singapore) Pte. Ltd. Cache mapping for solid state drives
US20100088459A1 (en) 2008-10-06 2010-04-08 Siamak Arya Improved Hybrid Drive
EP2452266A4 (en) 2009-07-07 2013-12-04 Lsi Corp SYSTEMS AND METHODS FOR PROGRESSIVE NON-VOLATILE STORAGE

Patent Citations (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0216654A (ja) * 1988-07-05 1990-01-19 Hitachi Ltd キャッシュメモリ制御方法
EP0475639A2 (en) * 1990-08-31 1992-03-18 Kawasaki Steel Corporation Hard disk emulator
JPH0511933A (ja) * 1991-07-08 1993-01-22 Kawasaki Steel Corp ハードデイスクエミユレータ及びその固定キヤツシユエリア割付方法
JPH06282488A (ja) * 1993-03-25 1994-10-07 Mitsubishi Electric Corp キャッシュ記憶装置
US6182194B1 (en) * 1993-03-25 2001-01-30 Mitsubishi Denki Kabushiki Kaisha Cache memory system having at least one user area and one system area wherein the user area(s) and the system area(s) are operated in two different replacement procedures
JPH09114737A (ja) * 1995-10-16 1997-05-02 Hitachi Ltd キャッシュディスク制御
JPH10154101A (ja) * 1996-11-26 1998-06-09 Toshiba Corp データ記憶システム及び同システムに適用するキャッシュ制御方法
JPH10333984A (ja) * 1997-05-30 1998-12-18 Matsushita Electric Ind Co Ltd 記録再生装置
JP2004030090A (ja) * 2002-06-25 2004-01-29 Hitachi Ltd キャッシュメモリ管理方法
JP2004118305A (ja) * 2002-09-24 2004-04-15 Sharp Corp キャッシュメモリ制御装置
JP2008538437A (ja) * 2005-04-15 2008-10-23 マイクロソフト コーポレーション インライン不揮発性メモリ・ディスク読み取りキャッシュおよび書き込みバッファ
JP2007179546A (ja) * 2005-12-27 2007-07-12 Samsung Electronics Co Ltd 不揮発性メモリをキャッシュとして用いる保存装置及びその動作方法

Also Published As

Publication number Publication date
BR112014009920B1 (pt) 2021-06-15
TWI498811B (zh) 2015-09-01
TWI574203B (zh) 2017-03-11
IN2014CN02958A (ja) 2015-07-03
WO2013062542A8 (en) 2014-07-03
TW201329858A (zh) 2013-07-16
EP2771795A4 (en) 2015-08-05
CN103999062A (zh) 2014-08-20
KR101842321B1 (ko) 2018-03-26
TW201546712A (zh) 2015-12-16
EP2771795A1 (en) 2014-09-03
US20140297937A1 (en) 2014-10-02
KR20140091532A (ko) 2014-07-21
EP2771795B1 (en) 2016-06-01
WO2013062542A1 (en) 2013-05-02
US9697115B2 (en) 2017-07-04
BR112014009920A2 (pt) 2017-04-25

Similar Documents

Publication Publication Date Title
KR101842321B1 (ko) 세그먼트화된 캐시
US9665296B2 (en) Method and computing device for using both volatile memory and non-volatile swap memory to pre-load a plurality of applications
TWI512459B (zh) 協同記憶體管理與其方法
US10789160B2 (en) Utilizing different data storage policies in response to different characteristics of data
US20170206010A1 (en) Method and apparatus to shutdown a memory channel
US11030093B2 (en) High efficiency garbage collection method, associated data storage device and controller thereof
JP5860543B2 (ja) ブートデータのロード
US20070038850A1 (en) System boot and resume time reduction method
US20110283065A1 (en) Information Processing Apparatus and Driver
JP2011128998A (ja) 半導体記憶装置
JP2005115910A (ja) シリアルフラッシュメモリにおけるxipのための優先順位に基づくフラッシュメモリ制御装置及びこれを用いたメモリ管理方法、これによるフラッシュメモリチップ
JP2010152909A (ja) 不揮発性半導体メモリドライブ装置、情報処理装置および不揮発性半導体メモリドライブ装置における記憶領域の管理方法
US9710198B2 (en) Method and computing device for controlling bandwidth of swap operations
KR20100114381A (ko) 동작 수행 중 다른 요청을 우선 처리할 수 있는 비휘발성 메모리 컨트롤러, 이를 포함하는 시스템 및 그 관리 방법
USRE49418E1 (en) Information processing apparatus and cache control method
US9633233B2 (en) Method and computing device for encrypting data stored in swap memory
US20080263282A1 (en) System for Caching Data
US20080109612A1 (en) Dynamic Code Relocation for Low Endurance Memories
US10990292B2 (en) Flash memory controller, control method of flash memory controller and associated electronic device
CN110727470B (zh) 一种混合式非失性存储装置
US20150324132A1 (en) Method and Computing Device for Fast Erase of Swap Memory
JP2022184735A (ja) プログラム起動方法及び機器、記憶媒体
JP5025670B2 (ja) 情報処理装置およびデータ記憶装置
KR20100001184A (ko) 메모리 시스템 및 그 구동방법

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20150522

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20150616

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150910

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20160223