JP6916751B2 - ハイブリッドメモリーモジュール及びその動作方法 - Google Patents

ハイブリッドメモリーモジュール及びその動作方法 Download PDF

Info

Publication number
JP6916751B2
JP6916751B2 JP2018023874A JP2018023874A JP6916751B2 JP 6916751 B2 JP6916751 B2 JP 6916751B2 JP 2018023874 A JP2018023874 A JP 2018023874A JP 2018023874 A JP2018023874 A JP 2018023874A JP 6916751 B2 JP6916751 B2 JP 6916751B2
Authority
JP
Japan
Prior art keywords
cache
metadata
dram
data
controller
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.)
Active
Application number
JP2018023874A
Other languages
English (en)
Other versions
JP2018133086A (ja
JP2018133086A5 (ja
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.)
Samsung Electronics Co Ltd
Original Assignee
Samsung Electronics Co Ltd
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 Samsung Electronics Co Ltd filed Critical Samsung Electronics Co Ltd
Publication of JP2018133086A publication Critical patent/JP2018133086A/ja
Publication of JP2018133086A5 publication Critical patent/JP2018133086A5/ja
Application granted granted Critical
Publication of JP6916751B2 publication Critical patent/JP6916751B2/ja
Active 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/0864Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using pseudo-associative means, e.g. set-associative or hashing
    • 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/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0646Configuration or reconfiguration
    • 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/0815Cache consistency protocols
    • G06F12/0817Cache consistency protocols using directory methods
    • G06F12/0822Copy directories
    • 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/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/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0638Combination of memories, e.g. ROM and RAM such as to permit replacement or supplementing of words in one module by words in another module
    • 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/0875Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
    • 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/0893Caches characterised by their organisation or structure
    • G06F12/0895Caches characterised by their organisation or structure of parts of caches, e.g. directory or tag array
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/068Hybrid storage device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1048Scalability
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/20Employing a main memory using a specific memory technology
    • G06F2212/202Non-volatile memory
    • G06F2212/2022Flash 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/22Employing cache memory using specific memory technology
    • G06F2212/221Static RAM
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/28Using a specific disk cache architecture
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/28Using a specific disk cache architecture
    • G06F2212/283Plural cache memories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/46Caching storage objects of specific type in disk cache
    • G06F2212/466Metadata, control data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/50Control mechanisms for virtual memory, cache or TLB
    • G06F2212/507Control mechanisms for virtual memory, cache or TLB using speculative control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/62Details of cache specific to multiprocessor cache arrangements
    • 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

Description

本発明はハイブリッドメモリーモジュール(hybrid memory module)に係り、より詳しくは、SRAMメタデータキャッシュ(metadata cache)及びブルームフィルター(bloom filter)を用いて、ハイブリッドメモリーモジュールのDRAMキャッシュについてのメタデータにアクセスするためのオーバーヘッド(overhead)を軽減させるためのシステム及び方法に関する。
ハイブリッドメモリーモジュールは、主たるデータ記憶装置として、揮発性メモリー(例えば、ダイナミックランダムアクセス記憶装置(DRAM : dynamic random−access memory))と不揮発性メモリ(例えば、フラッシュメモリー(flash memory))の双方を含むメモリーモジュールを示す。ハイブリッドメモリーモジュールの一つの例は、DRAMとフラッシュメモリーを統合したハイブリッドデュアルインラインメモリーモジュール(DIMM : dual in−line memory module)である。一般的な構成では、DRAMはフラッシュメモリーに保存されたデータのためのキャッシュメモリーとして使用される。DRAMキャッシュに高速アクセスするために、DRAMキャッシュのメタデータ (metadata)はハイブリッドメモリーモジュールのスタティックランダムアクセス記憶装置(SRAM : static random−access memory)に保存される。
しかし、DRAMキャッシュのメタデータのため必要となる保存場所の大きさは、SRAMの使用可能な保存場所の大きさより大きくなる。ハイブリッドDIMMに集積されたSRAMの記憶容量は、そのコストのため相対的に小さく維持される。SRAMの制限された保存場所の大きさに起因して、DRAMキャッシュ全体のメタデータはSRAMに保存できないし、結果的にSRAMに保存できないメタデータの残り部分は、DRAMに保存されなければならない。このような場合、DRAMに保存されたメタデータについての遅いアクセス速度は、データにアクセスする場合、性能の低下を引き起こす。
このような問題点に対する解決策として、いくつかのアクセス方式が提案された。一番目のアクセス方式はSRAMに保存されたメタデータの大きさを減らすことである。例えば、メタデータの大きさはSRAMに保存されたキャッシュラインの個数を少なくすることによって減らせる。斯かる場合、各キャッシュラインの大きさは縮小する。縮小されたキャッシュラインの大きさはヒット率(hit rate)に否定的な影響を与え、キャッシュミス(miss)の場合、フラッシュメモリーから複数のページ(page)の読み出しが必要となりうる。他の例では、キャッシュアソシアティビティ(cache associativity:キャッシュ連関性)は、タグビット(tag bit)と交替ビット(replacement bit)を減らすことによって減少されうるが、斯かるアクセス方式もヒット率に否定的な影響を与える。他の例では、交替政策は交替ビットを用いずに交替されうる。
しかし、複数のテストの結果は、メタデータの大きさを減らすための、斯かる効果の組合せが必要とされるメタデータの大きさの一部だけを減少させることを示す。従って、メタデータを保存するためのSRAMの大きさが制限されているという、問題点は、フラッシュメモリーのデータ記憶容量とDRAMキャッシュの大きさが増加するに連れて依然としてしぶとく残る。
特許文献1:米国特許第8868843号公報
特許文献2:米国特許第9389965号公報
特許文献3:米国特許第8478934号公報
特許文献4:米国特許第9524235号公報
特許文献5:米国公開特許第20160266795号公報
特許文献6:米国公開特許第20130173853号公報
特許文献7:米国公開特許第20160188623号公報
本発明は、前述した技術的な課題を解決するためのものであって、その目的とするところはDRAMキャッシュデータにアクセスするためのオーバーヘッドを軽減させるハイブリッドメモリーモジュール及びその動作方法を提供することにある。
本発明の一つの実施例(実施形態)によるハイブリッドメモリーモジュールの動作方法は、DRAMキャッシュ(cache)、フラッシュメモリー(flash memory)、そしてメタデータキャッシュ(metadata cache)を保存するSRAMを含むハイブリッドメモリーモジュールを提供するステップ、前記DRAMキャッシュは前記フラッシュメモリーに保存されたデータのキャッシュされたコピー及び前記データのキャッシュされたコピーに対応するメタデータを含み、前記メタデータキャッシュはDRAMキャッシュのメタデータの一部のキャッシュされたコピーを含み、ホストコンピュータから前記ハイブリッドメモリーモジュールに保存されたデータに対するデータアクセス要請を受信するステップ、前記データアクセス要請を復号化してホストアドレスを獲得するステップ、前記ホストアドレスはDRAMキャッシュタグ(tag)及びDRAMキャッシュインデックス(index)を含み、前記DRAMキャッシュインデックスからメタデータアドレスを獲得するステップ、前記メタデータアドレスはメタデータキャッシュタグ及びメタデータキャッシュインデックスを含み、前記SRAMの前記メタデータキャッシュに存在してマッチングするメタデータキャッシュエントリー(matching metadata cache entry)の存在に基づいて、メタデータキャッシュヒット(hit)を判定するステップ、前記マッチングするメタデータキャッシュエントリーはメタデータキャッシュタグ及びDRAMキャッシュタグをペア(pair)で含み、前記メタデータキャッシュヒットの場合、前記DRAMキャッシュの前記メタデータに対するアクセスを省略して、DRAMキャッシュからデータを獲得するステップ、そして、前記DRAMキャッシュから獲得された前記データを前記ホストコンピュータに返還するステップを包含する。
本発明の他の実施例によるハイブリッドメモリーモジュールはフラッシュメモリー、前記フラッシュメモリーに保存されたデータのキャッシュされたコピーと前記データのキャッシュされたコピーに対応するメタデータを含むDRAMキャッシュ、前記DRAMキャッシュの前記メタデータの一部のキャッシュされたコピーを含むメタデータキャッシュを保存するSRAM、ホストコンピュータにインターフェースを提供するメモリーインターフェース、前記DRAMキャッシュ及び前記フラッシュメモリーに保存されたデータにアクセスするメモリーアクセス制御器、前記DRAMキャッシュに対するアクセスを制御するDRAM制御器、前記フラッシュメモリーに対するアクセスを制御するフラッシュ制御器、そして、前記ホストコンピュータから要請されたデータのキャッシュされたコピーの存在を判定するキャッシュ制御器を包含する。
前記キャッシュ制御器は、前記ホストコンピュータからのデータアクセス要請を復号化してホストアドレスを獲得し、前記ホストアドレスはDRAMキャッシュタグ及びDRAMキャッシュインデックスを含み、前記DRAMキャッシュインデックスからメタデータアドレスを獲得し、前記メタデータアドレスはメタデータキャッシュタグ及びメタデータキャッシュインデックスを含み、前記SRAMの前記メタデータキャッシュに存在して、マッチングするメタデータキャッシュエントリーの存在に基づいて、メタデータキャッシュヒットを判定し、前記マッチングするメタデータキャッシュエントリーはメタデータキャッシュタグ及びDRAMキャッシュタグのペアを含み、そして、前記メタデータキャッシュヒットの場合、前記DRAMキャッシュのメタデータに対するアクセスを省略して、前記DRAM制御器に前記DRAMキャッシュからデータを獲得するように指示する構成で成される。前記メモリーアクセス制御器はDRAMキャッシュから獲得されたデータを前記ホストコンピュータへ返還するように構成される。
イベントの具現及び組合せの多様で新しい事項を含む前記特徴又は他の特徴は、添付の図面と請求項の内容を参照にして、さらに詳しく説明する。本明細書で説明する特定のシステムと方法は、例示を通じて説明され、斯かる例示に本発明が制限されることではない。当業者にとっては明らかのように、本明細書で説明される原理及び特徴は、本発明の範囲を逸脱することなく、多様な実施例に適用される。
本発明のハイブリッドメモリーモジュール及びその動作方法はDRAMキャッシュメタデータにアクセスするためのオーバーヘッドを軽減させ、フラッシュメモリーについてのデータアクセス遅延時間を縮小できる。
従来のハイブリッドメモリーモジュールのアーキテクチャを示す図である。 本発明の一実施例によるハイブリッドメモリーモジュールのアーキテクチャを示す図である。 本発明の一実施例によるキャッシュ制御器の動作例のブロック図である。 本発明の一実施例によるハイブリッドメモリーモジュールで具現されたブルームフィルターの例を示す図である。 本発明の一実施例によるキャッシュ制御器により、データ要請を遂行する順序図である。
本明細書に記載された各々の特徴及び開示(disclose)は、SRAMメタデータキャッシュとブルームフィルター(Bloom filter)を利用し、ハイブリッドメモリーモジュールでのDRAMキャッシュのメタデータに対するアクセスオーバーヘッドを軽減させるためのシステム及び方法を提供するため、各々又は他の特徴及び開示と共に活用される。
このような数多くの追加特徴及び開示を活用する代表的な例は、添付した図面を参照して、別途にまたは共にさらに詳しく説明する。斯かる詳細な説明は、当業者が本発明の態様を実行するための細部的な内容を開示するためであり、請求範囲を制限するものではない。従って、詳細な説明に開示した特徴の組合せは、最も広い意味での本発明の教示(teaching)の実践に必要ではなく、本発明の教示する所の代表的な例示を説明するために開示する。
以下においては、説明するための目的で、本発明の完全な理解を提供するために具体的な命名法を使用する。しかし、本発明の開示のため、当業者にとって具体的な事項が必要でないのは明らかなはずである。
詳細な説明のいくつかの部分は、アルゴリズム及びコンピュータメモリーの中のデータビットに対する動作の記号的(symbolic)な表現により提示する。斯かるアルゴリズムの説明と表現は、他の分野の通常の技術者に研究の要旨を効果的に伝達するため、データプロセシング分野に係わる通常の技術者により使用される。ここで、アルゴリズムは一般的に、望む結果を引き出す一貫性のある一連のステップとして理解される。ステップは物理量の物理的な操作を必要とする。一般的に、必ず必要なものではないが、このような物理量は保存され、伝達され、結合され、比較され、操作できる電気または磁気信号の形態を有する。これは、このような信号をビット、値、要素、シンボル(symbol)、文字、用語、数字などで表現するための一般的な用法である。
しかし、この全ての用語と類似した用語は、適切な物理量と連関され、但し斯かる物理量に適用される便利なラベル(label)であることに留意しなければならない。以下の内容と明らかに異なる内容が具体的に記述されなければ、明細書全般にわたって、‘‘プロセシング’’、‘‘コンピューティング’’、‘‘計算’’、‘‘決定’’、‘‘表示’’などの用語を活用する部分は、コンピュータシステム又は類似の電子コンピューティング装置のプロセスと措置を示すことにより理解される。コンピュータシステム又は類似の電子コンピューティング装置は、コンピュータシステムのレジスタ(register)とメモリーの中において物理(電気)量により示されるデータは、同様にコンピュータシステムメモリー、レジスタ、他の情報記憶装置、情報伝送装置又はディスプレイ装置において他の物理量により示されるデータに操作するか変更される。
本発明の実施例は、DRAMメタデータに対するアクセスを減少させるための多様な技法を説明する。例えば、DRAMメタデータアクセスはランダム交替(replacement)政策を用いて減少される。斯かる場合、交替ビットが必要とされないことがあるが、性能は悪化する場合がある。他の実施例は、SRAMにDRAMキャッシュメタデータの一部を保存し、DRAMメタデータアクセスを減少させる。このような場合、SRAMマッチ(match)のみがDRAM検索を誘発する。しかし、メタデータマッチが頻繁に発生する場合、この部分的メタデータアクセス方式は性能の劣化を招く。
他のアクセス方式は、SRAMをメタデータをキャッシュするために使用し、DRAMキャッシュミス(miss)を効果的に取り除くためブルームフィルターを使用してタグ(tag)がマッチする場合のみDRAM検索を遂行するが、ブルームフィルターは誤判定(false positives)を誘発する場合がある。しかし、SRAMでのブルームフィルターの使用はDRAMキャッシュの劣等な性能のため、一般的に非効率的である。
尚、代表的例示の多様な特徴と従属項は、本発明の有用で追加的実施例を提供するため、具体的で明確に列挙しない方法で結合される。尚、請求する発明の思想を制限しようとする目的だけではなく、開示の目的のため、全ての値の範囲又は個体グループの表示は、可能な全ての中間値又は中間個体を表わす。尚、図面に図示する構成の面積と模様は本発明を、どのように具現するかを理解するため、役に立てるようにデザインされるが、例示に図示する面積と模様に限定されることではない。
本発明はSRAMメタデータキャッシュとブルームフィルターを利用し、ハイブリッドメモリーモジュールでDRAMキャッシュメタデータにアクセスするためのオーバーヘッドを軽減させるシステムと方法を提供する。本発明の一実施例によると、ブルームフィルターとSRAMキャッシュはDRAMキャッシュのためのメタデータを保存するため結合される。ブルームフィルターとSRAMキャッシュの結合された使用は、各々の短所が補完でき、ハイブリッドメモリーモジュールに保存されたデータにアクセスするための向上された性能を提供できる。一般的に、ブルームフィルターはキャッシュミスを予想し、メタデータキャッシュはキャッシュヒットを予想する。メタデータキャッシュとブルームフィルターが同時にアクセスされると、ブルームフィルターフォールス(false)はキャッシュミスを暗示し、従ってDRAMアクセスは必要とされない。SRAMメタデータキャッシュヒットは、速いキャッシュヒットと見なされ、従ってDRAMメタデータアクセスは必要とされない。
図1は、従来のハイブリッドメモリーモジュールのアーキテクチャを示す図である。ハイブリッドメモリーモジュール100は、DRAMキャッシュ101、フラッシュメモリー151、メモリーアクセス制御器111、DRAM制御器121、キャッシュ制御器124、メタデータキャッシュ127を保存するためのSRAM126、そしてフラッシュ制御器131を包含する。メタデータキャッシュ127はDRAMキャッシュ101のメタデータのキャッシュされたバージョン(version)を包含する。DRAMキャッシュ101はフラッシュメモリー151のキャッシュデータを保存し、メタデータ102、読取りキャッシュ103、そして書込みバッファー104を包含する。メタデータ102はタグ、有効ビット、ダーティービット(dirty bits)を包含できる。本明細書において明示的に他の意味に叙述しない限り、メタデータ及びタグ用語は互換的に使用され得る。読取りキャッシュ103はフラッシュメモリー151からキャッシュされたデータを保存する。読取りキャッシュ103はフラッシュメモリー151に対するメモリーアクセス回数を減少させる。フラッシュメモリー151に書込まれるデータは、書込みバッファー104に一時的に保存される。書込みバッファー104はフラッシュメモリー151に対する書込みトラフィック(traffic)を減少させる。
ホストコンピュータ(図示せず)は、メモリーインターフェース140を通じて、ホストコンピュータとハイブリッドメモリーモジュール100の間に樹立されたメモリーホスト/スレーブ(host/slave)インターフェースプロトコル(例えば、NVDIMM−P)により、ハイブリッドメモリーモジュール100に保存されたデータにアクセスするためのメモリーアクセスの要請を送る。メモリーアクセスの要請はメモリーアクセス制御器111に伝達される。メモリーアクセス制御器111は中間変換器として動作し、ホストからの(NVDIMM−Pプロトコルを通じ)要請をハイブリッドメモリーモジュール100に判読可能な形態に変換する。ホストからの要請を変換した後に、メモリーアクセス制御器111はキャッシュ制御器124へ変換された情報を伝達する。
キャッシュ制御器124は、SRAM126に保存されたメタデータキャッシュ127を確認し、メタデータキャッシュヒット又はミスを決定する。メタデータキャッシュヒットであれば、キャッシュ制御器124はDRAMキャッシュ101に要請されたデータが保存されたことを確認し、DRAMキャッシュ101に存在するメタデータ102にアクセスせずにメタデータキャッシュ127に保存されたメタデータを利用し、DRAM制御器121にDRAMキャッシュ101に存在する要請されたデータにアクセスするように要請する。メタデータキャッシュミスであれば、キャッシュ制御器124はDRAM制御器121にDRAMキャッシュ101に保存されたメタデータ102にアクセスするように要請し、DRAMキャッシュヒット又はミスを決定する。DRAMキャッシュヒット又はミスを確認した後に、キャッシュ制御器124は要請されたデータの正確な受信場所を決定する。DRAMキャッシュヒットであれば、キャッシュ制御器124は、DRAM制御器121にDRAMキャッシュ101に保存されている要請されたデータへのアクセスを要請する。DRAMキャッシュミスであれば、キャッシュ制御器124は、フラッシュ制御器131にフラッシュメモリー151に保存されている要請されたデータのアクセスを要請する。
キャッシュ制御器124がDRAMキャッシュ101に要請されたデータが保存されていると判定する時、キャッシュ制御器124はDRAM制御器121にメタデータキャッシュヒットの場合、SRAM126に保存されているメタデータキャッシュ127を参照するか、メタデータ102を参照してDRAMキャッシュ101にアクセスするように指示する。キャッシュ制御器124がフラッシュメモリー151に要請されたデータが保存されていると判定する場合、フラッシュ制御器131はフラッシュ流れ150を通じてフラッシュメモリー151に保存されたデータにアクセスして引き出す。
図2は、本発明の一実施例によるハイブリッドメモリーモジュールのアーキテクチャを示す図である。ハイブリッドメモリーモジュール200はDRAMキャッシュ201、フラッシュメモリー251、メモリーアクセス制御器211、DRAM制御器221、キャッシュ制御器224、SRAM226、そしてフラッシュ制御器231を包含する。
SRAM226はメタデータキャッシュ227にDRAMキャッシュ201のメタデータ202にキャッシュされたもののコピーを保存する。メタデータキャッシュ227の利用可能な大きさにより、メタデータキャッシュ227に保存されるメタデータ202にキャッシュされたもののコピーは、メタデータ202の部分集合である。SRAM226は、キャッシュされたメタデータの他の集合(メタデータ202の完全集合又はメタデータ202の部分集合)を、ブルームフィルターアレイ229の形で(in the form of)さらに保存する。
メタデータキャッシュ227は、DRAMキャッシュ201のメタデータ202にキャッシュされたバージョンを包含する。DRAMキャッシュ201はフラッシュメモリー251のキャッシュデータを保存し、メタデータ202、読取りキャッシュ203、そして書込みバッファー204を包含する。メタデータ202はタグ、有効ビット、ダーティービットを包含する。本明細書において明示的に他の意味を記述しない限り、メタデータ及びタグの用語は互換的に使用できる。読取りキャッシュ203はフラッシュメモリー251からキャッシュされたデータを保存する。読取りキャッシュ203はデータをキャッシュするため使用される。読取りキャッシュ203はフラッシュメモリー251に対するメモリーアクセス回数を減少させる。フラッシュメモリー251に書き込まれるデータは、書き込みバッファー204に一時的に保存される。書込みバッファー204はフラッシュメモリーについての書込みトラフィックを減少させる。
ホストコンピュータ(図示せず)は、メモリーインターフェース240を通じてホストコンピュータとハイブリッドメモリーモジュール200の間に樹立されたメモリーホスト/スレーブ(host/slave)インターフェースプロトコル(例えば、NVDIMM−P)により、ハイブリッドメモリーモジュール200に保存されたデータにアクセスするためのメモリーアクセスの要請を送る。メモリーアクセスの要請はメモリーアクセス制御器211に伝達される。メモリーアクセス制御器211は中間変換器として動作し、ホストからの(NVDIMM−Pプロトコルを通じ)要請をハイブリッドメモリーモジュール200に判読可能な形態に変換する。ホストからの要請を変換した後に、メモリーアクセス制御器211はキャッシュ制御器224へ変換された情報を伝達する。
キャッシュ制御器224は、SRAM226に保存されたメタデータキャッシュ227を確認し、メタデータキャッシュヒット又はミスを決定する。メタデータキャッシュヒットであれば、キャッシュ制御器224はDRAMキャッシュ201に、要請されたデータが保存されていることを確認し、DRAMキャッシュ201に存在するメタデータ202にアクセスせずに、メタデータキャッシュ227に保存されたメタデータを利用し、DRAM制御器221にDRAMキャッシュ201に存在する要請されたデータにアクセスするように要請する。
本発明の一つの実施例によると、キャッシュ制御器224はSRAM226に保存されたメタデータを運営するための多様な関数を提供する。斯かる関数の例はSRAM226に保存されたメタデータを管理するテスト関数と挿入関数を含むが、本発明はこのような例に制限されない。ブルームフィルターはDRAMキャッシュヒット又はミスが有るか否かを判定するための関数を利用し、SRAM226に保存されたブルームフィルターアレイ229により動作する。例えば、キャッシュ制御器224はブルームフィルターアレイ229により、ブルームフィルターテスト関数を遂行する。ブルームフィルターテスト結果が否定的であれば、DRAMキャッシュミスを意味し、DRAMキャッシュ201にデータが保存されていないことを表わし、キャッシュ制御器224はDRAMキャッシュのメタデータ202をアクセスせずに、データを獲得するためフラッシュ制御器231に要請を送る。本発明の一つの実施例によると、メタデータキャッシュ227でのメタデータキャッシュの確認とブルームフィルターでのブルームフィルターのテストは、独立的に、同時に、又は特定の順序により遂行される。
メタデータキャッシュミスであり、ブルームフィルターのテスト結果が肯定的(即ち、DRAMキャッシュヒットを示すがフォールスポジティブである)であれば、キャッシュ制御器224は、実際にDRAMキャッシュヒット又はミスかを判定するため、DRAMキャッシュ201のメタデータ202へのアクセスをDRAM制御器221に要請する。DRAMキャッシュ201のメタデータ202に存在してマッチングするメタデータの存在に基づいて、キャッシュ制御器224は要請されたデータの正確な目的地(destination)を見つけ出す。DRAMキャッシュヒットであれば、キャッシュ制御器224はDRAM制御器221にDRAMキャッシュ201に保存されている要請されたデータにアクセスするように要請する。DRAMキャッシュミスであれば、キャッシュ制御器224はフラッシュメモリー251に保存されている要請されたデータへのアクセスをフラッシュ制御器231に要請する。
図2を参照すると、メタデータキャッシュ227及びブルームフィルターアレイ229は、独立的なデータ構造を有し、同一又は異なるメタデータを保存できる。メタデータキャッシュ227及びブルームフィルターアレイ229は、SRAM226においてメタデータとメタデータを運営するためのロジックを保存するため、各自の専用領域を持ち、互いに関連がない。本発明の一つの実施例によると、SRAM226はメタデータキャッシュ227とブルームフィルターアレイ229の中の一つだけを含み、キャッシュ制御器224はメタデータキャッシュ227とブルームフィルターアレイ229の中の一つだけを運営する。ブルームフィルターアレイ229の存在又は動作と関係なく、メタデータキャッシュ227は動作できる。同様に、メタデータキャッシュ227の存在又は動作と関係なく、ブルームフィルターアレイ229は動作する。メタデータキャッシュ227の存在(又は不在)及び動作モードにより、SRAM226でのメタデータキャッシュ227とブルームフィルターアレイ229の割当てられた領域は動的に変化できる。本発明のハイブリッドメモリーモジュール200はメタデータキャッシュ227とブルームフィルターアレイ229が必然的に依存し合わずに、キャッシュヒット又はミスの決定を可能にするための一つ以上の‘‘ラッパー(wrapper)’’関数などを提供する。
メタデータキャッシュヒットの場合、即ち、SRAM226に有るメタデータキャッシュ227がメタデータのキャッシュされたコピーを保存すれば、キャッシュ制御器224はDRAMキャッシュ201に要請されたデータが保存されたと判定し、キャッシュ制御器224はDRAM制御器221にSRAM226に保存されたメタデータキャッシュ227を参照して、DRAMキャッシュ201にアクセスするように指示する。DRAMキャッシュヒットの場合、キャッシュ制御器224はDRAM制御器221にメタデータ202を参照して、DRAMキャッシュ201にアクセスするように指示する。キャッシュ制御器224がフラッシュメモリー251に要請されたデータが保存されていると判定する場合、フラッシュ制御器231はフラッシュ流れ250を通じて、フラッシュメモリー251に保存されたデータにアクセスして引き出す。
本発明の一つの実施例によると、メタデータ202は包括的でクリーン(clean)であるので、メタデータキャッシュ227は効率的に維持される。例えば、メタデータキャッシュ227のライン(line)は、なお、DRAMキャッシュ201のメタデータ202に保存される。メタデータキャッシュ227についての、どのようなアクセス類型(例えば、読取り、書込み)も、常に読取りアクセスと見なされる。表1はアクセス類型と要請されたデータの位置に沿い、ハイブリッドメモリーモジュール200のキャッシュ制御器224によって遂行される一覧を示す。

Figure 0006916751
Figure 0006916751
読取りアクセスの要請が有る場合、キャッシュ制御器224は要請されたデータのキャッシュされたコピーが次のような方式で、DRAMキャッシュ201から検索され得るか否かを判定する。まず、キャッシュ制御器224はメタデータキャッシュ227にマッチングするメタデータが存在するか否かを確認する。マッチするメタデータが検索されると、メタデータタグとDRAMキャッシュタグの包括性により、キャッシュ制御器224は、DRAMキャッシュ201で、読取りアクセスの要請ヒットであると結論づける。キャッシュ制御器224はメタデータ202へのアクセスなしに、メタデータキャッシュ227でヒットしたメタデータを使用し、DRAMキャッシュ201から目的のデータを要請する。メタデータキャッシュ227の確認の時、追加的にキャッシュ制御器224はブルームフィルターアレイ229を使用し、DRAMキャッシュヒット又はミスの確認を遂行する。ブルームフィルターのテストによるDRAMキャッシュミスの場合、キャッシュ制御器224は目的のデータがDRAMキャッシュ201に存在しないと結論づけ、DRAMキャッシュ201のメタデータ202へのアクセスなしに、データを獲得するためフラッシュ制御器231へ要請を送る。ブルームフィルターのテスト結果がDRAMキャッシュヒットを表わすと、ブルームフィルターによるDRAMキャッシュヒットがフォールスポジティブであり得るので、キャッシュ制御器224はこのステップで真のDRAMキャッシュヒット又はミスを判定できない。斯かる場合、キャッシュ制御器224は真のDRAMキャッシュヒット又はミスを判定するため、DRAM制御器221にメタデータ202にアクセスするようにさらに要請する。データアクセスの要請に含まれたDRAMキャッシュタグとメタデータ202の比較により、キャッシュ制御器224はDRAMキャッシュ201によりデータ要請のヒットであるか否かを正確に判定する。DRAMキャッシュヒットであれば、キャッシュ制御器224はDRAMキャッシュ201から目的のデータを要請する。DRAMキャッシュミスであれば、キャッシュ制御器224はフラッシュメモリー251から目的のデータを要請し、フラッシュメモリー251から獲得したデータをDRAMキャッシュ201に挿入し、メタデータ202をアップデートする。DRAMキャッシュヒット又はミスと相関なしに、メタデータキャッシュミスとして、キャッシュ制御器224はメタデータ202から獲得したメタデータが、メタデータキャッシュ227をアップデートするため使用する。
書込みアクセス要請の場合、キャッシュ制御器224は読取りアクセス要請の場合と同様に、メタデータキャッシュ227とDRAMキャッシュ201のマッチング結果に基づいて同様の措置を遂行する。読取りと書込みのアクセス動作の差異点は、以下においてさらに詳しく説明する。
図3は、本発明の一実施例によるキャッシュ制御器の動作例のブロック図である。図3を参照して説明するキャッシュ制御器は、図2に示したハイブリッドメモリーモジュール200に統合されたキャッシュ制御器224である。この場合、ハイブリッドメモリーモジュール200とハイブリッドメモリーモジュール200に統合された内部構成、モジュール、そして装置の重複された説明は省略する。
ホストコンピュータから受信したデータアクセスの要請に対する応答により、キャッシュ制御器は要請されたデータのホストアドレス301を獲得し、アクセス類型(例えば、読取り、書込み)を識別するためデータアクセスの要請を復号化する。ホストアドレス301はタグ(302)(本明細書ではDRAMキャッシュタグと呼称される)、インデックス303(本明細書ではDRAMキャッシュインデックスと呼称される)、そしてオフセット304を包含する。
本発明の一つの実施例によると、DRAMキャッシュに有るキャッシュラインはホストから要請されたデータの大きさより大きくなる。斯かる場合、要請されたデータに対応するキャッシュラインの部分を決定するため、オフセット304が使用される。例えば、キャッシュラインが2KBであり、要請されたデータの大きさが1Bであれば、キャッシュラインにはホストアドレス301が示す唯一のデータ部分を識別するため、総計2048個のオフセットを要求する2048(2KB/1B)のデータ部分が存在する。例えば、0のオフセット304はキャッシュラインで一番目のデータ部分を示し、2047のオフセット304はキャッシュラインの最後のデータ部分を示す。
本発明の一実施例によると、インデックス303はDRAMキャッシュに関連されたメタデータの情報を包含できる。キャッシュ制御器はメタデータアドレス311を獲得するため、インデックス303をさらに復号化してメタデータキャッシュヒット又はミスを判定するため、SRAMに保存されたメタデータキャッシュ327とメタデータアドレス311を比較する。本発明の一つの実施例によると、メタデータアドレス311は、メタデータ(MDC)タグ312及びメタデータ(MDC)インデックス313を包含する。
まず、キャッシュ制御器はSRAMのメタデータキャッシュ327に保存された複数のDRAMキャッシュメタデータの中で、マッチングするメタデータエントリー(entry)を選択するため、メタデータアドレス311のメタデータインデックス313を使用する。SRAMのメタデータキャッシュ327に保存された各々のマッチングするメタデータエントリーは、MDCタグ333、DRAMキャッシュタグ332、そして有効ビット(V)を含むタグのペア(pair)を包含できる。有効ビット(V)は、関連されたキャッシュラインが有効であるか否かを表す。例えば、マッチングするメタデータエントリーを包含するキャッシュラインは、V=0であれば、キャッシュミスを表す。例示で図示したように、SRAMのメタデータキャッシュ327が複数の通路(例えば、通路(way)0、通路1、通路2、そして通路3)により構成されれば、メタデータインデックス313は通路IDに対応できる。
メタデータキャッシュヒット又はミスを判定するため、キャッシュ制御器はメタデータキャッシュ327においてマッチングするエントリーを検索し、メタデータアドレス311のメタデータタグ312を、識別されてマッチングするエントリーのMDCタグ333と比較する。メタデータタグ312とMDCタグ333とがマッチすれば、最初のホストタグを含むデータは、マッチングするエントリーから読み出される。メタデータキャッシュ327に保存された最初のホストタグは、ホストアドレス301のタグ302と比較される。最初のホストタグとホストアドレス301のタグ302がマッチすれば、キャッシュ制御器はメタデータキャッシュヒットと判定し、DRAMキャッシュのメタデータに対するアクセスなしに、メタデータキャッシュ327に保存されてマッチングするホストタグを利用して、DRAMキャッシュに存在して要請されたデータにアクセスする。
メタデータキャッシュ327の確認の時、追加的に、キャッシュ制御器はブルームフィルターを用いて、DRAMキャッシュに存在してキャッシュされたデータの存在(又は不在)を判定(すなわち、DRAMキャッシュヒットまたはミス)するため、ブルームフィルターのテストを遂行できる。ブルームフィルターは、例えば、比較器を通じて、多様な形態に具現される。キャッシュ制御器はホストアドレス301のタグ302を、メタデータキャッシュ327の確認により、識別されてマッチングするメタデータペアのDRAMキャッシュタグ332と比較する。ブルームフィルターのテストがDRAMキャッシュミス(即ち、メタデータキャッシュ327にホストアドレス301のタグ302とマッチングするDRAMキャッシュタグ332が存在しない場合)を表すと、キャッシュ制御器はDRAMキャッシュに目的のデータが存在しないと結論づけ、フラッシュ制御器にフラッシュメモリーに保存されたデータにアクセスするように要請する。
いくつかの場合に、キャッシュ制御器はメタデータキャッシュ327においてマッチングするメタデータのエントリーが見つけ出せなくて(即ち、メタデータキャッシュのミス)、ブルームフィルターはDRAMキャッシュヒットを表すことがある。しかし、ブルームフィルターによるDRAMキャッシュヒットの表示は、フォールスポジティブでありうるので、キャッシュ制御器はDRAMキャッシュに目的のデータが、実際に、保存されているか否か(真のDRAMキャッシュヒット又はミス)を判定するため、DRAMキャッシュのメタデータにアクセスする。ホストアドレス301のタグ302とDRAMキャッシュのメタデータの間の比較結果に基づいて、キャッシュ制御器は目的のデータの位置を正確に判定する。DRAMキャッシュにマッチングするメタデータがなければ(即ち、真のDRAMキャッシュミス)、キャッシュ制御器はDRAMキャッシュに要請されたデータのキャッシュされたコピーがないことを、確認する。斯かる場合、キャッシュ制御器はDRAMキャッシュに対するアクセスをせずに、フラッシュメモリーに保存されたデータにアクセスするため、直接に、フラッシュメモリーにアクセスする。DRAMキャッシュにマッチングするメタデータが存在すれば(即ち、真のDRAMキャッシュヒット)、キャッシュ制御器はDRAMキャッシュに保存されたデータにアクセスするため、DRAM制御器にアクセスする。
図4は、本発明の一実施例によるハイブリッドメモリーモジュールで具現されたブルームフィルターの例を示す図である。キャッシュ制御器はブルームフィルターのため挿入(insert)関数とテスト(test)関数を提供する。本発明の一つの実施例によると、挿入関数はハッシュ関数(hash function)である。キャッシュ制御器はブルームフィルターの設定により、一つ以上のハッシュ関数を適用できる。例えば、x、y、z、そしてwにより表示される挿入関数とテスト関数に対する入力は、メタデータキャッシュタグでありうる。
本発明のハイブリッドメモリーモジュールのSRAMの専用領域に保存されたブルームフィルターのメタデータは、本明細書において複数のエントリーを含むブルームフィルターアレイと呼称されるアレイとして具現される。本発明の一つの実施例において、ブルームフィルターアレイの各エントリーは16ビットであり、三つのハッシュ関数が存在できる。テスト関数は三つのすべてのハッシュ関数に対するマッチングの結果を提供する。上述した内容は例示のみであり、本発明の範囲から逸脱せず、他の長さのブルームフィルターアレイと他の個数のハッシュ関数などが使用できる。
与えられたキャッシュタグ(例えば、図3のタグ302)で、挿入関数はハッシュアルゴリズムに従い、ブルームフィルターアレイ401の示されたエントリーにビットを挿入(又はアップデート)する。本発明の実施例において、ハッシュ関数はブルームフィルターアレイ401のエントリー(7、12、そして14ビットなど)の集合を、キャッシュタグのxにより示された所に挿入する。そして、データのアクセス要請が受信されると、テスト関数test(x)は、ブルームフィルターアレイ401からキャッシュタグのxにより示されたエントリーを読取り、ブルームフィルターアレイ401がキャッシュタグのxを含んでいるか否かをテストするため呼び出される。次に、キャッシュタグのyによって示された所へハッシュ関数の挿入を利用して、ブルームフィルターアレイ401のエントリー(2、4、そして11ビットなど)に入力され、キャッシュタグのyの存在はテスト関数test(y)を用いてテストされる。
本発明の実施例で、キャッシュタグのx及びyは、ブルームフィルターアレイ401に対する入力で表される。ブルームフィルターアレイ401の各エントリーは0又は1でありうる。挿入関数は一つ以上のハッシュ関数などに基づき、各々のハッシュ関数は入力でキャッシュタグを持つ。挿入関数の出力はブルームフィルターアレイ401で示されたエントリーに対応するビット個数である。本発明は特定のハッシュ関数及び使用されるハッシュ関数の個数に制限されない。例えば、挿入関数は入力としてキャッシュタグを受信する場合、ブルームフィルターアレイの四つのエントリーをアップデートする。
キャッシュタグのzとwは明確にブルームフィルタ401に入力されない。キャッシュタグのzを含むデータのアクセス要請が受信される場合、キャッシュタグのzのためのテスト関数test(z)が呼び出され、否定(negative)で返還され、正確にzがブルームフィルターに含まれないことを表す(よって、DRAMキャッシュにない)。しかし、キャッシュタグのwを含むデータのアクセス要請が受信される場合、テスト関数test(w)はキャッシュタグのwによって示された通りに、ブルームフィルターアレイ401のエントリーを読取り、ブルームフィルターアレイ401に存在するキャッシュタグのwの存在又は不在をテストするため呼び出される。本発明の実施例で、テスト関数test(w)はブルームフィルターアレイ401にキャッシュタグのwが存在することを表す。よって、本発明の実施例で、テスト関数test(w)はフォールスポジティブの例示である。従って、ブルームフィルターは、キャッシュにないキャッシュタグを、確信をもって識別するため使用できるが、どのようなキャッシュタグがキャッシュに存在するかを正確に予測するためには使用できない。
本発明の一つの実施例によると、本発明のブルームフィルターは、ブルームフィルターアレイ401の選択された部分又は全体を削除できない。例えば、削除関数はブルームフィルターアレイ401の部分または全体を削除するため、キャッシュ制御器に適用される。削除関数はDRAMキャッシュにキャッシュラインが、これ以上存在しないかキャッシュラインの交替に起因して無くなる場合、使用される。斯かる場合、削除関数は本発明のブルームフィルターアレイ401に存在して対応するエントリーを削除できる。ブルームフィルターアレイ401が充分に大きくない場合、キャッシュ制御器は新しいエントリーのための空間を備えるためブルームフィルターアレイ401の一部を削除する。本発明の他の実施例において、本発明のブルームフィルター401は全体のタグの範囲を包括できる、大きなブルームフィルターアレイ401が使用でき、又はキャッシュ制御器はブルームフィルター401がいっぱいになって、もっと多くのアレイが追加できない場合(ブルームフィルターが非効率的になる場合)、ブルームフィルター401を再設定する。
図5は、本発明の一実施例によるキャッシュ制御器により、データ要請を遂行する順序図である。501ステップにおいて、ホストコンピュータからのデータアクセスの要請に応じて、ハイブリッドメモリーモジュールのキャッシュ制御器は、要請類型(例えば、読取り、書込み)と要請されたデータに対するホストアドレスを得るため、要請を復号化する。ホストアドレスはタグ(DRAMキャッシュタグ)、インデックス、そしてオフセットを含む。502ステップにおいて、キャッシュ制御器はMDC(メタデータキャッシュ)タグ及びMDCインデックスを含むメタデータアドレスを得るため、ホストアドレスのインデックスを復号化する。503ステップにおいて、キャッシュ制御器はハイブリッドメモリーモジュールのSRAMに保存されたメタデータキャッシュからマッチングするキャッシュラインを識別するため、メタデータアドレスのMDCインデックスを使用する。マッチングするキャッシュラインは一対のMDCタグ及びDRAMキャッシュタグを保存する。
504ステップにおいて、メタデータキャッシュにマッチングするキャッシュラインがなければ、キャッシュ制御器はDRAM制御器に、DRAMキャッシュのメタデータにアクセスして、DRAMキャッシュに要請されたデータのキャッシュされたコピーが存在するかを判定(即ち、真のDRAMキャッシュヒット又はミス)するように要請する。
一方、504ステップにおいて、SRAMメタデータキャッシュにマッチングするキャッシュラインが識別されると、キャッシュ制御器はマッチングするキャッシュラインのMDCタグがメタデータアドレスのMDCタグとマッチするか否かを判定し、さらにマッチングするMDCタグによって参照されたホストタグが最初のホストタグとマッチングするか否かを判定する。ホストタグがマッチングすると(即ち、メタデータキャッシュヒット)、506ステップにおいて、キャッシュ制御器は要請されたデータがDRAMキャッシュにキャッシュされたと判定し、511ステップにおいて、DRAM制御器にDRAMキャッシュのメタデータにアクセスせずに、マッチングするホストタグを用いてDRAMキャッシュにアクセスし、DRAMキャッシュから要請されたデータを得るように要請する。
そして、505ステップにおいて、キャッシュ制御器はDRAMキャッシュヒット又はミスを判定するため、マッチングするキャッシュラインのDRAMキャッシュタグ(又はホストアドレスのDRAMキャッシュタグ)を用いて、ブルームフィルターテストを遂行する。ブルームフィルターテストの結果が否定的であれば、509ステップにおいて、キャッシュ制御器はDRAMキャッシュに要請されたデータがキャッシュされていない(即ち、DRAMキャッシュミス)と結論づけ、512ステップにおいて、フラッシュ制御器にフラッシュメモリーにアクセスし、要請されたデータを得るように要請する。斯かる場合、DRAMキャッシュのメタデータに対するアクセスは省略され、フラッシュメモリーに対するデータアクセスの遅延時間は増加する。
メタデータキャッシュとマッチングせずに(即ち、メタデータキャッシュミス)、ブルームフィルターテストの結果が肯定的(DRAMキャッシュヒットのフォールスポジティブでありうる)であれば、507ステップ及び508ステップにおいて、キャッシュ制御器は、DRAM制御器にDRAMキャッシュのメタデータに存在するエントリーとホストアドレスのタグ(DRAMキャッシュタグ)がマッチするか否かを判定するため、DRAMキャッシュのメタデータにアクセスするように要請する。510ステップにおいて、DRAMキャッシュタグがマッチすれば、キャッシュ制御器は要請されたデータがDRAMキャッシュにキャッシュされたと判定(即ち、DRAMキャッシュヒット)し、511ステップにおいて、DRAM制御器にDRAMキャッシュに存在して要請されたデータにアクセスするように要請する。509ステップにおいて、DRAMキャッシュタグがマッチに失敗すれば、キャッシュ制御器は、要請されたデータがDRAMキャッシュにキャッシュされていないと判定(即ち、DRAMキャッシュミス)し、512ステップにおいて、フラッシュ制御器にフラッシュメモリーに存在する要請されたデータにアクセスするように要請する。
本発明のキャッシュ制御器は、メタデータキャッシュとブルームフィルターの中のいずれか一つ又は双方を支援するように、又は何一つも支援しないように、プログラムできる。例えば、キャッシュ制御器はメタデータキャッシュ及び/又はブルームフィルターの使用不能/使用可能を判定するため、キャッシュヒット比率をモニター(monitor)する。メタデータキャッシュのヒット比率が、予め定められた第一臨界値より高いと、キャッシュ制御器はブルームフィルターがDRAMキャッシュのメタデータにアクセスするためのオーバーヘッドを軽減させる効果がほぼ無いとみなされるのでブルームフィルターを非活性化できる。本発明の他の実施例において、メタデータキャッシュヒット比率が予め定められた第二の臨界値より低いと、キャッシュ制御器はブルームフィルターだけ残し、メタデータキャッシュを使用しないこともある。DRAMがフラッシュメモリーに対するキャッシュとして使用されないと、キャッシュ制御器はメタデータキャッシュとブルームフィルターの両方を使用しないこともある。
本発明の一実施例によると、キャッシュ制御器は、比較結果を速く得るため、ブルームフィルターとメタデータキャッシュに同時にアクセスできる。本発明の他の実施例によると、キャッシュ制御器は、低電力の条件で順次にブルームフィルターとメタデータキャッシュにアクセスできる。キャッシュ制御器は、ブルームフィルターを先に確認し、ブルームフィルターの結果がメタデータキャッシュミスの場合、キャッシュ制御器はメタデータキャッシュを活性化しない。ブルームフィルターの結果がメタデータキャッシュヒットの場合、キャッシュ制御器はDRAMキャッシュヒット又はミスを確認するため、メタデータキャッシュを活性化できる。ブルームフィルターの結果がメタデータキャッシュヒットであるが、メタデータキャッシュがフォールス(false)の場合、キャッシュ制御器は、DRAMキャッシュタグにアクセスする。順次のアクセスの順序は反対となることができ、即ち、メタデータキャッシュ、ブルームフィルター、そしてDRAMキャッシュタグの順序にアクセスできる。
本発明の一つの実施例によると、ハイブリッドメモリーモジュールの動作方法はダイナミックランダムアクセス記憶装置(DRAM)キャッシュ、フラッシュメモリー、そしてメタデータキャッシュを保存するスタティックランダムアクセス記憶装置(SRAM)を含むハイブリッドメモリーモジュールを提供するステップ、ここでDRAMキャッシュはフラッシュメモリーに保存されたデータのキャッシュされたコピー及びデータのキャッシュされたコピーに対応するメタデータを含み、メタデータキャッシュはDRAMキャッシュのメタデータの一部のキャッシュされたコピーを含み、ホストコンピュータからハイブリッドメモリーモジュールに保存されたデータに対するデータアクセスの要請を受信するステップ、データのアクセス要請を復号化してホストアドレスを獲得するステップ、ここでホストアドレスはDRAMキャッシュタグ及びDRAMキャッシュインデックスを含み、DRAMキャッシュインデックスからメタデータアドレスを獲得するステップ、ここでメタデータアドレスはメタデータキャッシュタグ及びメタデータキャッシュインデックスを含み、SRAMのメタデータキャッシュに存在してマッチングするメタデータエントリーの存在に基づいて、メタデータキャッシュのヒットを判定するステップ、ここでマッチングするメタデータキャッシュのエントリーは、メタデータキャッシュのタグ及びDRAMキャッシュタグをペアで含み、メタデータキャッシュヒットの場合、DRAMキャッシュのメタデータに対するアクセスを省略して、DRAMキャッシュからデータを獲得するステップ、そしてDRAMキャッシュから獲得されたデータをホストコンピュータに返還するステップを包含する。
メタデータキャッシュのヒットを判定するステップは、メタデータキャッシュに存在してマッチングするメタデータキャッシュエントリーの存在を判定するため、メタデータアドレスのメタデータキャッシュタグを一つ以上のメタデータキャッシュエントリーのメタデータキャッシュタグと比較するステップを、さらに包含する。
SRAMはブルームフィルターを、さらに保存でき、ハイブリッドメモリーモジュールの動作方法は、SRAMのメタデータキャッシュに存在してマッチングするメタデータキャッシュエントリーが存在しないことに基づいて、メタデータキャッシュミスを判定するステップ、ブルームフィルターによってブルームフィルターテストを遂行するステップ、ブルームフィルターテストの結果に基づいて、DRAMキャッシュのミス又は潜在的なDRAMキャッシュヒットを判定するステップ、DRAMキャッシュミスの場合、フラッシュメモリーからデータを獲得するステップ、そしてフラッシュメモリーから獲得されたデータをホストコンピュータに返還するステップをさらに包含する。
メタデータキャッシュタグの比較とブルームフィルターは同時に遂行される。
ハイブリッドメモリーモジュールの動作方法は、メタデータキャッシュミスと潜在的なDRAMキャッシュヒットの場合、DRAMキャッシュのメタデータにアクセスするステップ、ホストアドレスのDRAMキャッシュタグとDRAMキャッシュのメタデータの比較に基づいて、DRAMキャッシュにデータが保存されたか否かを判定するステップ、ホストアドレスのDRAMキャッシュタグにマッチングするエントリーがDRAMキャッシュのメタデータに存在する場合、DRAMキャッシュからデータを獲得して、DRAMキャッシュから獲得されたデータをホストコンピュータに返還するステップ、そしてホストアドレスのDRAMキャッシュタグにマッチングするエントリーがDRAMキャッシュのメタデータに存在しない場合、フラッシュメモリーからデータを獲得し、フラッシュメモリーから獲得したデータをホストコンピュータに返還するステップを、さらに包含する。
ブルームフィルターは複数のエントリーを含むブルームフィルターアレイを包含し、ブルームフィルターテストはブルームフィルターアレイにハッシュ関数を適用し、肯定結果または否定結果を提供する。
ハイブリッドメモリーモジュールの動作方法は、ブルームフィルターアレイを削除するか又はブルームフィルターアレイを再設定するステップを、さらに包含する。
ハイブリッドメモリーモジュールの動作方法は、メタデータキャッシュヒット比率が臨界値より高い場合、ブルームフィルターを使用しないようにキャッシュ制御器をプログラムするステップを、さらに包含する。
ハイブリッドメモリーモジュールの動作方法は、メタデータキャッシュヒット比率が臨界値より低い場合、メタデータキャッシュを使用しないようにキャッシュ制御器をプログラムするステップを、さらに包含する。
ハイブリッドメモリーモジュールの動作方法は、低電力の条件でブルームフィルター及びメタデータキャッシュを順次にアクセスするステップを、さらに包含する。
本発明の他の実施例によると、ハイブリッドメモリーモジュールはフラッシュメモリー、ダイナミックランダムアクセス記憶装置(DRAM)、ここでDRAMキャッシュはフラッシュメモリーに保存されたデータのキャッシュされたコピーとデータのキャッシュされたコピーに対応するメタデータを含み、DRAMキャッシュのメタデータの一部のキャッシュされたコピーを含むメタデータキャッシュを含むスタティックランダムアクセス記憶装置(SRAM)、ホストコンピュータにインターフェースを提供するメモリーインターフェース、DRAMキャッシュ及びフラッシュメモリーに保存されたデータにアクセスするメモリーアクセス制御器、DRAMキャッシュに対するアクセスを制御するDRAM制御器、フラッシュメモリーに対するアクセスを制御するフラッシュ制御器、そしてホストコンピュータから要請されたデータのキャッシュされたコピーの存在を判定するキャッシュ制御器を包含する。
キャッシュ制御器は、データアクセスの要請を復号化してホストアドレスを獲得し、ここでホストアドレスはDRAMキャッシュタグ及びDRAMキャッシュインデックスを含み、DRAMキャッシュインデックスからメタデータのアドレスを獲得し、ここでメタデータアドレスはメタデータキャッシュタグ及びメタデータキャッシュインデックスを含み、SRAMのメタデータキャッシュに存在してマッチングするメタデータキャッシュエントリーの存在に基づいて、メタデータキャッシュヒットを判定し、ここで、マッチングするメタデータキャッシュエントリーはメタデータキャッシュタグ及びDRAMキャッシュタグのペアを含み、そしてメタデータキャッシュヒットの場合、DRAMキャッシュのメタデータに対するアクセスを省略して、DRAM制御器にDRAMキャッシュからデータを獲得するように指示するように構成される。メモリーアクセス制御器はDRAMキャッシュから獲得されたデータをホストコンピュータに返還するように構成される。
キャッシュ制御器は、メタデータキャッシュに存在してマッチングするメタデータキャッシュエントリーの存在を判定するため、メタデータアドレスのメタデータキャッシュタグと一つ以上のメタデータキャッシュエントリーのメタデータキャッシュタグを比較するように、さらに構成される。
SRAMはブルームフィルターをさらに保存できる。キャッシュ制御器は、SRAMのメタデータキャッシュに存在してマッチングするメタデータキャッシュエントリーの存在しないことに基づいて、メタデータキャッシュミスを判定し、ブルームフィルターでブルームフィルターテストを遂行し、ブルームフィルターテストの結果に基づいて、DRAMキャッシュミス又は潜在的なDRAMキャッシュヒットを決定し、DRAMキャッシュミスの場合、DRAMキャッシュのメタデータに対するアクセスを省略し、フラッシュ制御器にフラッシュメモリーからデータを獲得するように指示し、そしてフラッシュメモリーからデータを獲得するように、さらに構成され、メモリーアクセス制御器はフラッシュメモリーから獲得されたデータをホストコンピュータに返還するように構成される。
キャッシュ制御器は、メタデータキャッシュタグの比較とブルームフィルターテストを同時に遂行する。
メタデータキャッシュミスと潜在的なDRAMキャッシュヒットの場合、DRAM制御器は、DRAMキャッシュのメタデータにアクセスし、そしてホストアドレスのDRAMキャッシュタグとDRAMキャッシュのメタデータの比較に基づいて、DRAMキャッシュにデータが保存されているか否かを判定するように構成される。ホストアドレスのDRAMキャッシュタグにマッチングするエントリーが、DRAMキャッシュのメタデータに存在する場合、DRAM制御器はDRAMキャッシュからデータを獲得するように構成され、メモリーアクセス制御器はDRAMキャッシュから獲得されたデータをホストコンピュータに返還するように構成される。ホストアドレスのDRAMキャッシュタグにマッチングするエントリーが、DRAMキャッシュのメタデータに存在しない場合、フラッシュ制御器はフラッシュメモリーからデータを獲得するように構成され、メモリーアクセス制御器はフラッシュメモリーから獲得したデータをホストコンピュータに返還するように構成される。
ブルームフィルターは複数のエントリーを含むブルームフィルターアレイを包含し、ブルームフィルターテストはブルームフィルターアレイにハッシュ関数を適用し、肯定結果又は否定結果を提供する。
キャッシュ制御器は、ブルームフィルターアレイを削除するか又はブルームフィルターを再設定するように、さらに構成される。
キャッシュ制御器は、メタデータキャッシュヒットの比率が臨界値より高い場合、ブルームフィルターを使用しないようにプログラムされる。
キャッシュ制御器は、メタデータキャッシュヒットの比率が臨界値より低い場合、メタデータキャッシュを使用しないようにプログラムされる。
キャッシュ制御器は、低電力の条件で、ブルームフィルターとメタデータキャッシュに順次にアクセスするように構成される。
上述した本発明の実施例は、SRAMメタデータキャッシュ及びブルームフィルターを利用し、ハイブリッドメモリーモジュールに存在するDRAMキャッシュのメタデータアクセスに対するオーバーヘッドを軽減させるためのシステム及び動作方法を具現する、多様な実施例を説明した。上述した本発明の実施例からの多様な変形及び変更は当業者にとって明らかになるはずである。発明の範囲内に意図した本発明の思想は、添付した請求範囲により記述される。
本発明は、ハイブリッドメモリーモジュール及びその動作方法において、メタデータキャッシュにアクセスするためのオーバ−ヘッドを減らすのに有用である。
100、200 ハイブリッドメモリーモジュール
101、201 DRAMキャッシュ
102、202 メタデータ
103、203 読取りキャッシュ
104、204 書込みバッファ
111、211 メモリーアクセス制御器
121、221 DRAM制御器
124、224 キャッシュ制御器
126、226 SRAM
127、227,327 メタデータキャッシュ
131、231 フラッシュ制御器
140、240 メモリーインターフェース
150、250 フラッシュ流れ
151、251 フラッシュメモリー
221 DRAM制御器
229、401 ブルームフィルターアレイ
240 メモリーインターフェース
301 ホストアドレス
302 タグ
303 インデックス
304 オフセット
311 メタデータアドレス
312 メタデータタグ
313 メタデータインデックス
332 DRAMキャッシュタグ
333 MDCタグ
MDC メタデータ
DRAM ダイナミックランダムアクセスメモリー(dynamic random−access memory)
SRAM スタティックランダムアクセスメモリー(static random−access memory)

Claims (20)

  1. ハイブリッドメモリーモジュールの動作方法であって、
    DRAMキャッシュ(cache)、フラッシュメモリー(flash memory)、ブルームフィルター(bloom Filter)、メタデータキャッシュ(metadata cache)を保存するSRAMを含むハイブリッドメモリーモジュールを提供するステップと、
    ここで、前記DRAMキャッシュは、前記フラッシュメモリーに保存された複数のデータのキャッシュされたコピー及び前記複数のデータのキャッシュされたコピーに対応するメタデータを含み、前記メタデータキャッシュは前記DRAMキャッシュに含まれたメタデータの一部のキャッシュされたコピーを含み、
    ホストコンピュータから前記ハイブリッドメモリーモジュールに保存されたデータに対するデータアクセス要請を受信するステップと、
    前記データアクセス要請を復号化してホストアドレスを獲得するステップと、
    ここで、前記ホストアドレスはDRAMキャッシュタグ(tag)及びDRAMキャッシュインデックス(index)を含み、
    前記DRAMキャッシュインデックスからメタデータアドレスを獲得するステップと、
    ここで、前記メタデータアドレスはメタデータキャッシュタグ及びメタデータキャッシュインデックスを含み、
    前記SRAMに保存された前記メタデータキャッシュに存在してマッチングするメタデータキャッシュエントリー(matching metadata cache entry)の存在に基づいて、メタデータキャッシュヒット(hit)を判定するステップと、
    ここで、前記マッチングするメタデータキャッシュエントリーは前記メタデータキャッシュタグ及び前記DRAMキャッシュタグをペア(pair)で含み、
    前記メタデータキャッシュヒットの場合、前記メタデータキャッシュエントリーの前記DRAMキャッシュタグを使用し、前記DRAMキャッシュに含まれた前記メタデータに対するアクセスを省略して、前記DRAMキャッシュに含まれたデータのキャッシュされたコピーからデータを獲得するステップと、
    記DRAMキャッシュから獲得された前記データのキャッシュされたコピーを前記ホストコンピュータに返還するステップと、
    前記SRAMに保存された前記メタデータキャッシュの前記マッチングする前記メタデータキャッシュエントリーが存在しないことに基づいてメタデータキャッシュミスを判定するステップと、
    前記メタデータキャッシュミスに基づいて、前記ブルームフィルターによってブルームフィルターテストを遂行し、前記ブルームフィルターテストの結果に基づいてDRAMキャッシュミスまたは潜在的なDRAMキャッシュヒットを判定するステップと、を包含する、ことを特徴とする動作方法。
  2. 前記メタデータキャッシュヒットを判定するステップは、
    前記メタデータキャッシュに存在して前記マッチングする前記メタデータキャッシュエントリーの存在を判定するため、前記メタデータアドレスの前記メタデータキャッシュタグを一つ以上の前記メタデータキャッシュエントリーの前記メタデータキャッシュタグと比較するステップをさらに包含する、ことを特徴とする請求項1に記載の動作方法。
  3. 前記DRAMキャッシュに含まれた前記メタデータに対するアクセスを省略して、前記DRAMキャッシュミスに基づいて前記フラッシュメモリーに保存された複数のデータからデータを獲得するステップと、
    そして前記フラッシュメモリーから獲得された前記データを前記ホストコンピュータに返還するステップと、をさらに包含する、ことを特徴とする請求項に記載の動作方法。
  4. 前記メタデータキャッシュタグの比較と前記ブルームフィルターテストは、同時に遂行される、ことを特徴とする請求項に記載の動作方法。
  5. 前記メタデータキャッシュミスと前記潜在的なDRAMキャッシュヒットに基づいて、前記DRAMキャッシュに含まれた前記メタデータにアクセスするステップと、
    前記ホストアドレスの前記DRAMキャッシュタグと前記DRAMキャッシュに含まれた前記メタデータの比較に基づいて、前記DRAMキャッシュに前記データが保存されたか否かを判定するステップと、
    前記ホストアドレスの前記DRAMキャッシュタグにマッチングするエントリーが、前記DRAMキャッシュに含まれた前記メタデータに存在する場合、前記DRAMキャッシュから獲得されたデータのキャッシュされたコピーを前記ホストコンピュータに返還するステップと、
    前記ホストアドレスの前記DRAMキャッシュタグにマッチングするエントリーが前記DRAMキャッシュに含まれた前記メタデータに存在しない場合、前記フラッシュメモリーから前記データを獲得し、前記フラッシュメモリーから獲得された前記データを前記ホストコンピュータに返還するステップと、をさらに包含する、ことを特徴とする請求項に記載の動作方法。
  6. 前記ブルームフィルターは複数のエントリーを含むブルームフィルターアレイ(array)を含み、
    前記ブルームフィルターテストは前記ブルームフィルターアレイにハッシュ関数(hash function)を適用し、肯定結果又は否定結果を提供する、ことを特徴とする請求項に記載の動作方法。
  7. 前記ブルームフィルターアレイを削除するか又は前記ブルームフィルターアレイを再設定するステップをさらに包含する、ことを特徴とする請求項6に記載の動作方法。
  8. 前記メタデータキャッシュヒットの比率が臨界値より高い場合、前記ブルームフィルターを使用しないように前記ハイブリッドメモリーモジュールのキャッシュ制御器をプログラムするステップをさらに包含する、ことを特徴とする請求項1に記載の動作方法。
  9. 前記ハイブリッドメモリーモジュールはキャッシュ制御器を含み、
    前記メタデータキャッシュヒットの比率が臨界値より低い場合、前記メタデータキャッシュを使用しないように前記キャッシュ制御器をプログラムするステップをさらに包含する、ことを特徴とする請求項1に記載の動作方法。
  10. 低電力の条件で、前記ブルームフィルター及び前記メタデータキャッシュを順次にアクセスするステップをさらに包含する、ことを特徴とする請求項1に記載の動作方法。
  11. フラッシュメモリーと、
    前記フラッシュメモリーに保存された複数のデータのキャッシュされたコピーと前記複数のデータのキャッシュされたコピーに対応するメタデータを含むDRAMキャッシュと、
    前記DRAMキャッシュに含まれた前記メタデータの一部のキャッシュされたコピーを含むメタデータキャッシュとブルームフィルターを保存するSRAMと、
    ホストコンピュータにインターフェースを提供するメモリーインターフェースと、
    前記DRAMキャッシュに含まれたキャッシュされたコピー及び前記フラッシュメモリーに保存された複数のデータにアクセスするメモリーアクセス制御器と、
    前記DRAMキャッシュに対するアクセスを制御するDRAM制御器と、
    前記フラッシュメモリーに対するアクセスを制御するフラッシュ制御器と、
    前記ホストコンピュータから受信したデータアクセス要請で要請されたデータに対応する前記DRAMキャッシュに含まれたキャッシュされたデータの存在を判定するキャッシュ制御器と、を含み、
    前記キャッシュ制御器は、
    前記メモリーインターフェースを経由して前記ホストコンピュータから受信した前記データアクセスの要請を復号化してホストアドレスを獲得し、前記ホストアドレスはDRAMキャッシュタグ及びDRAMキャッシュインデックスを含み、
    前記DRAMキャッシュインデックスからメタデータアドレスを獲得し、前記メタデータアドレスはメタデータキャッシュタグ及びメタデータキャッシュインデックスを含み、
    前記SRAMに保存された前記メタデータキャッシュに存在してマッチングするメタデータキャッシュエントリーの存在に基づいて、メタデータキャッシュヒットを判定し、前記マッチングするメタデータキャッシュエントリーは前記メタデータキャッシュタグ及び前記DRAMキャッシュタグのペアを含み、
    前記DRAMキャッシュに含まれた前記メタデータに対するアクセスを省略して、前記DRAM制御器に、前記マッチングするメタデータキャッシュエントリーの前記DRAMキャッシュタグを使ってメタデータキャッシュヒットに基づき、前記DRAMキャッシュに含まれたキャッシュされたコピーからデータを獲得するように指示し、
    前記メモリーアクセス制御器は前記DRAMキャッシュから獲得された前記データのキャッシュされたコピーを前記ホストコンピュータに返還するように構成され
    前記キャッシュ制御器は、さらに前記SRAMに保存されたメタデータキャッシュの前記マッチングするメタデータキャッシュが存在しないことに基づいてメタデータキャッシュミスを判定し、前記ブルームフィルターによってブルームフィルターテストを行い、前記ブルームフィルターテストの結果に基づいてDRAMキャッシュミス、または潜在的なDRAMキャッシュヒットを判定するよう構成されることを特徴とするハイブリッドメモリーモジュール。
  12. 前記キャッシュ制御器は、前記メタデータキャッシュに存在して前記マッチングする前記メタデータキャッシュエントリーの前記存在を判定するため、前記メタデータアドレスの前記メタデータキャッシュタグと一つ以上の前記メタデータキャッシュエントリーの前記メタデータキャッシュタグを比較するように、さらに構成される、ことを特徴とする請求項11に記載のハイブリッドメモリーモジュール。
  13. 記キャッシュ制御器は、
    記DRAMキャッシュミスの場合、前記DRAMキャッシュに含まれたメタデータに対するアクセスを省略し、前記フラッシュ制御器に前記フラッシュメモリーに保存された前記複数のデータから前記データを獲得するように指示し、
    記メモリーアクセス制御器は前記フラッシュメモリーから獲得された前記データを前記ホストコンピュータに返還するように、さらに構成される、ことを特徴とする請求項12に記載のハイブリッドメモリーモジュール。
  14. 前記キャッシュ制御器は、前記メタデータキャッシュタグの比較と前記ブルームフィルターテストを同時に遂行する、ことを特徴とする請求項11に記載のハイブリッドメモリーモジュール。
  15. 前記メタデータキャッシュミスと前記潜在的なDRAMキャッシュヒットに基づいて、
    前記DRAM制御器は、
    前記DRAMキャッシュの前記メタデータにアクセスし、
    前記ホストアドレスの前記DRAMキャッシュタグと前記DRAMキャッシュに保存された前記メタデータの比較に基づいて、前記DRAMキャッシュに前記データが保存されたか否かを判定するように構成され、
    前記ホストアドレスの前記DRAMキャッシュタグにマッチングするエントリーが、前記DRAMキャッシュに含まれた前記メタデータに存在する場合、前記DRAM制御器は前記DRAMキャッシュに含まれた前記キャッシュデータを獲得するように構成され、前記メモリーアクセス制御器は前記DRAMキャッシュから獲得された前記データのキャッシュされたコピーを前記ホストコンピュータに返還するように構成され、
    前記ホストアドレスの前記DRAMキャッシュタグにマッチングするエントリーが、前記DRAMキャッシュに含まれた前記メタデータに存在しない場合、前記フラッシュ制御器は前記フラッシュメモリーから前記データを獲得するように構成され、前記メモリーアクセス制御器は前記フラッシュメモリーから獲得された前記データを前記ホストコンピュータに返還するように構成される、ことを特徴とする請求項11に記載のハイブリッドメモリーモジュール。
  16. 前記ブルームフィルターは複数のエントリーを含むブルームフィルターアレイを含み、前記ブルームフィルターテストは前記ブルームフィルターアレイにハッシュ関数を適用し、肯定結果又は否定結果を提供する、ことを特徴とする請求項11に記載のハイブリッドメモリーモジュール。
  17. 前記キャッシュ制御器は、前記ブルームフィルターアレイを削除するか又は前記ブルームフィルターアレイを再設定するように、さらに構成される、ことを特徴とする請求項16に記載のハイブリッドメモリーモジュール。
  18. 前記キャッシュ制御器は、前記メタデータキャッシュヒットの比率が臨界値より高い場合、前記ブルームフィルターを使用しないようにプログラムされる、ことを特徴とする請求項11に記載のハイブリッドメモリーモジュール。
  19. 前記キャッシュ制御器は、前記メタデータキャッシュヒットの比率が臨界値より低い場合、前記メタデータキャッシュを使用しないようにプログラムされる、ことを特徴とする請求項11に記載のハイブリッドメモリーモジュール。
  20. 前記キャッシュ制御器は、低電力の条件で、前記ブルームフィルターと前記メタデータキャッシュに順次にアクセスするように構成される、ことを特徴とする請求項11に記載のハイブリッドメモリーモジュール。
JP2018023874A 2017-02-15 2018-02-14 ハイブリッドメモリーモジュール及びその動作方法 Active JP6916751B2 (ja)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201762459414P 2017-02-15 2017-02-15
US62/459414 2017-02-15
US15/587286 2017-05-04
US15/587,286 US10282294B2 (en) 2017-02-15 2017-05-04 Mitigating DRAM cache metadata access overhead with SRAM metadata cache and bloom filter

Publications (3)

Publication Number Publication Date
JP2018133086A JP2018133086A (ja) 2018-08-23
JP2018133086A5 JP2018133086A5 (ja) 2021-04-01
JP6916751B2 true JP6916751B2 (ja) 2021-08-11

Family

ID=63106399

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018023874A Active JP6916751B2 (ja) 2017-02-15 2018-02-14 ハイブリッドメモリーモジュール及びその動作方法

Country Status (5)

Country Link
US (1) US10282294B2 (ja)
JP (1) JP6916751B2 (ja)
KR (1) KR102231792B1 (ja)
CN (1) CN108427647B (ja)
TW (1) TWI744457B (ja)

Families Citing this family (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11397687B2 (en) * 2017-01-25 2022-07-26 Samsung Electronics Co., Ltd. Flash-integrated high bandwidth memory appliance
US10402337B2 (en) * 2017-08-03 2019-09-03 Micron Technology, Inc. Cache filter
US11169920B2 (en) 2018-09-17 2021-11-09 Micron Technology, Inc. Cache operations in a hybrid dual in-line memory module
US10761986B2 (en) * 2018-10-23 2020-09-01 Advanced Micro Devices, Inc. Redirecting data to improve page locality in a scalable data fabric
US20220012329A1 (en) * 2018-11-12 2022-01-13 Dover Microsystems, Inc. Systems and methods for metadata encoding
TWI688859B (zh) 2018-12-19 2020-03-21 財團法人工業技術研究院 記憶體控制器與記憶體頁面管理方法
CN109800185B (zh) * 2018-12-29 2023-10-20 上海霄云信息科技有限公司 一种数据存储系统中的数据缓存方法
KR20200092710A (ko) * 2019-01-25 2020-08-04 주식회사 리얼타임테크 이기종 스토리지 기반의 데이터베이스 관리시스템에서 하이브리드 색인장치
US10853165B2 (en) * 2019-02-21 2020-12-01 Arm Limited Fault resilient apparatus and method
US11061670B2 (en) * 2019-03-05 2021-07-13 Marvell Asia Pte, Ltd. Dual-interface flash memory controller with execute-in-place cache control
US11537521B2 (en) 2019-06-05 2022-12-27 Samsung Electronics Co., Ltd. Non-volatile dual inline memory module (NVDIMM) for supporting dram cache mode and operation method of NVDIMM
CN110688062B (zh) * 2019-08-26 2021-03-30 华为技术有限公司 一种缓存空间的管理方法及装置
EP3812892B1 (en) 2019-10-21 2022-12-07 ARM Limited Apparatus and method for handling memory load requests
TWI739227B (zh) * 2019-12-03 2021-09-11 智成電子股份有限公司 避免多餘記憶體存取的系統單晶片模組
GB2594732B (en) * 2020-05-06 2022-06-01 Advanced Risc Mach Ltd Adaptive load coalescing
CN113934361B (zh) * 2020-06-29 2024-05-03 伊姆西Ip控股有限责任公司 用于管理存储系统的方法、设备和计算机程序产品
CN112084216B (zh) * 2020-09-16 2021-05-11 上海嗨普智能信息科技股份有限公司 基于布隆过滤器的数据查询系统
US11914517B2 (en) 2020-09-25 2024-02-27 Advanced Micro Devices, Inc. Method and apparatus for monitoring memory access traffic
CN114095585B (zh) * 2022-01-21 2022-05-20 武汉中科通达高新技术股份有限公司 数据传输方法、装置、存储介质及电子设备
US11886291B1 (en) * 2022-07-21 2024-01-30 Dell Products L.P. Providing cache line metadata over multiple cache lines
US20240054072A1 (en) * 2022-08-10 2024-02-15 Astera Labs, Inc. Metadata-caching integrated circuit device
CN116303126B (zh) * 2023-03-22 2023-09-01 摩尔线程智能科技(北京)有限责任公司 缓存、数据的处理方法及电子设备
CN117217977A (zh) * 2023-05-26 2023-12-12 摩尔线程智能科技(北京)有限责任公司 Gpu的数据访问处理方法、装置及存储介质

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6920477B2 (en) * 2001-04-06 2005-07-19 President And Fellows Of Harvard College Distributed, compressed Bloom filter Web cache server
US20080155229A1 (en) * 2006-12-21 2008-06-26 Kevin Scott Beyer System and method for generating a cache-aware bloom filter
US20110276744A1 (en) 2010-05-05 2011-11-10 Microsoft Corporation Flash memory cache including for use with persistent key-value store
US8478934B2 (en) 2010-07-19 2013-07-02 Lsi Corporation Managing extended RAID caches using counting bloom filters
US20130173853A1 (en) 2011-09-26 2013-07-04 Nec Laboratories America, Inc. Memory-efficient caching methods and systems
US8868843B2 (en) 2011-11-30 2014-10-21 Advanced Micro Devices, Inc. Hardware filter for tracking block presence in large caches
US9268705B2 (en) * 2012-02-23 2016-02-23 Marvell International Ltd. Data storage device and method of managing a cache in a data storage device
US9389965B1 (en) 2012-03-12 2016-07-12 Emc Corporation System and method for improving performance of backup storage system with future access prediction
US10474584B2 (en) * 2012-04-30 2019-11-12 Hewlett Packard Enterprise Development Lp Storing cache metadata separately from integrated circuit containing cache controller
US9032152B2 (en) * 2013-03-22 2015-05-12 Applied Micro Circuits Corporation Cache miss detection filter
US9552301B2 (en) * 2013-07-15 2017-01-24 Advanced Micro Devices, Inc. Method and apparatus related to cache memory
US9524235B1 (en) 2013-07-25 2016-12-20 Sandisk Technologies Llc Local hash value generation in non-volatile data storage systems
US9396112B2 (en) * 2013-08-26 2016-07-19 Advanced Micro Devices, Inc. Hierarchical write-combining cache coherence
CN104035887B (zh) * 2014-05-22 2017-10-31 中国科学院计算技术研究所 一种基于精简配置系统的块设备缓存装置及其方法
CN104090852B (zh) * 2014-07-03 2017-04-05 华为技术有限公司 管理混合缓存的方法及设备
US10268584B2 (en) * 2014-08-20 2019-04-23 Sandisk Technologies Llc Adaptive host memory buffer (HMB) caching using unassisted hinting
CA2876466C (en) 2014-12-29 2022-07-05 Ibm Canada Limited - Ibm Canada Limitee Scan optimization using bloom filter synopsis
KR102403202B1 (ko) 2015-03-13 2022-05-30 삼성전자주식회사 메타 데이터 관리자를 포함하는 메모리 시스템 및 동작 방법
CN104809179B (zh) * 2015-04-16 2018-10-02 华为技术有限公司 访问哈希表的装置和方法

Also Published As

Publication number Publication date
TWI744457B (zh) 2021-11-01
KR20180094469A (ko) 2018-08-23
TW201832086A (zh) 2018-09-01
CN108427647A (zh) 2018-08-21
CN108427647B (zh) 2023-08-08
KR102231792B1 (ko) 2021-03-25
JP2018133086A (ja) 2018-08-23
US20180232310A1 (en) 2018-08-16
US10282294B2 (en) 2019-05-07

Similar Documents

Publication Publication Date Title
JP6916751B2 (ja) ハイブリッドメモリーモジュール及びその動作方法
US8370575B2 (en) Optimized software cache lookup for SIMD architectures
US7426626B2 (en) TLB lock indicator
US8745334B2 (en) Sectored cache replacement algorithm for reducing memory writebacks
US6584549B2 (en) System and method for prefetching data into a cache based on miss distance
US8566607B2 (en) Cryptography methods and apparatus used with a processor
US8185692B2 (en) Unified cache structure that facilitates accessing translation table entries
US8402248B2 (en) Explicitly regioned memory organization in a network element
US7472253B1 (en) System and method for managing table lookaside buffer performance
JP2018133086A5 (ja)
JP2018163659A (ja) 逆キャッシュテーブルを用いるハードウェアベースのマップアクセラレーション
US8583874B2 (en) Method and apparatus for caching prefetched data
US20140143499A1 (en) Methods and apparatus for data cache way prediction based on classification as stack data
JP2019096309A (ja) メンテナンス動作の実行
KR101109210B1 (ko) 데이터 액세스 위반을 검출하기 위한 방법 및 장치
US7549035B1 (en) System and method for reference and modification tracking
US20080301372A1 (en) Memory access control apparatus and memory access control method
US6810473B2 (en) Replacement algorithm for a replicated fully associative translation look-aside buffer
JP2006018841A (ja) さまざまなメモリラインサイズに適応的に対応可能なキャッシュメモリシステムおよび方法
US20220398198A1 (en) Tags and data for caches
JP2016057763A (ja) キャッシュ装置、及びプロセッサ
JP2007286990A (ja) キャッシュメモリ装置及びそれに用いるキャッシュメモリ制御方法並びにそのプログラム
US7664919B2 (en) Cache system
US11500638B1 (en) Hardware compression and decompression engine
US7546439B1 (en) System and method for managing copy-on-write faults and change-protection

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210209

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20210209

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20210209

A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20210224

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20210309

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210608

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20210629

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210701

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: 20210713

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20210716

R150 Certificate of patent or registration of utility model

Ref document number: 6916751

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150