JP6764359B2 - 重複除去dramメモリモジュール及びそのメモリ重複除去方法 - Google Patents
重複除去dramメモリモジュール及びそのメモリ重複除去方法 Download PDFInfo
- Publication number
- JP6764359B2 JP6764359B2 JP2017053255A JP2017053255A JP6764359B2 JP 6764359 B2 JP6764359 B2 JP 6764359B2 JP 2017053255 A JP2017053255 A JP 2017053255A JP 2017053255 A JP2017053255 A JP 2017053255A JP 6764359 B2 JP6764359 B2 JP 6764359B2
- Authority
- JP
- Japan
- Prior art keywords
- memory
- deduplication
- hash
- memory module
- physical
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/70—Masking faults in memories by using spares or by reconfiguring
- G11C29/78—Masking faults in memories by using spares or by reconfiguring using programmable devices
- G11C29/80—Masking faults in memories by using spares or by reconfiguring using programmable devices with improved layout
- G11C29/808—Masking faults in memories by using spares or by reconfiguring using programmable devices with improved layout using a flexible replacement scheme
-
- 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/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/0292—User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
-
- 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
-
- 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/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0658—Controller construction arrangements
-
- 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/0662—Virtualisation aspects
- G06F3/0667—Virtualisation aspects at data level, e.g. file, record or object virtualisation
-
- 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
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/70—Masking faults in memories by using spares or by reconfiguring
- G11C29/74—Masking faults in memories by using spares or by reconfiguring using duplex memories, i.e. using dual copies
-
- 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/0038—System on Chip
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)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Memory System (AREA)
Description
このような方法は通常、メモリコントローラと動作する重複除去キャッシュ(Deduplicated Cache、DDC)を具現することにより、CPUプロセッサによる重複の認識を可能にし、そして、メモリコントローラの制御に従って重複除去メモリ動作(例えば、コンテンツ検索(Content lookups)、参照カウント更新(Reference Count Updates、以下、「update(s)」を「更新」と約す)、等)の提供をトライする。
重複除去の方法はまた、重要な経路(クリティカルパス)から変換フェッチ(Translation Fetch、主記憶からの変換命令の取出し)を除去してデータ読出しを増加させるために変換ラインをキャッシング(Caching)するキャッシュであり、索引バッファ(Lookaside Buffer)と類似である、直接変換バッファ(Direct Translation Buffer、DTB)を具現する。
前記DRAMメモリモジュールは、アプリケーションパターン履歴プール(Application pattern history pool)、重複除去アルゴリズムプール、又は重複除去アルゴリズム選択方針の内の少なくとも1つに対応する情報を受信し、受信した前記情報に基づいて、1つ以上の重複除去アルゴリズムを定義するように構成されることができる。
前記DRAMメモリモジュールは、重複除去ラインのサイズ、前記ハッシュテーブルの数、前記ハッシュテーブルの中の1つにおける前記物理的バケットの数、前記物理的バケットの中の1つにおける前記ウェイの数、又は前記仮想バケットの中の1つにおける物理的バケットの数の内の少なくとも1つを設定するための命令を受信するように構成されることができる。
前記DRAMメモリモジュールは、各々の前記ハッシュテーブルに対してハッシュ関数を設定するための命令を受信するように構成されることができる。
前記DRAMメモリモジュールは、前記ハッシュテーブルメモリ、前記ALUTM、又は前記バッファメモリの内の少なくとも1つを定義するための命令を受信するように構成されることができる。
前記DRAMメモリモジュールは、インカミング(Incoming)データブロックに対応する書込み要請を受信し、前記書込み要請を受信した後、ハッシュ値(Hash value)を生成するために前記インカミングデータブロックをハッシュし、前記ハッシュ値に対応する値が前記ハッシュテーブルメモリに格納されているか否かを決定し、前記ハッシュテーブルメモリに格納された値に対応する前記ポインタの中の対応する1つのポインタを検索し、前記ALUTMの前記対応する1つのポインタを更新し、前記ハッシュテーブルメモリの前記対応する1つのポインタの頻度カウント(frequency count)を更新するように構成されることができる。
前記DRAMメモリモジュールは、読出し要請を受信し、前記ALUTMから前記ポインタの中で対応する1つのポインタを検索し、前記ハッシュテーブルメモリから、前記対応する1つのポインタに関連付けられた前記格納されたデータブロックの中の1つを検索し、前記外部システムに前記格納されたデータブロックの中の1つを返還する(return)ように構成されることができる。
前記DRAMメモリモジュールのメモリ重複除去方法は、前記DRAMメモリモジュールと連結されたメモリコントローラから情報を受信する段階を更に含み、前記受信した情報は、重複除去ラインのサイズ、前記ハッシュテーブルの数、前記ハッシュテーブルの中の1つにおける前記物理的バケットの数、前記物理的バケットの中の1つにおける前記ウェイの数、又は前記仮想バケットの中の1つにおける物理的バケットの数、の内の少なくとも1つを決定し、前記非適応形重複除去アルゴリズムは、前記受信した情報に基づき、前記受信した情報は、前記DRAMメモリモジュールと関連付けられたドライバによって設定されることができる。
前記DRAMメモリモジュールのメモリ重複除去方法は、前記非適応形重複除去アルゴリズムに基づいてドライバを使用して複数の領域を生成することによって、前記ハッシュテーブルメモリ、前記ALUTM、及び前記バッファメモリの領域を決定する段階を更に含むことができる。
前記DRAMメモリモジュールのメモリ重複除去方法は、前記ハッシュテーブルの各々についてハッシュアルゴリズムを受信する段階を更に含み、前記ハッシュアルゴリズムは、前記非適応形重複除去アルゴリズムに基づいて前記ドライバによって選択される。
前記DRAMメモリモジュールのメモリ重複除去方法は、アプリケーションパターン履歴プール(Application pattern history pool)、重複除去アルゴリズムプール、又は重複除去アルゴリズム選択方針の内の少なくとも1つに対応する情報を受信する段階と、前記受信した情報に基づいて前記適応形重複除去アルゴリズムを設定する段階と、を更に含むことができる。
前記DRAMメモリモジュールのメモリ重複除去方法は、前記DRAMメモリモジュールと関連付けられたドライバを使用して前処理アルゴリズム(Pre−processing algorithm)を選択する段階と、前記前処理アルゴリズムを受信する段階と、前記重複除去アルゴリズムを生成する段階と、を更に含むことができる。
前記DRAMメモリモジュールのメモリ重複除去方法は、前記対応する1つのポインタに対応する頻度カウント(frequency count)を1だけ減少させる段階を更に含むことができる。
前記DRAMメモリモジュールのメモリ重複除去方法は、前記頻度カウントが0に到達した時、前記目的の物理的バケットに格納された前記インカミングデータブロックを除去する段階を更に含むことができる。
前記DRAMメモリモジュールのメモリ重複除去方法は、前記ハッシュテーブルアレイに格納された複数のデータブロックに対応する読出し要請を受信する段階と、前記複数のデータブロックに対応する前記複数のポインタの中から対応する1つのポインタを前記ALUTMから検索する段階と、前記ハッシュテーブルメモリ内で、前記対応する1つのポインタに基づいて前記複数のデータブロックにアクセスする段階と、再組立された(reassembled)データを生成するために前記複数のデータブロックを再組立する段階と、前記メモリモジュールからメモリコントローラに前記再組立されたデータを伝送する段階と、を更に含むことができる。
従って重複除去は、CPUモジュール140が知らない間に重複除去DRAMメモリモジュール130内で遂行されることが可能であり、これによって重複除去DRAMメモリモジュール130の容量が増加される。即ち重複除去は微細ブロック単位で遂行され、そして揮発性メモリ(例えば、重複除去DRAMメモリモジュール130)内で動作するので、本発明の実施形態による全ての重複除去情報は重複除去DRAMメモリモジュール130の自体内で発生し、反面にCPU内カーネルモジュール(Kernel Module)140は、重複除去DRAMメモリモジュール130内で遂行される重複除去動作の細部事項を知らない。
即ち、ALUTM(210)はハッシュテーブル内で検索アドレスマッピングポインタ(Lookup Address Mapping Pointer、例えばPLID)と連関される位置(例えば、アドレス)のための格納装置である。従って、データブロックがハッシュテーブルメモリ220に以前に格納されている場合、ALUTM(210)内のポインタは同一のデータブロックが格納されたハッシュテーブルメモリ220のアドレスを示すことが可能であり、このようにすることによってデータブロックの重複コピーを格納する必要を除去し、重複除去DRAMメモリモジュール130の容量を(等価的に)増加する。
本発明の実施形態による重複除去DRAMメモリモジュール130のハッシュテーブルメモリ220には1つ以上のハッシュテーブル380が配置されており、データブロックがユニークであるか否かを決定する際に、有効に使用される。ハッシュテーブル380はハッシュバケット(Hash Buckets)310からなる行、及びハッシュウェイ(Hash Ways)320からなる列で構成される2次元アレイと考えられる。即ち、本発明の実施形態によるハッシュテーブル380は、m個の、ハッシュバケット310からなる行を含み、各ハッシュバケット310はハッシュバケット310の容量を示すデータライン/スロット/エントリ/ハッシュウェイ320のn個の列を含む(m及びnは整数)。
従って、ハッシュ値はデータブロックが何処に配置されるべきかを示すか、又は、データブロック(例えば、64バイトのデータブロック)が重複する場合、ハッシュ値は該データブロックがハッシュテーブルメモリ220上の既に格納された位置を示す。メモリにデータコンテンツが追加されることによって、m個のハッシュバケット310の中で一部は先ず飽和状態に到達し得る。
従って、重複除去DRAMメモリモジュール130はハッシュテーブルメモリ220に入らないデータブロックを格納するためのバッファメモリ230を使用する超過対策(Overflow Provision)を含む。その後、原検索アドレス(Original Lookup Address)が検索され、ALUTM(210)はインカミングデータのハッシング(Hashing)から計算された検索アドレスに従って更新される。
従って、コンテンツ検索に際しては通常、署名一致が存在せず、署名ラインのゼロエントリに基づいて空いているラインの割当てを要請する場合か、或いは、1つの署名一致が存在して、後続のデータライン読出し及びコンテンツ比較により重複の存在を確認する場合の何れかになる。m個のハッシュバケット310の各々は、後述する図5(A)、図5(B)、及び図5(C)で説明されるホップワードライン(Hopword Line)を更に含み得る。
各メモリラインは、ハッシュテーブル380にユニークなコンテンツを格納するためのデータラインか、又は、複数のPLID(350)を格納し、プロセッサバスアドレス(Processor Bus Address)からハッシュテーブル380の重複除去されたデータブロックへのマッピングを提供するための変換ライン(Translation Line)か、の何れかと称される。
即ち、バスアドレスは変換ラインを識別し、更に、関連する(relevant)PLID(350)が含まれた変換ライン内のエントリを識別し、次にPLID(350)が特定のデータラインを識別する。従って、PLID(350)は、超過タグ(Overflow Tag)を含んで具現され、特定の対応ハッシュテーブル380、対応ハッシュバケットビット、及びPLID(350)に対応するデータブロックの位置を示す該当ウェイビット(Way Bits)を示すデータを含む。
即ち、ハッシュテーブル380において、ハッシュテーブル380の1つの全体列は各々ハッシュバケット310に属する署名ライン330に割当てられ、更に1つの全体列は各々ハッシュバケット310に属する参照/頻度カウントライン340に割当てられる。
従って、ハッシュテーブル380に格納されている各データブロックに対して、データブロックの位置を示すALUTM210に格納される対応PLID(350)によって識別される1つ以上の対応アドレスがある。ハッシュテーブル380がデータにより満杯になれば、新しく導入されるデータは超過領域にあって重複除去されないバッファメモリ230に配置され、この場合、重複除去水準が低下する。
本実施形態では、多重ハッシュテーブル480及びハッシュバケット410をそれらの大きさが一定であると説明したが(例えば、m及びnは整数として説明された)、他の実施形態においては、同一の多重ハッシュテーブルアレイ内で相異なる多重ハッシュテーブルが相異なる数のハッシュバケットを有し、そして同様にして、多重ハッシュテーブルアレイ内で相異なるハッシュバケット、又は甚だしくは、同一の多重ハッシュテーブル内で、相異なる数のハッシュウェイを有する。それだけでなく、多重ハッシュテーブル480が集合的に利用されも、或る観点からは、相異なるハッシュテーブル480は互いに独立である(例えば、相異なるハッシュテーブル480は各々、互いに異なるハッシュ関数を有するか、或いは共通のハッシュ関数を有する)。
ハッシュテーブル480内の空間を解放することによって、重複除去は、使われなくなった、又は重複したデータを除去することによって達成される。即ち、本発明の実施形態による仮想バケット460の使用によって、制限された対応位置へのハッシュ関数を利用してデータラインをハッシングすることによって生じる厳格な制限はなく、そしてデータは近隣、即ち“近い位置”にある物理的バケット410に配置されることが可能であり、該物理的バケット410は当初、使用を意図したけれども、先占されていた物理的(ハッシュ)バケット410を含む同一の仮想バケット460内に存在する物理的バケット410を指し示す。
T(h(C))として表現される物理的バケット410が対応仮想バケット460のH個の物理的バケット410の中で第1番目の物理的バケット410であると仮定すれば、仮にfがHより小さければ(即ち、仮に同一仮想バケット460内に占有されない物理的バケット410が存在すれば)、データラインCは対応仮想バケット460に配置される。
同様に、T(h(C))として表現される物理的バケット410が対応仮想バケット460の第2番目の物理的バケットであれば、fがH−1より小さい限り、データラインCは対応仮想バケット460に配置される。
例えば、本発明の実施形態による重複除去DRAMメモリモジュール130は、仮想バケット460内の複数の物理バケット410を、T(h(C)+f−H)で表現される物理的バケット410から開始して、次にT(h(C)+f−H+1)で表現される物理的バケット410、と順次、T(h(C)+f−1)で表現される物理的バケット410に至るまで視て、各々、その内に含まれたデータを有するかを判定する(即ち、仮想バケット460の最初から最後までスキャンする)。
その次に、重複除去DRAMメモリモジュール130は、T(h(C)+f−H)からT(h(C)+f−1)迄で表現される物理的バケット410内に収容さているデータ物件(data_object)の中の何れが空いた空間T(h(C)+f)に配置可能であるかを判定する。
即ち、重複除去DRAMメモリモジュール130は、T(h(C)+f−H)からT(h(C)+f−1)迄で表現された物理的バケットの中で、何れが物理的バケットT(h(C)+f)を有する共通の仮想バケット460内にあるかを判定し、こうしてその内に収容しているデータの移動を可能にする。
その次に、重複除去DRAMメモリモジュール130は、最も初期に発見されたデータ物件を空いた空間内に配置し、こうしてT(h(C)+e、eはfより小さい整数)で表現される物理的バケット410内の新しい空いた空間を作る。
このような過程はeがHより小さくなる時まで反複され(即ち、データはカスケード式(Cascading Fashion)にハッシュテーブル内で移動される)、こうして対応仮想バケット460内でデータラインCの配置するために必要なる空間を確保する。
物理的バケットPB3、PB4、及びPB5もまた占有されているので、最初に使用可能な物理的バケット410は物理的バケットPB6である(即ち、fが4に等しく、それ故fがHに等しいか、或いはHより大きく、そして、最初に使用可能な物理的バケット410は対応仮想バケットVB2に存在しない)。
従って、物理的バケットPB5内データは物理的バケットPB6に移動され、こうして仮想バケットVB2内に空間を確保し、データラインCは対応仮想バケットVB2内(物理的バケットPB5内)に配置される。
しかし、意図された物理的バケットがPB1であれば(即ち、対応仮想バケット460がVB1であれば)、処理過程は物理的バケットPB4内のデータが仮想バケットVB1から隣接仮想バケットVB2に、即ち、物理的バケットPB5の新しく解放された空間に移動されるように反複されるであろう。その後に、データラインCは意図された物理的バケットPB1に対応する仮想バケットVB1の物理的バケットPB4に書き込まれるであろう。
仮に最初に意図されたハッシュテーブル480が満杯になっていて、且つ最初に意図されたハッシュテーブル480内でデータブロックを発見できない場合(即ち、各物理的バケット410の各ハッシュウェイ420が相異なるデータブロックによって占有されている場合)、重複除去DRAMメモリモジュール130はバッファメモリ230にデータを入力することを追求するか、或いは選択的には、多重ハッシュテーブルアレイ400の他のハッシュテーブル480にデータを入力することを追求する。
しかし、多重ハッシュテーブルアレイ400のハッシュテーブル480の全部が満杯になった場合、データブロックはバッファメモリ230にこぼれる(Spill over)。このような実施形態において、ハッシュテーブルアレイ400内でデータ移動は重複除去DRAMメモリモジュール130によって許容されない。従って、ハッシュテーブルアレイ400内に以前に格納されたデータの移動を許容しないことによって、(以前に説明された実施形態と異なり)現在の実施形態は書込み機能と関連されたレイテンシ(Latency)を向上できる。
仮にデータブロックがそこに格納されていなければ、重複除去DRAMメモリモジュール130は該データブロックを格納するために同一の仮想バケット460内に任意の空間が存在するか否かを決定する。仮に空間が存在しなければ、重複除去DRAMメモリモジュール130は簡単にバッファメモリ230にデータブロックを格納するか、又はそうでなければ、バッファメモリ230にデータブロックを格納する前に多重ハッシュテーブルアレイ400に任意の空間が存在するかを決定する。
意図された仮想バケット460内の空間を解放するために仮想バケットの間で他のデータブロックを移動する動作は遂行されなかった故に、本実施形態の重複除去DRAMメモリモジュール130に連関されたテールレイテンシ(Tail Latency)は、以前に説明された実施形態以上に向上される。
このようなパラメータはハッシュテーブルの数(k)、物理的バケットの数(m)、ウェイの数(n)、仮想バケットの“高さ”(H、即ち、仮想バケット当たりの物理的バケットの数)、ハッシュテーブルのハッシュ関数(h(x))、又は重複除去ラインのサイズを含む。また、パラメータは、重複除去DRAMメモリモジュール130内の何れのスペースがALUTM210、ハッシュテーブルメモリ220、又はバッファメモリ230と各々連関されているかを決定することもできる。
従って、ホップワードベクトル592は各仮想バケット460に対して物理的バケット使用を追跡するために使用できる、複数個の1又は複数個の0のアレイを含む。本発明の例において、物理的バケットPB0、PB1、及びPB3は第1番目の仮想バケットVB0に対して占有され、物理的バケットPB2及びPB4は第2番目の仮想バケットVB1に対して占有され、物理的バケットPB5のみが第3番目の仮想バケットVB2に対して占有され、そして第4番目の仮想バケットVB3に対しては占有されない。
従って、データ物件を仮想バケット460に書き込む時、仮想バケット460に既に存在するデータ物件の数が計算され、該データ物件の数に1を加えた値pは仮想バケット利用値として仮想バケット利用値フィールド652に書き込まれる。PLID(650)の仮想バケット利用値p及び仮想バケット利用値フィールド652を利用することによって、PLID(650)のストレージ(Storage)付随負荷(overhead)を低減できる。
S702a段階で、複数の仮想バケットは、log2(h)ビットからなる仮想バケット利用値フィールドを含み、且つ仮想バケットの中で対応する1つの仮想バケット内におけるデータブロックの数と同一の値を含む、物理的ラインID(PLID)で以って(with)ハッシュテーブルを索引付けすることによって、そして仮想バケットの中で対応する1つの仮想バケットにデータ物件が書き込まれる時にPLID中の仮想バケット利用値フィールド652の仮想バケット利用値を1だけ増加することによって、識別される。
例えば、図6に示したように、仮想バケット460は、仮想バケット利用値フィールド652を含み、且つ仮想バケット460の中で対応する1つの仮想バケット内におけるデータブロックの数と同一の値を含む、物理的ラインID(PLID)650で以って(with)ハッシュテーブル480を索引付けすることによって識別される。その際、PLID中の仮想バケット利用値フィールド652中の仮想バケット利用値は、仮想バケット460の中で対応する1つの仮想バケットにデータ物件又はデータブロックが書き込まれる時に1だけ増加する。
例えば、重複除去DRAMメモリモジュール130は図5(B)及び図5(C)に示したようにPB0、PB1、PB2、PB3、PB4、及びPB5に格納されたデータを有する物理的ハッシュバケット410を、仮想バケット460、VB0、VB1、及びVB2の中で対応する1つの仮想バケットに割当てて識別する。
S703a段階で、データを内蔵する物理的ハッシュバケットの中で何れが、仮想バケットの中の何れに対応するか、を示すためのホップワードベクトル又はホップワード値を生成することによって、物理的ハッシュバケットが識別される。
例えば、(B)及び図5(C)に示したように、重複除去DRAMメモリモジュール130は、データを内蔵する物理的ハッシュバケット410の中で何れが仮想バケット460の中の何れに対応するか、を示すためのホップワードベクトル592又はホップワード値591を生成する。
例えば、重複除去DRAMメモリモジュール130は、メモリコントローラ120からデータラインCに対応する書込み要請を受信し、そしてハッシュ値を生成するためにハッシュ関数h(x)の中で対応する1つのハッシュ関数に従ってインカミング(incoming)データをハッシュする。
例えば、図5(B)及び図5(C)に示したように、重複除去DRAMメモリモジュール130は、仮想バケット460、VB3があるデータブロックのための空間を、物理的バケットPB6に有するか決定する。
例えば、図5(B)及び図5(C)に示したように、重複除去DRAMメモリモジュール130は、仮想バケットVB2が他に使用可能な物理的バケットを有しない場合、仮想バケットVB2がデータブロックのための空間を有する時まで、仮想バケットVB2の物理的バケットPB5から仮想バケットVB3にデータを順次的に移動させる。
ここで、上述した過程は仮に仮想バケットVB1が仮想バケット460の中で対応する1つの仮想バケットであれば、仮想バケットVB1の物理的バケットPB4から仮想バケットVB2の物理的バケットPB5にデータを移動させるために反複される。
S706a段階で、アドレス検索テーブルメモリALUTMは、移動されたデータブロックに対応する1つ又はそれ以上の検索アドレスを変更するために更新される。
例えば、重複除去DRAMメモリモジュール130は、ハッシュテーブルメモリ220の移動されたデータブロックの新しいアドレスが検索できるように移動されたデータブロックに対応する1つ又はそれ以上のアドレスポインタを変更するためにALUTM210を更新する。
例えば、図5(B)及び図5(C)に示したように、重複除去DRAMメモリモジュール130は、仮に仮想バケットVB1が意図された仮想バケット460であれば、データブロックを仮想バケットVB1の物理的バケットPB4に格納する。仮に、仮想バケットVB1を含むハッシュテーブル480が満杯になったと決定されれば、データブロックはバッファメモリ230に格納される。
例えば、重複除去DRAMメモリモジュール130は、メモリコントローラ120からデータラインCを構成する複数のデータブロックに対応する読出し要請を受信し、その際、該複数のデータブロックはハッシュテーブルメモリ220のハッシュテーブルアレイ400の何処かに格納されているとする。
本出願の請求範囲においては、手段プラス機能的な文節は、記載された機能を遂行する構造、及び構造的な均等物のみならず、均等な構造物も含むと意図されている。従って、前述した内容は開示された特定の実施形態に制限されず、開示された例示的な実施形態の変形のみならず、他の例示的な実施形態が添付された請求項の範囲内に含まれること意図されていると理解されなければならない。本発明的思想はの、別紙に示す特許請求の範囲によってのみ、但し、特許請求の範囲請求項に含まれる請求項の均等物を含むものと定義される。
110 プロセッサ
120 メモリコントローラ
130 重複除去DRAMメモリモジュール
140 オペレーティングシステム
210 アドレス検索テーブルメモリ(ALUTM)
220 ハッシュテーブルメモリ
230 超過/バッファメモリ
310 ハッシュバケット
320 データライン、スロット、エントリ、ハッシュウェイ、ウェイ
330 署名ライン
332 署名
340 参照/頻度カウントライン
342 参照カウント
350 物理的ラインID(PLID)
380 ハッシュテーブル
400 多重ハッシュテーブルアレイ
410 ハッシュバケット、物理的バケット
420 ハッシュウェイ
460 仮想バケット(VB)
480 ハッシュテーブル、多重ハッシュテーブル(MHT)
591 ホップワード値
592 ホップワードベクトル
650 PLID
651 キー
652 仮想バケット利用値フィールド
ALUTM アドレス検索テーブルメモリ
C データライン
H 仮想バケットの“高さ”(即ち、仮想バケット当たりの物理的バケットの数)
MHT 多重ハッシュテーブル
p 仮想バケット利用値
PB0、PB1、PB2、PB3,PB4、PB5、PB6 物理的バケット
PLID 物理的ラインID
T1、T2、T3、…、Tk 多重ハッシュテーブル
VB、VB0、VB1、VB2、VB3 仮想バケット
Claims (20)
- メモリ重複除去を内部的に遂行するDRAMメモリモジュールであって、
前記DRAMメモリモジュールは、複数のハッシュテーブルを含むハッシュテーブルアレイに、読出し要請に従って検索される(retrieve)ことができるように複数のデータブロックを格納するハッシュテーブルメモリと、
ここで、前記ハッシュテーブルの各々は、複数の物理的バケット(Buckets)及び複数の仮想バケット(Virtual buckets)を含み、前記複数の仮想バケットの各々は、複数の前記物理的バケットを含み、前記物理的バケットの各々は、ウェイ(Ways)を含み、
前記物理的バケットの中で対応する1つに格納された前記データブロックの各々の位置を示す複数のポインタ(Pointers)を含むALUTM(Address lookup table memory)と、
前記ハッシュテーブルアレイが満杯である場合、前記ハッシュテーブルメモリに格納されないユニークな(新規の)データブロックを格納するためのバッファメモリと、
プロセッサと、
メモリと、を含み、
前記メモリは、前記プロセッサによって遂行される時、前記DRAMメモリモジュールが外部システムとデータの交換する命令を格納する、ことを特徴とする重複除去DRAMメモリモジュール。 - 前記DRAMメモリモジュールは、DRAM(Dynamic random−access memory)システムオンチップ(System on a chip)で構成される、ことを特徴とする請求項1に記載の重複除去DRAMメモリモジュール。
- 前記DRAMメモリモジュールは、アプリケーションパターン履歴プール(Application pattern history pool)、重複除去アルゴリズムプール、又は重複除去アルゴリズム選択方針の内の少なくとも1つに対応する情報を受信し、
受信した前記情報に基づいて、1つ以上の重複除去アルゴリズムを定義するように構成される、ことを特徴とする請求項1に記載の重複除去DRAMメモリモジュール。 - 前記DRAMメモリモジュールは、重複除去ラインのサイズ、前記ハッシュテーブルの数、前記ハッシュテーブルの中の1つにおける前記物理的バケットの数、前記物理的バケットの中の1つにおける前記ウェイの数、又は前記仮想バケットの中の1つにおける物理的バケットの数の内の少なくとも1つを設定するための命令を受信するように構成される、ことを特徴とする請求項1に記載の重複除去DRAMメモリモジュール。
- 前記DRAMメモリモジュールは、各々の前記ハッシュテーブルに対してハッシュ関数を設定するための命令を受信するように構成される、ことを特徴とする請求項1に記載の重複除去DRAMメモリモジュール。
- 前記DRAMメモリモジュールは、前記ハッシュテーブルメモリ、前記ALUTM、又は前記バッファメモリの内の少なくとも1つを定義するための命令を受信するように構成される、ことを特徴とする請求項1に記載の重複除去DRAMメモリモジュール。
- 前記DRAMメモリモジュールは、インカミング(Incoming)データブロックに対応する書込み要請を受信し、
前記書込み要請を受信した後、ハッシュ値(Hash value)を生成するために前記インカミングデータブロックをハッシュし、
前記ハッシュ値に対応する値が前記ハッシュテーブルメモリに格納されているか否かを決定し、
前記ハッシュテーブルメモリに格納された値に対応する前記ポインタの中の対応する1つのポインタを検索し、
前記ALUTMの前記対応する1つのポインタを更新し、
前記ハッシュテーブルメモリの前記対応する1つのポインタの頻度カウント(frequency count)を更新するように構成される、ことを特徴とする請求項1に記載の重複除去DRAMメモリモジュール。 - 前記DRAMメモリモジュールは、読出し要請を受信し、
前記ALUTMから前記ポインタの中で対応する1つのポインタを検索し、
前記ハッシュテーブルメモリから、前記対応する1つのポインタに関連付けられた前記格納されたデータブロックの中の1つを検索し、
前記外部システムに前記格納されたデータブロックの中の1つを返還する(return)ように構成される、ことを特徴とする請求項1に記載の重複除去DRAMメモリモジュール。 - DRAMメモリモジュールのメモリ重複除去方法であって、
複数のハッシュテーブルを含むハッシュテーブルアレイに、読出し要請に従って検索される(retrieve)ことができるように複数のデータブロックを格納するハッシュテーブルメモリと、
ここで、前記ハッシュテーブルの各々は、複数の物理的バケット(Buckets)及び複数の仮想バケット(Virtual buckets)を含み、前記複数の仮想バケットの各々は、複数の前記物理的バケットを含み、前記物理的バケットの各々は、ウェイ(Ways)を含み、
前記格納されたデータブロック各々が前記物理的バケットの中のどれであるかを示す複数のポインタ(Pointers)を含むALUTM(Address lookup table memory)と、
前記ハッシュテーブルアレイが満杯である場合、前記ハッシュテーブルメモリに格納されないデータブロックを格納するためのバッファメモリと、を前記DRAMメモリモジュール内に定義する段階と、
重複除去アルゴリズムに従って前記ハッシュテーブルメモリ又は前記バッファメモリに前記データブロックを格納する段階と、を含むことを特徴とするDRAMメモリモジュールのメモリ重複除去方法。 - 前記DRAMメモリモジュールに関連付けられたソフトウェア又はドライバによって定義される非適応形重複除去アルゴリズム、若しくは前記DRAMメモリモジュールによって受信された情報に基づく適応形重複除去アルゴリズムの内の何れか1つを、前記重複除去アルゴリズムとして選択する段階を更に含む、ことを特徴とする請求項9に記載のDRAMメモリモジュールのメモリ重複除去方法。
- 前記DRAMメモリモジュールと連結されたメモリコントローラから情報を受信する段階を更に含み、
前記受信した情報は、重複除去ラインのサイズ、前記ハッシュテーブルの数、前記ハッシュテーブルの中の1つにおける前記物理的バケットの数、前記物理的バケットの中の1つにおける前記ウェイの数、又は前記仮想バケットの中の1つにおける物理的バケットの数、の内の少なくとも1つを決定し、
前記非適応形重複除去アルゴリズムは、前記受信した情報に基づき、
前記受信した情報は、前記DRAMメモリモジュールと関連付けられたドライバによって設定される、ことを特徴とする請求項10に記載のDRAMメモリモジュールのメモリ重複除去方法。 - 前記非適応形重複除去アルゴリズムに基づいてドライバを使用して複数の領域を生成することによって、前記ハッシュテーブルメモリ、前記ALUTM、及び前記バッファメモリの領域を決定する段階を更に含む、ことを特徴とする請求項10に記載のDRAMメモリモジュールのメモリ重複除去方法。
- 前記ハッシュテーブルの各々についてハッシュアルゴリズムを受信する段階を更に含み、
前記ハッシュアルゴリズムは、前記非適応形重複除去アルゴリズムに基づいて前記ドライバによって選択される、ことを特徴とする請求項10に記載のDRAMメモリモジュールのメモリ重複除去方法。 - アプリケーションパターン履歴プール(Application pattern history pool)、重複除去アルゴリズムプール、又は重複除去アルゴリズム選択方針の内の少なくとも1つに対応する情報を受信する段階と、
前記受信した情報に基づいて前記適応形重複除去アルゴリズムを設定する段階と、を更に含む、ことを特徴とする請求項10に記載のDRAMメモリモジュールのメモリ重複除去方法。 - 前記DRAMメモリモジュールと関連付けられたドライバを使用して前処理アルゴリズム(Pre−processing algorithm)を選択する段階と、
前記前処理アルゴリズムを受信する段階と、
前記重複除去アルゴリズムを生成する段階と、を更に含むことを特徴とする請求項9に記載のDRAMメモリモジュールのメモリ重複除去方法。 - DRAMメモリモジュールのメモリ重複除去方法であって、
複数のハッシュテーブルを含むハッシュテーブルアレイに、読出し要請に従って検索される(retrieve)ことができるように複数のデータブロックを格納するハッシュテーブルメモリと、
ここで、前記ハッシュテーブルの各々は、複数の物理的バケット(Buckets)及び複数の仮想バケット(Virtual buckets)を含み、前記複数の仮想バケットの各々は、複数の前記物理的バケットを含み、前記物理的バケットの各々は、ウェイ(Ways)を含み、
前記物理的バケットの中で対応する1つに前記格納されたデータブロック各々の位置を示す複数のポインタ(Pointers)を含むALUTM(Address lookup table memory)と、
前記ハッシュテーブルアレイが満杯である場合、前記ハッシュテーブルメモリに格納されないデータブロックを格納するためのバッファメモリと、を前記DRAMメモリモジュール内に定義する段階と、
インカミングデータブロックに対応する書込み要請を受信する段階と、
前記インカミングデータブロックに対してハッシュ関数を遂行することによってハッシュ値を計算する段階と、
前記ハッシュ値に従って前記複数の物理的バケット中の目的の物理的バケットにアクセスする段階と、
前記目的の物理的バケットに前記インカミングデータブロックを格納するか否かを決定する段階と、
前記インカミングデータブロックと異なる他のデータブロックが前記目的の物理的バケットに格納されている場合、前記目的の物理的バケットが位置する複数の前記仮想バケットの中の1つに属する前記物理的バケットの中の1つに前記インカミングデータブロックを格納する段階と、を含む、ことを特徴とするDRAMメモリモジュールのメモリ重複除去方法。 - 前記インカミングデータブロックが前記目的の物理的バケットに格納される時、前記ALUTM内の複数のポインタの中から対応する1つのポインタを更新する段階を更に含む、ことを特徴とする請求項16に記載のDRAMメモリモジュールのメモリ重複除去方法。
- 前記対応する1つのポインタに対応する頻度カウント(frequency count)を1だけ減少させる段階を更に含む、ことを特徴とする請求項17に記載のDRAMメモリモジュールのメモリ重複除去方法。
- 前記頻度カウントが0に到達した時、前記目的の物理的バケットに格納された前記インカミングデータブロックを除去する段階を更に含む、ことを特徴とする請求項18に記載のDRAMメモリモジュールのメモリ重複除去方法。
- 前記ハッシュテーブルアレイに格納された複数のデータブロックに対応する読出し要請を受信する段階と、
前記複数のデータブロックに対応する前記複数のポインタの中から対応する1つのポインタを前記ALUTMから検索する段階と、
前記ハッシュテーブルメモリ内で、前記対応する1つのポインタに基づいて前記複数のデータブロックにアクセスする段階と、
再組立された(reassembled)データを生成するために前記複数のデータブロックを再組立する段階と、
前記メモリモジュールからメモリコントローラに前記再組立されたデータを伝送する段階と、を更に含む、ことを特徴とする請求項16に記載のDRAMメモリモジュールのメモリ重複除去方法。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201662316402P | 2016-03-31 | 2016-03-31 | |
US62/316,402 | 2016-03-31 | ||
US15/162,512 | 2016-05-23 | ||
US15/162,512 US9966152B2 (en) | 2016-03-31 | 2016-05-23 | Dedupe DRAM system algorithm architecture |
Publications (3)
Publication Number | Publication Date |
---|---|
JP2017188096A JP2017188096A (ja) | 2017-10-12 |
JP2017188096A5 JP2017188096A5 (ja) | 2020-04-23 |
JP6764359B2 true JP6764359B2 (ja) | 2020-09-30 |
Family
ID=59961545
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2017053255A Active JP6764359B2 (ja) | 2016-03-31 | 2017-03-17 | 重複除去dramメモリモジュール及びそのメモリ重複除去方法 |
Country Status (5)
Country | Link |
---|---|
US (1) | US9966152B2 (ja) |
JP (1) | JP6764359B2 (ja) |
KR (1) | KR20170112958A (ja) |
CN (1) | CN107273042B (ja) |
TW (1) | TWI683217B (ja) |
Families Citing this family (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10437785B2 (en) * | 2016-03-29 | 2019-10-08 | Samsung Electronics Co., Ltd. | Method and apparatus for maximized dedupable memory |
US10162554B2 (en) * | 2016-08-03 | 2018-12-25 | Samsung Electronics Co., Ltd. | System and method for controlling a programmable deduplication ratio for a memory system |
US10296614B2 (en) * | 2016-12-07 | 2019-05-21 | International Business Machines Corporation | Bulk data insertion in analytical databases |
CN110109915B (zh) * | 2018-01-18 | 2024-01-05 | 伊姆西Ip控股有限责任公司 | 用于管理哈希表的方法、设备和计算机程序产品 |
US10628072B2 (en) * | 2018-08-21 | 2020-04-21 | Samsung Electronics Co., Ltd. | Scalable architecture enabling large memory system for in-memory computations |
US11079954B2 (en) * | 2018-08-21 | 2021-08-03 | Samsung Electronics Co., Ltd. | Embedded reference counter and special data pattern auto-detect |
US11334284B2 (en) | 2018-09-24 | 2022-05-17 | Samsung Electronics Co., Ltd. | Database offloading engine |
KR20200145902A (ko) | 2019-06-19 | 2020-12-31 | 삼성디스플레이 주식회사 | 표시 패널 |
CN110321079B (zh) * | 2019-06-27 | 2023-04-25 | 暨南大学 | 一种基于混合页面的磁盘缓存去重方法 |
EP3764233A1 (en) * | 2019-07-08 | 2021-01-13 | Continental Teves AG & Co. OHG | Method of identifying errors in or manipulations of data or software stored in a device |
JP7367470B2 (ja) * | 2019-11-05 | 2023-10-24 | 富士通株式会社 | 情報処理装置およびキャッシュ制御プログラム |
CN112433675B (zh) * | 2020-11-23 | 2024-03-08 | 山东可信云信息技术研究院 | 一种针对超融合架构的存储空间优化方法及系统 |
CN112799841B (zh) * | 2021-01-29 | 2023-04-25 | 烽火通信科技股份有限公司 | 一种数据对象存储管理的方法和装置 |
Family Cites Families (54)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5796939A (en) * | 1997-03-10 | 1998-08-18 | Digital Equipment Corporation | High frequency sampling of processor performance counters |
US6438560B1 (en) | 1999-09-16 | 2002-08-20 | International Business Machines Corporation | Reuse of immutable objects during object creation |
US7130229B2 (en) * | 2002-11-08 | 2006-10-31 | Intel Corporation | Interleaved mirrored memory systems |
US20050120265A1 (en) * | 2003-12-02 | 2005-06-02 | Pline Steven L. | Data storage system with error correction code and replaceable defective memory |
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 |
JP5026213B2 (ja) | 2007-09-28 | 2012-09-12 | 株式会社日立製作所 | ストレージ装置及びデータ重複排除方法 |
US8219534B2 (en) | 2008-02-27 | 2012-07-10 | Dell Products L.P. | Multiple file compaction for network attached storage |
US9401967B2 (en) | 2010-06-09 | 2016-07-26 | Brocade Communications Systems, Inc. | Inline wire speed deduplication system |
US9141625B1 (en) | 2010-06-22 | 2015-09-22 | F5 Networks, Inc. | Methods for preserving flow state during virtual machine migration and devices thereof |
US20120011144A1 (en) | 2010-07-12 | 2012-01-12 | Frederik Transier | Aggregation in parallel computation environments with shared memory |
US8645636B2 (en) * | 2010-09-29 | 2014-02-04 | International Business Machines Corporation | Methods for managing ownership of redundant data and systems thereof |
US20120158674A1 (en) | 2010-12-20 | 2012-06-21 | Mark David Lillibridge | Indexing for deduplication |
US9639543B2 (en) | 2010-12-28 | 2017-05-02 | Microsoft Technology Licensing, Llc | Adaptive index for data deduplication |
US8462781B2 (en) | 2011-04-06 | 2013-06-11 | Anue Systems, Inc. | Systems and methods for in-line removal of duplicate network packets |
CN102187642B (zh) * | 2011-04-14 | 2015-01-07 | 华为技术有限公司 | 在哈希表中添加、查找或删除键值的方法及装置 |
US8630294B1 (en) * | 2011-05-11 | 2014-01-14 | Juniper Networks, Inc. | Dynamic bypass mechanism to alleviate bloom filter bank contention |
US9501421B1 (en) | 2011-07-05 | 2016-11-22 | Intel Corporation | Memory sharing and page deduplication using indirect lines |
US8886508B2 (en) | 2011-08-22 | 2014-11-11 | Freescale Semiconductor, Inc. | Circuit simulation acceleration using model caching |
US9298707B1 (en) | 2011-09-30 | 2016-03-29 | Veritas Us Ip Holdings Llc | Efficient data storage and retrieval for backup systems |
US9170940B2 (en) | 2011-12-07 | 2015-10-27 | Intel Corporation | Techniques to prelink software to improve memory de-duplication in a virtual system |
US9116812B2 (en) | 2012-01-27 | 2015-08-25 | Intelligent Intellectual Property Holdings 2 Llc | Systems and methods for a de-duplication cache |
US20130275699A1 (en) | 2012-03-23 | 2013-10-17 | Hicamp Systems, Inc. | Special memory access path with segment-offset addressing |
US9177028B2 (en) | 2012-04-30 | 2015-11-03 | International Business Machines Corporation | Deduplicating storage with enhanced frequent-block detection |
JP5352712B2 (ja) * | 2012-05-29 | 2013-11-27 | 株式会社日立ソリューションズ | 検索方法、統合検索サーバ及びコンピュータプログラム |
US9069810B2 (en) | 2012-07-25 | 2015-06-30 | International Business Machines Corporation | Systems, methods and computer program products for reducing hash table working-set size for improved latency and scalability in a processing system |
US20140115260A1 (en) | 2012-10-18 | 2014-04-24 | Oracle International Corporation | System and method for prioritizing data in a cache |
US9135383B2 (en) | 2012-11-16 | 2015-09-15 | Freescale Semiconductor, Inc. | Table model circuit simulation acceleration using model caching |
US9424267B2 (en) | 2013-01-02 | 2016-08-23 | Oracle International Corporation | Compression and deduplication layered driver |
US9141554B1 (en) * | 2013-01-18 | 2015-09-22 | Cisco Technology, Inc. | Methods and apparatus for data processing using data compression, linked lists and de-duplication techniques |
JP6094267B2 (ja) * | 2013-03-01 | 2017-03-15 | 日本電気株式会社 | ストレージシステム |
US9141550B2 (en) * | 2013-03-05 | 2015-09-22 | International Business Machines Corporation | Specific prefetch algorithm for a chip having a parent core and a scout core |
KR20140114515A (ko) * | 2013-03-15 | 2014-09-29 | 삼성전자주식회사 | 불휘발성 메모리 장치 및 그것의 중복 데이터 제거 방법 |
US9537771B2 (en) | 2013-04-04 | 2017-01-03 | Marvell Israel (M.I.S.L) Ltd. | Exact match hash lookup databases in network switch devices |
US9471500B2 (en) | 2013-04-12 | 2016-10-18 | Nec Corporation | Bucketized multi-index low-memory data structures |
US9148387B2 (en) | 2013-05-10 | 2015-09-29 | Brocade Communications Systems, Inc. | Hardware hash table virtualization in multi-packet processor networking systems |
US10339109B2 (en) | 2013-07-15 | 2019-07-02 | International Business Machines Corporation | Optimizing hash table structure for digest matching in a data deduplication system |
US20150019815A1 (en) | 2013-07-15 | 2015-01-15 | International Business Machines Corporation | Utilizing global digests caching in data deduplication of workloads |
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 |
WO2015066719A2 (en) * | 2013-11-04 | 2015-05-07 | Falconstor, Inc. | Use of solid state storage devices and the like in data deduplication |
WO2015067382A1 (en) | 2013-11-08 | 2015-05-14 | Fujitsu Technology Solutions Intellectual Property Gmbh | Storage appliance and method thereof for inline deduplication with segmentation |
KR20150067583A (ko) | 2013-12-10 | 2015-06-18 | 삼성전자주식회사 | 불휘발성 메모리 장치 및 그것의 중복 데이터 제거 방법 |
US9792063B2 (en) | 2014-01-15 | 2017-10-17 | Intel Corporation | Deduplication-based data security |
US10380183B2 (en) | 2014-04-03 | 2019-08-13 | International Business Machines Corporation | Building and querying hash tables on processors |
US8868825B1 (en) | 2014-07-02 | 2014-10-21 | Pure Storage, Inc. | Nonrepeating identifiers in an address space of a non-volatile solid-state storage |
EP2966562A1 (en) | 2014-07-09 | 2016-01-13 | Nexenta Systems, Inc. | Method to optimize inline i/o processing in tiered distributed storage systems |
US9489239B2 (en) | 2014-08-08 | 2016-11-08 | PernixData, Inc. | Systems and methods to manage tiered cache data storage |
CN104298614B (zh) * | 2014-09-30 | 2017-08-11 | 华为技术有限公司 | 数据块在存储设备中存储方法和存储设备 |
US9740631B2 (en) | 2014-10-07 | 2017-08-22 | Google Inc. | Hardware-assisted memory compression management using page filter and system MMU |
US9703797B2 (en) | 2015-02-18 | 2017-07-11 | Exagrid Systems, Inc. | Multi-level deduplication |
US9892053B2 (en) | 2015-03-24 | 2018-02-13 | Intel Corporation | Compaction for memory hierarchies |
CN104978151B (zh) * | 2015-06-19 | 2017-12-29 | 浪潮电子信息产业股份有限公司 | 基于应用感知的重复数据删除存储系统中的数据重构方法 |
US10089320B2 (en) | 2015-07-31 | 2018-10-02 | Hiveio Inc. | Method and apparatus for maintaining data consistency in an in-place-update file system with data deduplication |
-
2016
- 2016-05-23 US US15/162,512 patent/US9966152B2/en active Active
- 2016-11-16 KR KR1020160152819A patent/KR20170112958A/ko active Search and Examination
-
2017
- 2017-01-06 TW TW106100357A patent/TWI683217B/zh active
- 2017-03-17 JP JP2017053255A patent/JP6764359B2/ja active Active
- 2017-03-31 CN CN201710206477.9A patent/CN107273042B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN107273042B (zh) | 2021-10-08 |
TWI683217B (zh) | 2020-01-21 |
CN107273042A (zh) | 2017-10-20 |
TW201737092A (zh) | 2017-10-16 |
JP2017188096A (ja) | 2017-10-12 |
US20170286004A1 (en) | 2017-10-05 |
US9966152B2 (en) | 2018-05-08 |
KR20170112958A (ko) | 2017-10-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6764359B2 (ja) | 重複除去dramメモリモジュール及びそのメモリ重複除去方法 | |
JP6764362B2 (ja) | メモリの重複除去方法及び重複除去dramメモリモジュール | |
JP6893805B2 (ja) | メモリモジュールの重複メモリ除去方法、及びそのためのdramメモリモジュール | |
JP6205650B2 (ja) | 不均等アクセス・メモリにレコードを配置するために不均等ハッシュ機能を利用する方法および装置 | |
JP6920107B2 (ja) | データの取得方法及び格納方法並びに重複除去モジュール | |
CN107153707B (zh) | 一种针对非易失内存的哈希表构建方法及系统 | |
CN108984420A (zh) | 管理非易失性存储器(nvm)中的多个名称空间 | |
US10678704B2 (en) | Method and apparatus for enabling larger memory capacity than physical memory size | |
CN109165321B (zh) | 一种基于非易失内存的一致性哈希表构建方法和系统 | |
US10528284B2 (en) | Method and apparatus for enabling larger memory capacity than physical memory size | |
US11093169B1 (en) | Lockless metadata binary tree access | |
CN114840134A (zh) | 日志归并树键值存储系统及相关方法和相关设备 | |
US11914587B2 (en) | Systems and methods for key-based indexing in storage devices | |
Song et al. | LIFM: A Persistent Learned Index for Flash Memory | |
CN117130562A (zh) | 一种针对持久性内存的写优化和高性能索引方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20200316 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20200316 |
|
A871 | Explanation of circumstances concerning accelerated examination |
Free format text: JAPANESE INTERMEDIATE CODE: A871 Effective date: 20200316 |
|
A975 | Report on accelerated examination |
Free format text: JAPANESE INTERMEDIATE CODE: A971005 Effective date: 20200317 |
|
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: 20200901 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20200831 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20200911 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 6764359 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |