JP2018022487A - メモリモジュール及びその動作方法 - Google Patents

メモリモジュール及びその動作方法 Download PDF

Info

Publication number
JP2018022487A
JP2018022487A JP2017146495A JP2017146495A JP2018022487A JP 2018022487 A JP2018022487 A JP 2018022487A JP 2017146495 A JP2017146495 A JP 2017146495A JP 2017146495 A JP2017146495 A JP 2017146495A JP 2018022487 A JP2018022487 A JP 2018022487A
Authority
JP
Japan
Prior art keywords
deduplication
memory module
memory
deduplication ratio
hash
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
JP2017146495A
Other languages
English (en)
Other versions
JP6757299B2 (ja
JP2018022487A5 (ja
Inventor
宏 忠 ツェン
Hongzhong Zheng
宏 忠 ツェン
マラディ クリシュナ
Malladi Krishna
マラディ クリシュナ
迪 民 牛
Dimin Niu
迪 民 牛
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 JP2018022487A publication Critical patent/JP2018022487A/ja
Publication of JP2018022487A5 publication Critical patent/JP2018022487A5/ja
Application granted granted Critical
Publication of JP6757299B2 publication Critical patent/JP6757299B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • G06F3/0641De-duplication techniques
    • 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/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • 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
    • 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/0811Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
    • 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/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
    • 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/0873Mapping of cache memory to specific storage devices or parts thereof
    • 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/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • 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/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4282Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
    • 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/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0608Saving storage space on storage systems
    • 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/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • 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/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/065Replication mechanisms
    • 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/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • 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/0683Plurality of storage devices
    • 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/1041Resource optimization
    • G06F2212/1044Space efficiency improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/0026PCI express

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Computer Security & Cryptography (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Memory System (AREA)

Abstract

【課題】プログラム可能である重複除去比率制御メカニズムを提供することができるメモリ重複除去を遂行するメモリモジュール及びその動作方法を提供する。
【解決手段】メモリモジュールは、メモリモジュールにおいて、プログラミング(programming)レジスター、重複除去比率(deduplication ratio)コントロールロジック322、及び重複除去エンジン325を含むロジック320と、ホストコンピュータへのホストインターフェイスと、を有する。プログラミングレジスターは、メモリモジュールの最大重複除去比率を格納し、重複除去比率コントロールロジックは、最大重複除去比率にしたがってメモリモジュールの重複除去比率を制御するように構成される。重複除去比率は、ホストコンピュータによってプログラム可能である。
【選択図】図3

Description

本発明はメモリシステムに関し、特に、メモリ重複除去を遂行するメモリモジュール及びその動作方法に関する。
メモリシステムと関連して、重複除去(deduplication)は、重複されたデータを除去してストレージ要求を減少させるための技術を指す。
ただ1つの固有(unique)のデータのインスタンス(instance)のみが実際にSSD(Solid−State Drive)及びHDD(Hard Disk Drive)のようなストレージ媒体上に維持される。
重複データは該当データの唯一のインスタンスに対するポインタで交替される。
重複除去されたメモリに対するインラインメモリ重複除去スキームは重複除去されないメモリと比較してビット当たり費用(cost−per−bit)を減少させると共に容量面での長所を提供することができる。
一般的なメモリ重複除去スキームは、重複除去エンジンがホストコンピュータのCPU及び/又はメモリコントローラ(MC:Memory Controller)と共に集積されたCPU中心のアプローチを採択する。
このような重複除去スキームは、重複除去アルゴリズム(algorithm)を具現するための単純な多重方向(multiple−way)ハッシュ(hash)アレイをしばしば使用する。
しかしながら、ハッシュアレイが満たされると、データは重複除去されないオーバーフロー領域内に配置されて重複除去レベルを減少させてしまう。
また追加的には、高い重複除去比率は、重複除去されたメモリシステムのメモリ構成要素の消費を潜在的に減少させることができる。
米国特許第8,918,605号明細書 米国特許第8,825,617号明細書 米国特許第8,688,651号明細書 米国特許第9,026,503号明細書 米国特許第8,930,612号明細書 米国特許第8,924,663号明細書 米国特許第9,122,407号明細書 米国特許第9,075,710号明細書 米国特許出願公開第2014/00281361号明細書 米国特許出願公開第2015/0039571号明細書 米国特許出願公開第2014/0244599号明細書
John Peter Stevenson、"Fine−Grain In−Memory Deduplication for Large−Scale Workloads"、Stanford University、December 2013
本発明は上記従来のメモリ重複除去スキームにおける課題点に鑑みてなされたものであって、本発明の目的は、プログラム可能である重複除去比率制御メカニズムを提供することができるメモリ重複除去を遂行するメモリモジュール及びその動作方法を提供することにある。
上記目的を達成するためになされた本発明によるメモリモジュールは、メモリモジュールにおいて、プログラミング(programming)レジスター、重複除去比率(deduplication ratio)コントロールロジック、及び重複除去エンジンを含むロジックと、ホストコンピュータへのホストインターフェイスと、を有し、前記プログラミングレジスターは、前記メモリモジュールの最大重複除去比率を格納し、前記重複除去比率コントロールロジックは、前記最大重複除去比率にしたがって前記メモリモジュールの重複除去比率を制御するように構成され、前記重複除去比率は、前記ホストコンピュータによってプログラム可能であることを特徴とする。
上記目的を達成するためになされた本発明によるメモリモジュールの動作方法は、プログラミングレジスターと、重複除去比率コントロールロジックと、重複除去エンジンとを含むロジックをメモリモジュール内に具現する段階と、前記プログラミングレジスター内に前記メモリモジュールの最大重複除去比率を格納する段階と、ホストコンピュータによって重複除去比率をプログラミングする段階と、前記最大重複除去比率にしたがって、前記メモリモジュールの前記重複除去比率を調節する段階と、を有することを特徴とする。
本発明に係るメモリモジュール及びその動作方法によれば、重複除去メモリシステムのためのプログラム可能である重複除去比率制御メカニズムを提供することができる。
また、本発明の重複除去比率制御メカニズムはターゲットアプリケーションにしたがって多様な重複除去比率をプログラムすることができる。
したがって、重複除去メモリシステムのメモリ容量を最大化することができるという効果がある。
従来の重複除去システムを詳細に示すブロック図である。 図1の重複除去システム内で使用されるハッシュテーブルを例示的に示す図である。 本発明の実施形態に係る重複除去メモリシステムの例示的な基本設計概念を示す図である。 本発明の実施形態に係る重複除去メモリシステムを例示的に示すブロック図である。 本発明の実施形態に係る例示的なハッシュテーブルメモリを示す図である。 本発明の実施形態に係る例示的な重複除去書込み工程を説明するためのフローチャートである。 本発明の実施形態に係る重複除去メモリシステムの書込み工程に対する例示的なフローチャートである。 本発明の実施形態に係る重複除去メモリシステムの読出し工程に対する例示的なフローチャートである。
次に、本発明に係るメモリモジュール及びその動作方法を実施するための形態の具体例を図面を参照しながら説明する。
本明細書で開示した特徴及び教示の各々は、メモリシステムに対するプログラム可能な(programmable)重複除去比率を制御するためのシステム及び方法を提供するための他の特徴及び教示と共に又は分離されて使用することができる。
このような追加的な特徴及び教示が分離されるか、或いは結合されて利用される代表的な例は添付された図面を参照して詳細に説明する。
図面は必ずしも一定な比率で図示されなく、一般的に、類似の構造や機能の要素は図面にわたって例示的な目的のために類似の参照番号で表示する。図面は本明細書で記述される多様な実施形態の説明を容易にするためのものである。図面は本明細書に開示された教示のすべての様相を記述しなく、請求項の保護範囲を制限しない。
このような詳細な説明は単なる本教示の側面を実施するための技術分野で詳細な知識を有する者を教示するためのものであり、請求項の範囲を制限しない。したがって、詳細な説明に上述された特徴の組み合わせは広い意味で教示を実施する必要がなくともよく、代わりに本教示、特に代表的な実施形態を説明するために単なる教示する。
以下の説明で、説明の目的のみに、特定名称が本発明の完全な理解を提供するために説明する。
しかし、このような特定細部事項は本発明の思想を実施するために必要ではないことは当業者に理解されることができる。
詳細な説明の幾つかの部分は、アルゴリズム及びコンピュータメモリ内データビットに対する動作のシンボル表現の側面で提供される。
これらのアルゴリズム説明及び表現は、他の分野の当業者に作業の実体を効果的に伝達するために、データ処理分野の当業者によって使用される。
ここで、アルゴリズムは、一般的に所望する結果に至る段階に対する一貫性ある順序である。
段階は、物理的量の物理的操作が必要であるものである。一般的に、必須的ではないが、このような量は格納、伝達、結合、比較、及び異なって操作されることができる電気又は磁気信号の形態を取る。
このような信号をビット、値、要素、シンボル、特徴、用語、数等として指称することが主に共通的な使用の理由でしばしば便利であることが立証された。
しかし、これら及び類似の用語の全ては適切な物理量と関連され、単なるこのような量に適用される便利なラベルであることを留意しなければならない。
具体的には以下の説明から明確であるように、説明で、このような“処理”、“コンピューティング”、“計算”、“決定”、“表示”等のような用語を使用する論議はコンピュータシステム又はコンピュータレジスター及びメモリ内で物理的(電気的)量として現れるデータをコンピュータシステムメモリ又はレジスター又は他の情報ストレージ、伝送又は表示装置内で物理的量として現れる類似な他のデータに操作及び変形する類似な電子コンピューティング装置の活動及び工程を示すものと理解される。
本明細書で説明するアルゴリズムは、本質的に任意の特定コンピュータ又は他の装置と関連されるものではない。
多様な一般的な目的のシステム、コンピュータサーバー、又は個人用コンピュータは、本明細書の教示にしたがうプログラムと共に使用されるか、或いは要求された方法段階を遂行するためのより特殊化された装置を構成することが便利である。
このような多様なシステムのために要求される構造は以下の説明で示す。
多様なプログラミング言語が本明細書で記載されたように発明の教示を具現するのに使用されてもよいことを理解すべきである。
また、代表的な例に対する多様な特徴及び従属項は本発明の教示に対する有用な追加的な実施形態を提供するために明示的ではない、そして列挙されない方式に結合されることもあり得る。
また、すべての値の範囲又は独立体のグループの暗示はすべての可能な中間値又は当該発明を制限する目的のみならず、本来の開示目的のための中間独立体を開示することが言及される。
また、明示的な基準及び図面に図示された構成要素の形状は本明細書で実施される方式を理解できる設計されるが、寸法及び実施形態に示した形状に限定されないことを留意する。
図1は、従来の重複除去システムを詳細に示すブロック図である。
細密なインメモリ重複除去を具現するための詳細な事項は、非特許文献1に開示されている。
重複除去システム100は、ホストコンピュータ160及び複数のDDRメモリモジュール(150_0〜150_(n−1))を含む。
ホストコンピュータ160はマルチコア(110_0〜110_(n−1))を有するCPU、データキャッシュ(L1D)112、及び命令語(instruction)キャッシュ(L1I)113を含むレベル1キャッシュ(L1)111、レベル2キャッシュ(L2)114、DTB(Direct Translation Buffer)110、重複除去されたキャッシュ(DDC:Deduplicated Cache)120、及びメモリコントローラ130を含む。
重複除去システム100は複数のコアを有するCPUを含むシステム内に具現することができる。
DDC120は、重複除去されたメモリのキャッシュされたバーションを示す。
DDC120は、一般的なLLC(Last Level Cache)と同一のインターフェイスを露呈(expose)する。
しかし、DDC120は、変換(translation)ライン、データライン、及び参照カウントを明示的にキャッシュする。
DDC120は、複数のDDRメモリモジュール(150_0〜150_(n−1))へのメモリアクセスの数を減少させる。
LLC(Last Level Cache)内にキャッシュされた特定データとメモリモジュールとに書き込まれた値が古い場合、読出し要請がL1又はL2キャッシュから提供され、該当L1又はL2キャッシュは、最も最近に書込みを遂行したCPUコアに属する。
図2は、図1の重複除去システム内で使用されるハッシュテーブルを例示的に示す図である。
ハッシュテーブル200は“m”個のハッシュバケット(bucket)を含むハッシュアレイを含む。
ハッシュバケットの各々は“n”個のウェイ(way)又はスロット(slot)を含む。ここで、「ウェイ」及び「スロット」という用語は相互交換可能である。
ハッシュ関数“h”はハッシュバケットに物理ラインID(PLID:Physical Line ID)をインデックス(index)するために「(log m)ビット」のハッシュを生成する。
ライン“C”をハッシュアレイに挿入するために、h(“C”)の値が計算され、ハッシュテーブル内のh(“C”)の“T”列(row)はウェイがライン“C”を挿入可能であるか否かを確認する。
図2に示すように、ハッシュテーブル200の総容量は、「“m”(ハッシュバケット)דn”(データライン)」である。
署名(signature)及び参照カウントラインの各々は、ハッシュバケットの1つのウェイを占めることができる。
全体的に、“m”ハッシュバケツの署名ライン及び参照カウントラインの各々は、ハッシュアレイのカラム全体を占めることができる。
署名及び参照カウントは、各々のライン内に様々な数量(quantity)をパック(pack)するのに十分に小さい。
例えば、ハッシュアレイは、64ウェイを含み、署名は8ビットのラインに合わせるための8ビットである。
この場合、ハッシュアレイのラインは64バイト(64x8ビット)である。
他の例として、署名はXビットであり、参照カウントはYビットであり、ハッシュアレイの物理ラインは64バイトである。
ウェイの数が“n”である場合、総物理ライン“n/((64x8)/X)”がn−ウェイバケットの署名カウントの各々に対して必要である。
同様に、物理ライン“n/((64x8)/Y)”はn−ウェイバケットの参照カウントの各々に対して必要である。
総合して、ハッシュアレイは“nx{1+1/((64x8)/X)+1/((64x8)/Y)}”ウェイを含む。
これはすべての参照カウント及び署名ラインがハッシュバケットに対して1つのラインにパックになるように提供されたハッシュテーブル内のカラムに対応する。
従来の重複除去されたメモリで、CPUは物理メモリに対する直接アクセスを有しない。
代わりに、ホストコンピュータのメモリコントローラは、本例では64バイトのメモリラインのアレイのような物理メモリを管理することができる。
物理ラインの各々は、各々の物理ラインID(PLID)によって識別することができる。
PLIDは、変換(translation)アレイ、ハッシュアレイ、及びオーバーフローの3つの領域に分けられる。
PLIDは、ハッシュ関数“h”を利用してハッシュアレイにインデックスする。
例えば、PLIDは次の具現例を有することができる。

PLID=overflow flag |hash bits| way bits
ハッシュビットは、ハッシュバケットがハッシュアレイにインデックスするようにすることができる。
ウェイビットは、ウェイインデックスに与えられる。
ポイントされているデータがハッシュテーブル200内にある場合、オーバーフローフラッグ(overflowflag)は「0」に設定される。オーバーフローフラッグが「1」に設定される場合、PLID内に残るビットはオーバーフローアレイに対するインデックスとして使用される。
PLIDの幅(width)は、ハッシュテーブル200のサイズによって決定される。
図2に示したハッシュテーブル200で、ハッシュビット及びウェイビットに対して“log2m+log2n”ビットが必要である。オーバーフローフラッグに対する追加的なビットと共に、PLIDの幅は次のように計算される。

|PLID|=1+log2m+log2n
本明細書は重複除去メモリシステムのためのプログラム可能な重複除去比率制御メカニズムを提供するシステム及び方法を提供する。
重複除去メモリシステムのメモリ容量を最大化するための変更可能な(configurable)重複除去アルゴリズムを使用して、重複除去比率制御メカニズムは一般的な重複除去メモリシステムのCPU中心の接近とは対照的にメモリ中心の接近を採択する。
本発明の重複除去比率制御メカニズムは、多様な重複除去メモリ製品(例えば、在庫管理単位(SKUs:Stock Keeping Units))に対する最大重複除去比率を制限することができ、プログラムされた重複除去比率にしたがって重複除去メモリ製品を構成することができる。
重複除去メモリシステムに対する意図されたターゲットアプリケーション(例えば、データベース)にしたがって、多様な重複除去比率が同一の製品にプログラムすることができる。
図3は、本発明の実施形態に係る重複除去メモリシステムの例示的な基本設計概念を示す図である。
重複除去メモリシステム300は、ホストコンピュータ360及び重複除去メモリ310を含む。
重複除去メモリ310は、重複除去比率レジスター321、重複除去比率コントロールロジック322、及び集積された重複除去エンジン325を含むSoC(System−on−Chip)ロジック320を含む。
重複除去比率レジスター321は、ホストコンピュータによってプログラム可能であり、重複除去メモリ310の最大重複除去比率を格納する。
重複除去比率レジスター321は、恒久的な(permanent)ハードウェアプログラミング(例えば、ヒューズ設定)、及びEEPROMに書き込み及びEEPROMから読み出すことを含む何らかのプログラミング方法によってもプログラムされる。
但し、本発明はこれに制限されない。
重複除去比率レジスター321は、重複除去メモリ310の製造の中にプログラムされるか、或いはシステム管理要求事項にしたがう製造の後(post−production)の時間(例えば、システムブート時間)にプログラムされ得る。
重複除去比率レジスター321に格納されたプログラムされた最大重複除去比率にしたがって重複除去メモリ310の仮想容量を制限するために、重複除去比率コントロールロジック322は、アドレス(address)LUT(Lookup Table)のテーブルの大きさを調節する。
重複除去比率コントロールロジック322は、プログラムされた最大重複除去比率及び/又は重複除去メモリ310の仮想容量を外部要請者(requestor)のみでなく、内部重複除去エンジン325に提供する。
一実施形態として、最大重複除去比率は、重複除去メモリ310の物理容量に重複除去比率を乗じて計算される。
重複除去メモリ310の最大仮想容量に基づいて、重複除去エンジン325は重複除去メモリ310への読み出し/書き込み要請を管理する。
一実施形態によれば、重複除去メモリ310は、ハッシュテーブルメモリ350を含む。
ハッシュテーブルメモリ350は、アドレスLUTメモリ(ALUTM:Address LUT Memory)351、ハッシュテーブルメモリ(HTM:Hash Table Memory)352、及びバッファメモリ(BM:Buffer Memory)353を含む。
アドレスLUTメモリ351は、装置アドレスとルックアップアドレスとの間のマッピング情報を格納する。
ハッシュテーブルメモリ352は、ハッシュテーブル内に値を格納する。
バッファメモリ353は、SoCメモリバッファ/キャッシュと仮想密度オーバープロビジョン(over−provision)管理(HTMオーバーフロー)を提供するための予約されたメモリ領域である。
図4は、本発明の実施形態に係る重複除去メモリシステムを例示的に示すブロック図である。
重複除去メモリシステム400は、メモリ容量を最大化するための変更可能な(configurable)重複除去アルゴリズムを使用するメモリ中心のデータ重複除去を提供する。
本実施形態では、重複除去メモリシステム400は、ホストコンピュータ410、DRAM DIMM(Dual In−line Memory Module)420、及び重複除去メモリモジュール430を含む。
ホストコンピュータ410は、オペレーティングシステム(OS:Operating System)411(例えば、Linux(登録商標))を実行し、そしてカーネルモジュール411を使用するユーザーアプリケーションを実行するように構成されたプロセッサ413を含む。
追加的に、ホストコンピュータ410は、1つ以上のメモリとインターフェイスコントローラ(総合して、メモリ/インターフェイスコントローラ414と表記する。)を含む。
メモリ/インターフェイスコントローラ414は、DRAM DIMM420及び重複除去メモリモジュール430への多重メモリインターフェイスに対する支援を提供する。
本実施形態では、1つのDRAM DIMM420と1つの重複除去メモリモジュール430とを示す。
但し、本発明の範囲を逸脱しなく、重複除去メモリシステム400は任意の数のDRAM DIMM及び/又は重複除去メモリモジュールも含むことは容易に理解されるべきである。
DRAM DIMM420及び重複除去メモリモジュール430の各々は、指定されたインターフェイスを通じてホストコンピュータ410と接続される。
例えば、DRAM DIMM420は、DDR(Double Data Rate)(例えば、DDR4)メモリインターフェイスを通じてホストコンピュータ410と接続される。
重複除去メモリモジュール430は、DDR4メモリインターフェイス又は他の非メモリインターフェイスを通じてホストコンピュータ410と接続される。
例えば、非メモリインターフェイスは、PCIe(Peripheral Component Interconnect express)インターフェイス、NVMe(Non−Volatile Memory express)、及びNVMf(NVM over fabrics)等を含む。
一実施形態で、重複除去メモリモジュール430は、1つ以上の不揮発性メモリ装置(例えば、フラッシュメモリ)を含むNVDIMM(Non−Volatile Dual In−Line Memory Module)であるか、或いは少なくとも1つ以上の不揮発性メモリ装置と1つ以上のDRAM装置を含むNVDIMMである。
一実施形態で、ホストコンピュータ410は、指定されたインターフェイス(例えば、DDR4、PCIe等)を通じた重複除去メモリモジュール430へのキャッシュラインアクセスを含む。
SoCは、重複除去メモリモジュール430のオーバープロビジョンされた(overprovisioned)メモリ容量(例えば、仮想メモリ容量)をホストコンピュータに提供する。
重複除去メモリモジュール430に格納された重複除去されたデータによって、重複除去メモリモジュール430の仮想メモリ容量はその物理的メモリ容量よりさらに大きい。
重複除去メモリモジュール430のSoC431は、インテリジェント特徴(intelligent features)をホストコンピュータ410に提供する。
例えば、インテリジェント特徴は、データ重複除去、アドレス指定可能な(addressable)データ、セキュリティ(security)、PIM(Processing−In−Memory)、及びRAS(Rasterization Processing)等を含む。
追加的に、SoC431は、DRAMインターフェイス(例えば、DDR4)のみならず、仮想密度管理及び効果的なデータ配置を提供する。
重複除去メモリモジュール430は、DIMM、2.5インチハードドライブ、FHHL(Full Height Half Length)、HHHL(Half Height Half Length)、及びFHFL(Full Height Full Length)を含む多様な形態の要素を含む。
但し、本発明はこれに制限されるものではない。
図5は、本発明の実施形態に係る例示的なハッシュテーブルメモリを示す図である。
ハッシュテーブルメモリ(HTM:Hash Table Memory)500は、“m”ハッシュバケット、“n”ハッシュ関数、及びハッシュ関数の各々に対する“d”ウェイを含む3Dデータを含む。
仮想バケット(VB:Virtual Bucket)は、近い位置のハッシュバケット(例えば、ハッシュバケットのVBの高さ“h”内のハッシュバケット)内にデータを配置できるようにする。
ハッシュバケットの各々に対して、ハッシュバケットにデータをインデックスするように(log2(m))ビットハッシュを生成する1つの関連したハッシュ関数h(x)がある。
例えば、ハッシュテーブルが8個のハッシュバケットを含む場合、該当ハッシュテーブルのハッシュ関数は、3ビットのハッシュを生成する。
即ち、ハッシュ関数h(x)は、相対的に大量の入力データ(例えば、メモリ内に格納される入力データファイル)がハッシュ関数h(x)に入力されるよう許容する。
そして、実質的に、他のさらに小さい量の出力データ(例えば、ハッシュ値)がハッシュ関数h(x)によって生成され、出力されてハッシュテーブル内に格納される。
したがって、異なるデータセットが時には同一のハッシュ値にハッシュすることがあるので、ハッシュ関数h(x)は圧縮を可能にする。
図6は、本発明の実施形態に係る例示的な重複除去書込み工程を説明するためのフローチャートである。
まず、重複除去メモリの重複除去エンジンは、非適応形(non−adaptive)重複除去アルゴリズム又は適応形重複除去アルゴリズムを適用する必要があるかを決定する(ステップS601)。
非適応形重複除去アルゴリズムに対しては、ホストコンピュータ上で実行されているソフトウェアは重複除去アルゴリズムを定義する。
適応形重複除去アルゴリズムに対しては、重複除去メモリの重複除去エンジンは多様なパラメーターに基づいて重複除去アルゴリズムを定義する。
例えば、パラメーターは、アプリケーション履歴(history)、選択方針(selection policy)等を含む。
非適応形重複除去アルゴリズムが選択される場合、ホストOSのカーネル内にロードされた重複除去メモリに対するドライバーは重複除去ラインのサイズ、ハッシュテーブルの数、ハッシュバケットの数、ウェイの数、仮想バケット高さ等を設定する(ステップS611)。
SoCは、図3に示したハッシュテーブルメモリ、アドレスLUTメモリ、及びバッファメモリの領域を生成する(ステップS612)。
ドライバーは、前処理(pre−processing)アルゴリズムを選択する(ステップS613)。
ドライバーは、ハッシュアルゴリズムを選択する(ステップS614)。
重複除去メモリのSoCは、重複除去書込みアルゴリズムを生成する(ステップS615)。
適応形重複除去アルゴリズムが選択される場合、重複除去メモリのSoCは、適応形重複除去アルゴリズムをオンラインで選択する(ステップS622)。
適応形重複除去アルゴリズムを選択する場合、SoCは多様なパラメーター(例えば、アプリケーションパターン履歴プール(pool)、重複除去アルゴリズムプール、重複除去選択方針(policy)等)を参照する(ステップS621)。
SoCは、異なる重複除去書込みアルゴリズム(S631A、S631B、〜S631X)を適用する。
異なるアルゴリズムは、異なるメモリ領域に対するブートタイム時にSoCによって選択することができる。
選択されたアルゴリズムは、次のブートタイムまで変更することができる。
図7は、本発明の実施形態に係る重複除去メモリシステムの書込み工程に対する例示的なフローチャートである。
書込み要請は、指定されたインターフェイス(例えば、DDR4及びPCIe)を通じて重複除去メモリに到着する(ステップS711)。
例えば、書込み要請は、装置アドレス「0x2」にデータ「0x3456789A」を書き込む要請である。
重複除去メモリのSoC内に具現された重複除去エンジンは、書込み要請から書き込まれるデータをハッシュする。
該当実施形態で、ハッシュされたデータはLU(LookUp)アドレス「0x5」及びキー「0x3」を含む。
重複除去エンジンは、ハッシュされたLUアドレス「0x5」及びキー「0x3」をハッシュテーブルメモリ722内に格納されたキー及び値と比較する(ステップS712)。
マッチング値がハッシュテーブルメモリ722内で発見される場合、重複除去エンジンはマッチングエントリに対する頻度数カウントを“1”から“2”に増加させる。
頻度数カウントは、アドレスルックアップ変換アレイ内のいくつのPLIDが特定ラインを指しているかを示す参照カウントである。
重複除去エンジンは、元のLUアドレス(例えば、「0x5」)を得、アドレスLUTメモリ723内にLUアドレスをアップデートする(ステップS713)。
重複除去エンジンは、ハッシュテーブルメモリ722内の元のLUアドレス(例えば、「0x5」)の頻度数カウントをアップデートする(ステップS714)。
ハッシュテーブルメモリ722内にマッチング(matching)されるエントリ(entry)が発見されなければ、重複除去エンジンはハッシュテーブルメモリ722及びアドレスLUTメモリ723の全てに頻度数“1”と共に新しいエントリを追加する。
重複除去エンジンは、書込み要請が完了されたことをホストメモリコントローラに報告する(ステップS751)。
図8は、本発明の実施形態に係る重複除去メモリシステムの読出し工程に対する例示的なフローチャートである。
読出し要請が指定されたインターフェイス(例えば、DDR4及びPCIe)を通じて重複除去メモリに到着する(ステップS811)。
例えば、読出し要請は、装置アドレス「0x2」に対するものである。
装置アドレスは、読み出されるデータのアドレスを指し、LUアドレスはハッシュテーブルメモリ(823)内に格納されたデータの実際位置を指す。
重複除去エンジンは、読出しアドレスLUTメモリ822からLUアドレスを得る(ステップS812)。
重複除去エンジンは、読出しハッシュテーブルメモリ823からLUアドレス「0x4」に対応する値「0x12345678)を得る(ステップS813)。
重複除去エンジンは、読出し要請を完了するために読出されたデータをホストメモリコントローラに伝送する(ステップS851)。
一実施形態によれば、メモリモジュールは、ロジックを含む。ロジックはプログラミングレジスター、重複除去比率コントロールロジック、及び重複除去エンジンを含む。プログラミングレジスターはメモリモジュールの最大重複除去比率を格納する。重複除去比率コントロールロジックは、最大重複除去比率にしたがって、メモリモジュールの重複除去比率を制御するように構成される。重複除去比率はホストコンピュータによってプログラム可能である。
重複除去比率コントロールロジックは、ホストインターフェイスを通じてホストコンピュータに重複除去比率を伝送するように構成されることが好ましい。
メモリモジュールの前記重複除去比率はメモリモジュールの製造の時にプログラムされることが好ましい。
メモリモジュールの重複除去比率はシステムブート時にプログラムされることがが好ましい。
メモリモジュールはハッシュテーブルメモリをさらに含むことが好ましい。
ハッシュテーブルメモリはアドレスルックアップテーブル(Lookup Table)、ハッシュテーブル、及びバッファメモリを含むことが好ましい。
重複除去比率コントロールロジックは、重複除去比率レジスター内に格納されたプログラムされた重複除去比率にしたがって、重複除去メモリモジュールの仮想容量を制限するようアドレスルックアップテーブルのテーブルの大きさを制御するよう構成されることが好ましい。
ホストインターフェイスはDDR(Double Data Rate)インターフェイスであることが好ましい。
ホストインターフェイスはPCIe(Peripheral ComponentInterconnect express)であることが好ましい。
他の実施形態によれば、メモリモジュールの動作方法は、メモリモジュール内にプログラミングレジスター、重複除去比率コントロールロジック、及び重複除去エンジンを含む、ロジックを具現する段階と、プログラミングレジスター内にメモリモジュールの最大重複除去比率を格納する段階と、ホストコンピュータによって重複除去比率をプログラミングする段階と、最大重複除去比率にしたがってメモリモジュールの重複除去比率を調節する段階と、を有する。
メモリモジュールの動作方法は、ホストインターフェイスを通じてホストコンピュータにメモリモジュールの重複除去比率を伝送する段階をさらに有することが好ましい。
メモリモジュールの重複除去比率はメモリモジュールの製造の時にプログラムされることが好ましい。
メモリモジュールの重複除去比率はシステムブートの時にプログラムされることが好ましい。
メモリモジュールの動作方法はハッシュテーブルメモリを提供する段階をさらに有し、ハッシュテーブルメモリはアドレスルックアップテーブル、ハッシュテーブル、及びバッファメモリを含むことが好ましい。
メモリモジュールの動作方法は、重複除去比率レジスター内に格納されたプログラムされた重複除去比率にしたがって、重複除去メモリモジュールの仮想容量を制限するようアドレスルックアップテーブルのテーブルの大きさを調節する段階をさらに有することが好ましい。
ホストインターフェイスはDDR(Double Data Rate)インターフェイスであることが好ましい。
ホストインターフェイスはPCIe(Peripheral Component Interconnect express)であることが好ましい。
尚、本発明は、上述の実施形態に限られるものではない。本発明の技術的範囲から逸脱しない範囲内で多様に変更実施することが可能である。
100 重複除去システム
110 DTB(Direct Translation Buffer)
110_0〜110_(n−1) マルチコア
111 レベル1キャッシュ
112 データキャッシュ
113 命令語キャッシュ
114 レベル2キャッシュ
120 重複除去されたキャッシュ(DDC)
130 メモリコントローラ
150_0〜150_(n−1) DDRメモリモジュール
160、360、410 ホストコンピュータ
200 ハッシュテーブル
300、400 重複除去メモリシステム
310 重複除去メモリ
320、431 SoC(ロジック)
321 重複除去比率レジスター
322 重複除去比率コントロールロジック
325 重複除去エンジン
351、723、822 アドレスルックアップメモリ
350、352、500、722、823 ハッシュテーブルメモリ(HTM)
353 バッファメモリ
411 オペレーティングシステム
412 カーネルモジュール
413 プロセッサ
414 メモリ/インターフェイスコントローラ
420 DRAM DIMM
430 重複除去メモリモジュール

Claims (16)

  1. メモリモジュールにおいて、
    プログラミング(programming)レジスター、重複除去比率(deduplication ratio)コントロールロジック、及び重複除去エンジンを含むロジックと、
    ホストコンピュータへのホストインターフェイスと、を有し、
    前記プログラミングレジスターは、前記メモリモジュールの最大重複除去比率を格納し、
    前記重複除去比率コントロールロジックは、前記最大重複除去比率にしたがって前記メモリモジュールの重複除去比率を制御するように構成され、
    前記重複除去比率は、前記ホストコンピュータによってプログラム可能であることを特徴とするメモリモジュール。
  2. 前記重複除去比率コントロールロジックは、前記ホストインターフェイスを通じて前記ホストコンピュータに前記メモリモジュールの前記重複除去比率を伝達するように構成されることを特徴とする請求項1に記載のメモリモジュール。
  3. 前記メモリモジュールの前記重複除去比率は、前記メモリモジュールの製造時にプログラムされることを特徴とする請求項1に記載のメモリモジュール。
  4. 前記メモリモジュールの前記重複除去比率は、システムブート時間にプログラムされることを特徴とする請求項1に記載のメモリモジュール。
  5. ハッシュテーブルメモリをさらに有し、
    前記ハッシュテーブルメモリは、アドレスルックアップテーブル(address Lookup Table)、ハッシュテーブル、及びバッファメモリを含むことを特徴とする請求項1に記載のメモリモジュール。
  6. 前記重複除去比率コントロールロジックは、前記プログラミングレジスター内に格納された前記プログラムされた重複除去比率にしたがって、前記メモリモジュールの仮想容量を制限するよう前記アドレスルックアップテーブルのテーブルの大きさを調節するように構成されることを特徴とする請求項5に記載のメモリモジュール。
  7. 前記ホストインターフェイスは、DDR(Double Data Rate)インターフェイスであることを特徴とする請求項1に記載のメモリモジュール。
  8. 前記ホストインターフェイスは、PCIe(Peripheral Component Interconnect express)インターフェイスであることを特徴とする請求項1に記載のメモリモジュール。
  9. プログラミングレジスターと、重複除去比率コントロールロジックと、重複除去エンジンとを含むロジックをメモリモジュール内に具現する段階と、
    前記プログラミングレジスター内に前記メモリモジュールの最大重複除去比率を格納する段階と、
    ホストコンピュータによって重複除去比率をプログラミングする段階と、
    前記最大重複除去比率にしたがって、前記メモリモジュールの前記重複除去比率を調節する段階と、を有することを特徴とするメモリモジュールの動作方法。
  10. ホストインターフェイスを通じて前記ホストコンピュータに前記メモリモジュールの前記重複除去比率を伝達する段階をさらに有することを特徴とする請求項9に記載のメモリモジュールの動作方法。
  11. 前記メモリモジュールの前記重複除去比率は、前記メモリモジュールの製造の時にプログラムされることを特徴とする請求項9に記載のメモリモジュールの動作方法。
  12. 前記メモリモジュールの前記重複除去比率は、システムブート時間にプログラムされることを特徴とする請求項9に記載のメモリモジュールの動作方法。
  13. ハッシュテーブルメモリを提供する段階をさらに有し、
    前記ハッシュテーブルメモリは、アドレスルックアップテーブル(LUT)と、ハッシュテーブルと、バッファメモリとを含むことを特徴とする請求項9に記載のメモリモジュールの動作方法。
  14. 前記プログラミングレジスター内に格納された前記プログラムされた重複除去比率にしたがって、前記メモリモジュールの仮想容量を制限するよう前記アドレスルックアップテーブルのテーブルのサイズを調節する段階をさらに有することを特徴とする請求項13に記載のメモリモジュールの動作方法。
  15. 前記ホストインターフェイスは、DDRインターフェイスであることを特徴とする請求項10に記載のメモリモジュールの動作方法。
  16. 前記ホストインターフェイスは、PCIeインターフェイスであることを特徴とする請求項10に記載のメモリモジュールの動作方法。
JP2017146495A 2016-08-03 2017-07-28 メモリモジュール及びその動作方法 Active JP6757299B2 (ja)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201662370655P 2016-08-03 2016-08-03
US62/370,655 2016-08-03
US15/285,437 2016-10-04
US15/285,437 US10162554B2 (en) 2016-08-03 2016-10-04 System and method for controlling a programmable deduplication ratio for a memory system

Publications (3)

Publication Number Publication Date
JP2018022487A true JP2018022487A (ja) 2018-02-08
JP2018022487A5 JP2018022487A5 (ja) 2020-08-27
JP6757299B2 JP6757299B2 (ja) 2020-09-16

Family

ID=61069415

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017146495A Active JP6757299B2 (ja) 2016-08-03 2017-07-28 メモリモジュール及びその動作方法

Country Status (5)

Country Link
US (1) US10162554B2 (ja)
JP (1) JP6757299B2 (ja)
KR (1) KR102216116B1 (ja)
CN (1) CN107688436B (ja)
TW (1) TWI710902B (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2019155790A1 (ja) 2018-02-09 2019-08-15 天野エンザイム株式会社 ランダムエステル交換リパーゼ
JP2020184338A (ja) * 2019-05-01 2020-11-12 三星電子株式会社Samsung Electronics Co.,Ltd. 高帯域幅メモリ及びその動作方法並びに高帯域幅メモリシステム

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102144185B1 (ko) * 2018-10-24 2020-08-12 전자부품연구원 상용 메모리 버스를 이용하는 프로세싱 인 메모리 장치
US11625167B2 (en) * 2018-11-16 2023-04-11 Intel Corporation Dynamic memory deduplication to increase effective memory capacity
TWI688859B (zh) 2018-12-19 2020-03-21 財團法人工業技術研究院 記憶體控制器與記憶體頁面管理方法
KR102689645B1 (ko) 2019-01-29 2024-07-30 삼성전자주식회사 해시 솔루션을 위한 반도체 메모리 장치 및 이의 구동방법
US20210286523A1 (en) * 2020-03-10 2021-09-16 EMC IP Holding Company LLC Deduplication analysis
US12045173B2 (en) * 2020-04-18 2024-07-23 International Business Machines Corporation Stale data recovery using virtual storage metadata
CN114157611B (zh) * 2021-12-15 2023-12-08 苏州盛科通信股份有限公司 一种报文去重方法、装置及存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009087021A (ja) * 2007-09-28 2009-04-23 Hitachi Ltd ストレージ装置及びデータ重複排除方法
JP2014513345A (ja) * 2011-04-08 2014-05-29 マイクロン テクノロジー, インク. データ重複排除
JP2014513356A (ja) * 2011-04-26 2014-05-29 エルエスアイ コーポレーション 不揮発性記憶のための可変オーバープロビジョニング

Family Cites Families (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6438560B1 (en) 1999-09-16 2002-08-20 International Business Machines Corporation Reuse of immutable objects during object creation
KR100816155B1 (ko) * 2006-12-28 2008-03-21 주식회사 하이닉스반도체 불휘발성 메모리 장치 및 불휘발성 메모리 장치의 멀티레벨 셀 프로그램 방법
TWI499909B (zh) 2007-01-26 2015-09-11 Cheriton David 階層式不可改變的內容可定址的記憶體處理器
US8504791B2 (en) 2007-01-26 2013-08-06 Hicamp Systems, Inc. Hierarchical immutable content-addressable memory coprocessor
US8825617B2 (en) 2008-03-14 2014-09-02 International Business Machines Corporation Limiting deduplication based on predetermined criteria
WO2012032727A1 (en) 2010-09-09 2012-03-15 Nec Corporation Storage system
US8533407B2 (en) * 2010-12-01 2013-09-10 International Business Machines Corporation Capacity management in deduplication storage systems
KR20120082218A (ko) * 2011-01-13 2012-07-23 (주)인디링스 파티션 정보를 기초로 호스트의 요청에 대한 처리 기법을 적응적으로 결정하는 스토리지 장치 및 상기 스토리지 장치의 동작 방법
US8688651B2 (en) 2011-01-25 2014-04-01 Sepaton, Inc. Dynamic deduplication
US9501421B1 (en) 2011-07-05 2016-11-22 Intel Corporation Memory sharing and page deduplication using indirect lines
US8521705B2 (en) 2011-07-11 2013-08-27 Dell Products L.P. Accelerated deduplication
KR20130081526A (ko) * 2012-01-09 2013-07-17 삼성전자주식회사 저장 장치, 그것을 포함하는 전자 장치, 및 그것의 데이터 관리 방법들
US9026503B2 (en) 2012-02-29 2015-05-05 Netapp, Inc. Fragmentation control for performing deduplication operations
US20130275699A1 (en) 2012-03-23 2013-10-17 Hicamp Systems, Inc. Special memory access path with segment-offset addressing
US9075710B2 (en) 2012-04-17 2015-07-07 SanDisk Technologies, Inc. Non-volatile key-value store
US8930612B2 (en) 2012-05-31 2015-01-06 Seagate Technology Llc Background deduplication of data sets in a memory
JP5842768B2 (ja) 2012-08-22 2016-01-13 富士通株式会社 重複除去装置、重複除去方法及び重複除去プログラム
US9158468B2 (en) * 2013-01-02 2015-10-13 International Business Machines Corporation High read block clustering at deduplication layer
US10275397B2 (en) 2013-02-22 2019-04-30 Veritas Technologies Llc Deduplication storage system with efficient reference updating and space reclamation
KR101505263B1 (ko) * 2013-03-07 2015-03-24 포항공과대학교 산학협력단 데이터 중복 제거 방법 및 장치
KR20140114515A (ko) 2013-03-15 2014-09-29 삼성전자주식회사 불휘발성 메모리 장치 및 그것의 중복 데이터 제거 방법
US10133502B2 (en) 2013-07-15 2018-11-20 International Business Machines Corporation Compatibility and inclusion of similarity element resolutions
US10073853B2 (en) 2013-07-17 2018-09-11 International Business Machines Corporation Adaptive similarity search resolution in a data deduplication system
US9898410B2 (en) 2013-09-10 2018-02-20 Intel Corporation Hybrid main memory using a fine-grain level of remapping
US9465735B2 (en) * 2013-10-03 2016-10-11 Qualcomm Incorporated System and method for uniform interleaving of data across a multiple-channel memory architecture with asymmetric storage capacity
US9384205B1 (en) * 2013-12-18 2016-07-05 Veritas Technologies Llc Auto adaptive deduplication to cloud based storage
US9792063B2 (en) 2014-01-15 2017-10-17 Intel Corporation Deduplication-based data security
US9966152B2 (en) * 2016-03-31 2018-05-08 Samsung Electronics Co., Ltd. Dedupe DRAM system algorithm architecture
US10101935B2 (en) * 2016-06-03 2018-10-16 Samsung Electronics Co., Ltd. System and method for providing expandable and contractible memory overprovisioning

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009087021A (ja) * 2007-09-28 2009-04-23 Hitachi Ltd ストレージ装置及びデータ重複排除方法
JP2014513345A (ja) * 2011-04-08 2014-05-29 マイクロン テクノロジー, インク. データ重複排除
JP2014513356A (ja) * 2011-04-26 2014-05-29 エルエスアイ コーポレーション 不揮発性記憶のための可変オーバープロビジョニング

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2019155790A1 (ja) 2018-02-09 2019-08-15 天野エンザイム株式会社 ランダムエステル交換リパーゼ
JP2020184338A (ja) * 2019-05-01 2020-11-12 三星電子株式会社Samsung Electronics Co.,Ltd. 高帯域幅メモリ及びその動作方法並びに高帯域幅メモリシステム
JP7509570B2 (ja) 2019-05-01 2024-07-02 三星電子株式会社 装置及びシステム並びに方法

Also Published As

Publication number Publication date
CN107688436A (zh) 2018-02-13
TW201805811A (zh) 2018-02-16
US10162554B2 (en) 2018-12-25
JP6757299B2 (ja) 2020-09-16
KR20180015565A (ko) 2018-02-13
US20180039443A1 (en) 2018-02-08
TWI710902B (zh) 2020-11-21
KR102216116B1 (ko) 2021-02-16
CN107688436B (zh) 2022-04-01

Similar Documents

Publication Publication Date Title
JP6757299B2 (ja) メモリモジュール及びその動作方法
US10866797B2 (en) Data storage device and method for reducing firmware update time and data processing system including the device
US9817758B2 (en) Instructions to mark beginning and end of non transactional code region requiring write back to persistent storage
KR102683696B1 (ko) 호스트 메모리 버퍼(Host Memory Buffer)를 관리하기 위한 NVMe(Non-Volatile Memory Express) 컨트롤러를 포함하는 솔리드 스테이트 저장 장치(solid state storage device), 이를 포함하는 시스템 및 호스트의 호스트 메모리 버퍼를 관리하는 방법
KR102510384B1 (ko) 압축된 데이터 백그라운드를 캐싱하는 장치, 시스템 및 방법
US9811456B2 (en) Reliable wear-leveling for non-volatile memory and method therefor
US20190310780A1 (en) Mapping-based wear leveling for non-volatile memory
US10782915B2 (en) Device controller that schedules memory access to a host memory, and storage device including the same
TW201710910A (zh) 交易式混合記憶體模組及其操作方法
EP3191967B1 (en) Cache bank spreading for compression algorithms
US20160179376A1 (en) Method and apparatus for improving read performance of a solid state drive
US9202548B2 (en) Efficient PCMS refresh mechanism
US10599579B2 (en) Dynamic cache partitioning in a persistent memory module
US11842082B2 (en) Storage device including a plurality of zones having separate compression ratios and operating method thereof
US11561902B2 (en) Cache operations in a hybrid dual in-line memory module
US9880930B2 (en) Method for operating controller and method for operating device including the same
JP2018534666A (ja) インメモリ処理及び狭幅データポートを備えたコンピュータデバイス
US20180357280A1 (en) Trie search engine
TW202032374A (zh) 資料儲存裝置以及非揮發式記憶體控制方法
US20230236737A1 (en) Storage Controller Managing Different Types Of Blocks, Operating Method Thereof, And Operating Method Of Storage Device Including The Same
US20220358050A1 (en) Partial logical-to-physical (l2p) address translation table for multiple namespaces

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200716

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20200716

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20200716

A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20200728

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20200828

R150 Certificate of patent or registration of utility model

Ref document number: 6757299

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250