JP2018022487A - メモリモジュール及びその動作方法 - Google Patents
メモリモジュール及びその動作方法 Download PDFInfo
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
- G06F3/0641—De-duplication techniques
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0811—Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0864—Addressing 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing 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/0873—Mapping of cache memory to specific storage devices or parts thereof
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1009—Address translation using page tables, e.g. page table structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4282—Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0608—Saving storage space on storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0619—Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/065—Replication mechanisms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1041—Resource optimization
- G06F2212/1044—Space efficiency improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2213/00—Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F2213/0026—PCI 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
ただ1つの固有(unique)のデータのインスタンス(instance)のみが実際にSSD(Solid−State Drive)及びHDD(Hard Disk Drive)のようなストレージ媒体上に維持される。
重複データは該当データの唯一のインスタンスに対するポインタで交替される。
一般的なメモリ重複除去スキームは、重複除去エンジンがホストコンピュータのCPU及び/又はメモリコントローラ(MC:Memory Controller)と共に集積されたCPU中心のアプローチを採択する。
また追加的には、高い重複除去比率は、重複除去されたメモリシステムのメモリ構成要素の消費を潜在的に減少させることができる。
また、本発明の重複除去比率制御メカニズムはターゲットアプリケーションにしたがって多様な重複除去比率をプログラムすることができる。
したがって、重複除去メモリシステムのメモリ容量を最大化することができるという効果がある。
このような追加的な特徴及び教示が分離されるか、或いは結合されて利用される代表的な例は添付された図面を参照して詳細に説明する。
図面は必ずしも一定な比率で図示されなく、一般的に、類似の構造や機能の要素は図面にわたって例示的な目的のために類似の参照番号で表示する。図面は本明細書で記述される多様な実施形態の説明を容易にするためのものである。図面は本明細書に開示された教示のすべての様相を記述しなく、請求項の保護範囲を制限しない。
以下の説明で、説明の目的のみに、特定名称が本発明の完全な理解を提供するために説明する。
しかし、このような特定細部事項は本発明の思想を実施するために必要ではないことは当業者に理解されることができる。
これらのアルゴリズム説明及び表現は、他の分野の当業者に作業の実体を効果的に伝達するために、データ処理分野の当業者によって使用される。
ここで、アルゴリズムは、一般的に所望する結果に至る段階に対する一貫性ある順序である。
段階は、物理的量の物理的操作が必要であるものである。一般的に、必須的ではないが、このような量は格納、伝達、結合、比較、及び異なって操作されることができる電気又は磁気信号の形態を取る。
このような信号をビット、値、要素、シンボル、特徴、用語、数等として指称することが主に共通的な使用の理由でしばしば便利であることが立証された。
しかし、これら及び類似の用語の全ては適切な物理量と関連され、単なるこのような量に適用される便利なラベルであることを留意しなければならない。
多様な一般的な目的のシステム、コンピュータサーバー、又は個人用コンピュータは、本明細書の教示にしたがうプログラムと共に使用されるか、或いは要求された方法段階を遂行するためのより特殊化された装置を構成することが便利である。
このような多様なシステムのために要求される構造は以下の説明で示す。
多様なプログラミング言語が本明細書で記載されたように発明の教示を具現するのに使用されてもよいことを理解すべきである。
また、すべての値の範囲又は独立体のグループの暗示はすべての可能な中間値又は当該発明を制限する目的のみならず、本来の開示目的のための中間独立体を開示することが言及される。
また、明示的な基準及び図面に図示された構成要素の形状は本明細書で実施される方式を理解できる設計されるが、寸法及び実施形態に示した形状に限定されないことを留意する。
細密なインメモリ重複除去を具現するための詳細な事項は、非特許文献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は、一般的なLLC(Last Level Cache)と同一のインターフェイスを露呈(expose)する。
しかし、DDC120は、変換(translation)ライン、データライン、及び参照カウントを明示的にキャッシュする。
DDC120は、複数のDDRメモリモジュール(150_0〜150_(n−1))へのメモリアクセスの数を減少させる。
LLC(Last Level Cache)内にキャッシュされた特定データとメモリモジュールとに書き込まれた値が古い場合、読出し要請がL1又はL2キャッシュから提供され、該当L1又はL2キャッシュは、最も最近に書込みを遂行したCPUコアに属する。
ハッシュテーブル200は“m”個のハッシュバケット(bucket)を含むハッシュアレイを含む。
ハッシュバケットの各々は“n”個のウェイ(way)又はスロット(slot)を含む。ここで、「ウェイ」及び「スロット」という用語は相互交換可能である。
ライン“C”をハッシュアレイに挿入するために、h(“C”)の値が計算され、ハッシュテーブル内のh(“C”)の“T”列(row)はウェイがライン“C”を挿入可能であるか否かを確認する。
署名(signature)及び参照カウントラインの各々は、ハッシュバケットの1つのウェイを占めることができる。
全体的に、“m”ハッシュバケツの署名ライン及び参照カウントラインの各々は、ハッシュアレイのカラム全体を占めることができる。
署名及び参照カウントは、各々のライン内に様々な数量(quantity)をパック(pack)するのに十分に小さい。
この場合、ハッシュアレイのラインは64バイト(64x8ビット)である。
他の例として、署名はXビットであり、参照カウントはYビットであり、ハッシュアレイの物理ラインは64バイトである。
ウェイの数が“n”である場合、総物理ライン“n/((64x8)/X)”がn−ウェイバケットの署名カウントの各々に対して必要である。
総合して、ハッシュアレイは“nx{1+1/((64x8)/X)+1/((64x8)/Y)}”ウェイを含む。
これはすべての参照カウント及び署名ラインがハッシュバケットに対して1つのラインにパックになるように提供されたハッシュテーブル内のカラムに対応する。
代わりに、ホストコンピュータのメモリコントローラは、本例では64バイトのメモリラインのアレイのような物理メモリを管理することができる。
物理ラインの各々は、各々の物理ラインID(PLID)によって識別することができる。
PLIDは、変換(translation)アレイ、ハッシュアレイ、及びオーバーフローの3つの領域に分けられる。
PLIDは、ハッシュ関数“h”を利用してハッシュアレイにインデックスする。
例えば、PLIDは次の具現例を有することができる。
PLID=overflow flag |hash bits| way bits
ウェイビットは、ウェイインデックスに与えられる。
ポイントされているデータがハッシュテーブル200内にある場合、オーバーフローフラッグ(overflowflag)は「0」に設定される。オーバーフローフラッグが「1」に設定される場合、PLID内に残るビットはオーバーフローアレイに対するインデックスとして使用される。
図2に示したハッシュテーブル200で、ハッシュビット及びウェイビットに対して“log2m+log2n”ビットが必要である。オーバーフローフラッグに対する追加的なビットと共に、PLIDの幅は次のように計算される。
|PLID|=1+log2m+log2n
重複除去メモリシステムのメモリ容量を最大化するための変更可能な(configurable)重複除去アルゴリズムを使用して、重複除去比率制御メカニズムは一般的な重複除去メモリシステムのCPU中心の接近とは対照的にメモリ中心の接近を採択する。
本発明の重複除去比率制御メカニズムは、多様な重複除去メモリ製品(例えば、在庫管理単位(SKUs:Stock Keeping Units))に対する最大重複除去比率を制限することができ、プログラムされた重複除去比率にしたがって重複除去メモリ製品を構成することができる。
重複除去メモリシステムに対する意図されたターゲットアプリケーション(例えば、データベース)にしたがって、多様な重複除去比率が同一の製品にプログラムすることができる。
重複除去メモリシステム300は、ホストコンピュータ360及び重複除去メモリ310を含む。
重複除去メモリ310は、重複除去比率レジスター321、重複除去比率コントロールロジック322、及び集積された重複除去エンジン325を含むSoC(System−on−Chip)ロジック320を含む。
重複除去比率レジスター321は、恒久的な(permanent)ハードウェアプログラミング(例えば、ヒューズ設定)、及びEEPROMに書き込み及びEEPROMから読み出すことを含む何らかのプログラミング方法によってもプログラムされる。
但し、本発明はこれに制限されない。
重複除去比率レジスター321は、重複除去メモリ310の製造の中にプログラムされるか、或いはシステム管理要求事項にしたがう製造の後(post−production)の時間(例えば、システムブート時間)にプログラムされ得る。
重複除去比率コントロールロジック322は、プログラムされた最大重複除去比率及び/又は重複除去メモリ310の仮想容量を外部要請者(requestor)のみでなく、内部重複除去エンジン325に提供する。
一実施形態として、最大重複除去比率は、重複除去メモリ310の物理容量に重複除去比率を乗じて計算される。
重複除去メモリ310の最大仮想容量に基づいて、重複除去エンジン325は重複除去メモリ310への読み出し/書き込み要請を管理する。
ハッシュテーブルメモリ350は、アドレスLUTメモリ(ALUTM:Address LUT Memory)351、ハッシュテーブルメモリ(HTM:Hash Table Memory)352、及びバッファメモリ(BM:Buffer Memory)353を含む。
アドレスLUTメモリ351は、装置アドレスとルックアップアドレスとの間のマッピング情報を格納する。
ハッシュテーブルメモリ352は、ハッシュテーブル内に値を格納する。
バッファメモリ353は、SoCメモリバッファ/キャッシュと仮想密度オーバープロビジョン(over−provision)管理(HTMオーバーフロー)を提供するための予約されたメモリ領域である。
重複除去メモリシステム400は、メモリ容量を最大化するための変更可能な(configurable)重複除去アルゴリズムを使用するメモリ中心のデータ重複除去を提供する。
本実施形態では、重複除去メモリシステム400は、ホストコンピュータ410、DRAM DIMM(Dual In−line Memory Module)420、及び重複除去メモリモジュール430を含む。
追加的に、ホストコンピュータ410は、1つ以上のメモリとインターフェイスコントローラ(総合して、メモリ/インターフェイスコントローラ414と表記する。)を含む。
メモリ/インターフェイスコントローラ414は、DRAM DIMM420及び重複除去メモリモジュール430への多重メモリインターフェイスに対する支援を提供する。
本実施形態では、1つのDRAM DIMM420と1つの重複除去メモリモジュール430とを示す。
但し、本発明の範囲を逸脱しなく、重複除去メモリシステム400は任意の数のDRAM DIMM及び/又は重複除去メモリモジュールも含むことは容易に理解されるべきである。
例えば、DRAM DIMM420は、DDR(Double Data Rate)(例えば、DDR4)メモリインターフェイスを通じてホストコンピュータ410と接続される。
重複除去メモリモジュール430は、DDR4メモリインターフェイス又は他の非メモリインターフェイスを通じてホストコンピュータ410と接続される。
一実施形態で、重複除去メモリモジュール430は、1つ以上の不揮発性メモリ装置(例えば、フラッシュメモリ)を含むNVDIMM(Non−Volatile Dual In−Line Memory Module)であるか、或いは少なくとも1つ以上の不揮発性メモリ装置と1つ以上のDRAM装置を含むNVDIMMである。
SoCは、重複除去メモリモジュール430のオーバープロビジョンされた(overprovisioned)メモリ容量(例えば、仮想メモリ容量)をホストコンピュータに提供する。
重複除去メモリモジュール430に格納された重複除去されたデータによって、重複除去メモリモジュール430の仮想メモリ容量はその物理的メモリ容量よりさらに大きい。
重複除去メモリモジュール430のSoC431は、インテリジェント特徴(intelligent features)をホストコンピュータ410に提供する。
追加的に、SoC431は、DRAMインターフェイス(例えば、DDR4)のみならず、仮想密度管理及び効果的なデータ配置を提供する。
重複除去メモリモジュール430は、DIMM、2.5インチハードドライブ、FHHL(Full Height Half Length)、HHHL(Half Height Half Length)、及びFHFL(Full Height Full Length)を含む多様な形態の要素を含む。
但し、本発明はこれに制限されるものではない。
ハッシュテーブルメモリ(HTM:Hash Table Memory)500は、“m”ハッシュバケット、“n”ハッシュ関数、及びハッシュ関数の各々に対する“d”ウェイを含む3Dデータを含む。
仮想バケット(VB:Virtual Bucket)は、近い位置のハッシュバケット(例えば、ハッシュバケットのVBの高さ“h”内のハッシュバケット)内にデータを配置できるようにする。
例えば、ハッシュテーブルが8個のハッシュバケットを含む場合、該当ハッシュテーブルのハッシュ関数は、3ビットのハッシュを生成する。
即ち、ハッシュ関数h(x)は、相対的に大量の入力データ(例えば、メモリ内に格納される入力データファイル)がハッシュ関数h(x)に入力されるよう許容する。
そして、実質的に、他のさらに小さい量の出力データ(例えば、ハッシュ値)がハッシュ関数h(x)によって生成され、出力されてハッシュテーブル内に格納される。
したがって、異なるデータセットが時には同一のハッシュ値にハッシュすることがあるので、ハッシュ関数h(x)は圧縮を可能にする。
まず、重複除去メモリの重複除去エンジンは、非適応形(non−adaptive)重複除去アルゴリズム又は適応形重複除去アルゴリズムを適用する必要があるかを決定する(ステップS601)。
適応形重複除去アルゴリズムに対しては、重複除去メモリの重複除去エンジンは多様なパラメーターに基づいて重複除去アルゴリズムを定義する。
例えば、パラメーターは、アプリケーション履歴(history)、選択方針(selection policy)等を含む。
SoCは、図3に示したハッシュテーブルメモリ、アドレスLUTメモリ、及びバッファメモリの領域を生成する(ステップS612)。
ドライバーは、前処理(pre−processing)アルゴリズムを選択する(ステップS613)。
ドライバーは、ハッシュアルゴリズムを選択する(ステップS614)。
重複除去メモリのSoCは、重複除去書込みアルゴリズムを生成する(ステップS615)。
適応形重複除去アルゴリズムを選択する場合、SoCは多様なパラメーター(例えば、アプリケーションパターン履歴プール(pool)、重複除去アルゴリズムプール、重複除去選択方針(policy)等)を参照する(ステップS621)。
SoCは、異なる重複除去書込みアルゴリズム(S631A、S631B、〜S631X)を適用する。
異なるアルゴリズムは、異なるメモリ領域に対するブートタイム時にSoCによって選択することができる。
選択されたアルゴリズムは、次のブートタイムまで変更することができる。
書込み要請は、指定されたインターフェイス(例えば、DDR4及びPCIe)を通じて重複除去メモリに到着する(ステップS711)。
重複除去メモリのSoC内に具現された重複除去エンジンは、書込み要請から書き込まれるデータをハッシュする。
該当実施形態で、ハッシュされたデータはLU(LookUp)アドレス「0x5」及びキー「0x3」を含む。
マッチング値がハッシュテーブルメモリ722内で発見される場合、重複除去エンジンはマッチングエントリに対する頻度数カウントを“1”から“2”に増加させる。
頻度数カウントは、アドレスルックアップ変換アレイ内のいくつのPLIDが特定ラインを指しているかを示す参照カウントである。
重複除去エンジンは、ハッシュテーブルメモリ722内の元のLUアドレス(例えば、「0x5」)の頻度数カウントをアップデートする(ステップS714)。
ハッシュテーブルメモリ722内にマッチング(matching)されるエントリ(entry)が発見されなければ、重複除去エンジンはハッシュテーブルメモリ722及びアドレスLUTメモリ723の全てに頻度数“1”と共に新しいエントリを追加する。
重複除去エンジンは、書込み要請が完了されたことをホストメモリコントローラに報告する(ステップS751)。
読出し要請が指定されたインターフェイス(例えば、DDR4及びPCIe)を通じて重複除去メモリに到着する(ステップS811)。
装置アドレスは、読み出されるデータのアドレスを指し、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)であることが好ましい。
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)
- メモリモジュールにおいて、
プログラミング(programming)レジスター、重複除去比率(deduplication ratio)コントロールロジック、及び重複除去エンジンを含むロジックと、
ホストコンピュータへのホストインターフェイスと、を有し、
前記プログラミングレジスターは、前記メモリモジュールの最大重複除去比率を格納し、
前記重複除去比率コントロールロジックは、前記最大重複除去比率にしたがって前記メモリモジュールの重複除去比率を制御するように構成され、
前記重複除去比率は、前記ホストコンピュータによってプログラム可能であることを特徴とするメモリモジュール。 - 前記重複除去比率コントロールロジックは、前記ホストインターフェイスを通じて前記ホストコンピュータに前記メモリモジュールの前記重複除去比率を伝達するように構成されることを特徴とする請求項1に記載のメモリモジュール。
- 前記メモリモジュールの前記重複除去比率は、前記メモリモジュールの製造時にプログラムされることを特徴とする請求項1に記載のメモリモジュール。
- 前記メモリモジュールの前記重複除去比率は、システムブート時間にプログラムされることを特徴とする請求項1に記載のメモリモジュール。
- ハッシュテーブルメモリをさらに有し、
前記ハッシュテーブルメモリは、アドレスルックアップテーブル(address Lookup Table)、ハッシュテーブル、及びバッファメモリを含むことを特徴とする請求項1に記載のメモリモジュール。 - 前記重複除去比率コントロールロジックは、前記プログラミングレジスター内に格納された前記プログラムされた重複除去比率にしたがって、前記メモリモジュールの仮想容量を制限するよう前記アドレスルックアップテーブルのテーブルの大きさを調節するように構成されることを特徴とする請求項5に記載のメモリモジュール。
- 前記ホストインターフェイスは、DDR(Double Data Rate)インターフェイスであることを特徴とする請求項1に記載のメモリモジュール。
- 前記ホストインターフェイスは、PCIe(Peripheral Component Interconnect express)インターフェイスであることを特徴とする請求項1に記載のメモリモジュール。
- プログラミングレジスターと、重複除去比率コントロールロジックと、重複除去エンジンとを含むロジックをメモリモジュール内に具現する段階と、
前記プログラミングレジスター内に前記メモリモジュールの最大重複除去比率を格納する段階と、
ホストコンピュータによって重複除去比率をプログラミングする段階と、
前記最大重複除去比率にしたがって、前記メモリモジュールの前記重複除去比率を調節する段階と、を有することを特徴とするメモリモジュールの動作方法。 - ホストインターフェイスを通じて前記ホストコンピュータに前記メモリモジュールの前記重複除去比率を伝達する段階をさらに有することを特徴とする請求項9に記載のメモリモジュールの動作方法。
- 前記メモリモジュールの前記重複除去比率は、前記メモリモジュールの製造の時にプログラムされることを特徴とする請求項9に記載のメモリモジュールの動作方法。
- 前記メモリモジュールの前記重複除去比率は、システムブート時間にプログラムされることを特徴とする請求項9に記載のメモリモジュールの動作方法。
- ハッシュテーブルメモリを提供する段階をさらに有し、
前記ハッシュテーブルメモリは、アドレスルックアップテーブル(LUT)と、ハッシュテーブルと、バッファメモリとを含むことを特徴とする請求項9に記載のメモリモジュールの動作方法。 - 前記プログラミングレジスター内に格納された前記プログラムされた重複除去比率にしたがって、前記メモリモジュールの仮想容量を制限するよう前記アドレスルックアップテーブルのテーブルのサイズを調節する段階をさらに有することを特徴とする請求項13に記載のメモリモジュールの動作方法。
- 前記ホストインターフェイスは、DDRインターフェイスであることを特徴とする請求項10に記載のメモリモジュールの動作方法。
- 前記ホストインターフェイスは、PCIeインターフェイスであることを特徴とする請求項10に記載のメモリモジュールの動作方法。
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)
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)
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)
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)
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 |
-
2016
- 2016-10-04 US US15/285,437 patent/US10162554B2/en active Active
-
2017
- 2017-03-03 KR KR1020170027806A patent/KR102216116B1/ko active IP Right Grant
- 2017-06-21 TW TW106120759A patent/TWI710902B/zh active
- 2017-07-05 CN CN201710541154.5A patent/CN107688436B/zh active Active
- 2017-07-28 JP JP2017146495A patent/JP6757299B2/ja active Active
Patent Citations (3)
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)
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 |