JP2017208096A - データの回収方法及び格納方法並びに重複除去モジュール - Google Patents

データの回収方法及び格納方法並びに重複除去モジュール Download PDF

Info

Publication number
JP2017208096A
JP2017208096A JP2017099688A JP2017099688A JP2017208096A JP 2017208096 A JP2017208096 A JP 2017208096A JP 2017099688 A JP2017099688 A JP 2017099688A JP 2017099688 A JP2017099688 A JP 2017099688A JP 2017208096 A JP2017208096 A JP 2017208096A
Authority
JP
Japan
Prior art keywords
hash
data
bucket
memory
reference counter
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
JP2017099688A
Other languages
English (en)
Other versions
JP6920107B2 (ja
JP2017208096A5 (ja
Inventor
冬 岩 姜
Dongyan Jiang
冬 岩 姜
常 惠 林
Changhui Lin
常 惠 林
クリシュナ マラディ,
Malladi Krishna
クリシュナ マラディ,
鍾 民 金
Jongmin Kim
鍾 民 金
宏 忠 鄭
Hongzhong Zheng
宏 忠 鄭
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
Priority claimed from US15/161,136 external-priority patent/US9983821B2/en
Priority claimed from US15/162,517 external-priority patent/US10496543B2/en
Priority claimed from US15/476,757 external-priority patent/US10678704B2/en
Application filed by Samsung Electronics Co Ltd filed Critical Samsung Electronics Co Ltd
Publication of JP2017208096A publication Critical patent/JP2017208096A/ja
Publication of JP2017208096A5 publication Critical patent/JP2017208096A5/ja
Application granted granted Critical
Publication of JP6920107B2 publication Critical patent/JP6920107B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/0292User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0253Garbage collection, i.e. reclamation of unreferenced memory
    • G06F12/0261Garbage collection, i.e. reclamation of unreferenced memory using reference counting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • 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
    • 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

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 Of A Hierarchy Structure (AREA)
  • Memory System (AREA)

Abstract

【課題】データの回収及び格納方法並びに重複除去モジュールを提供する。
【解決手段】本発明の重複除去モジュールに関連するメモリに格納されたデータを回収する方法は、データの論理的アドレスを識別する段階と、変換テーブルの論理的アドレスの少なくとも一部を検索して論理的アドレスに従うデータのPLIDを識別する段階と、PLIDに対応するそれぞれの物理的ラインの位置を特定する段階と、それぞれの物理的ラインからデータを回収する段階と、を有し、データを回収する段階は、それぞれのハッシュシリンダを読出しキャッシュにコピーする段階を含み、それぞれのハッシュシリンダは、それぞれの物理的ラインを含むそれぞれのハッシュバケットと、それぞれの物理的ラインに関連するそれぞれの参照カウンターを含むそれぞれの参照カウンターバケットと、を含む。
【選択図】図4

Description

本発明は、システムメモリ及び格納装置に係り、より詳細には、高容量、低待機時間(high capacity low latency)のメモリ及び格納装置を具現するデータの回収方法及び格納方法並びに重複除去モジュールに関する。
データベース(databases)、デスクトップコンピュータ仮想化(virtual desktop infrastructure)、及びデータ分析(data analytics)のような代表的な最新コンピュータアプリケーション(applications)は大容量メインメモリ(main memory)を必要とする。コンピュータシステムがより複雑なデータ及び格納集約型アプリケーションを遂行するように拡張することによって、より大きいメモリ容量に対する要求は比例して増加する。
代表的なRAM(random−access memory)はRAMの物理的設計によって格納可能なデータの量が制限される。例えば、8GB DRAMは代表的に最大8GBのデータを保持する。また、将来のデータセンター(data center)のアプリケーションは、高容量、低待機時間(high capacity low latency)のメモリを使用する。
このような背景技術で開示された上述した情報は本発明の背景の理解を助けるためのものであり、従って従来技術を構成しない情報を含む。
本発明は、上記従来技術に鑑みてなされたものであって、本発明の目的は、物理的メモリサイズよりも大きいメモリ容量を可能にするためのデータの回収方法及び格納方法並びに重複除去モジュールを提供することにある。
本明細書の実施形態の態様はRAMの物理的メモリサイズよりも大きいRAM内のメモリ容量を可能にする方法及び関連する構造を示す。本発明の実施形態によると、重複除去アルゴリズム(deduplication algorithms)はデータメモリの減少及びコンテキストアドレス指定(context addressing)を達成するために使用される。本発明の実施形態によると、ユーザーデータ(user data)はユーザーデータのハッシュ値(hash value)によって索引付けされたハッシュテーブル(hash table)に格納される。
上記目的を達成するためになされた本発明の一態様による方法は、重複除去モジュール(dedupe module)に関連するメモリに格納されたデータを回収する方法であって、前記重複除去モジュールは、読出しキャッシュ(read cache)を含み、前記メモリは、変換テーブル(translation table)及び複合型データ構造を含み、前記複合型データ構造は、ハッシュテーブル(hash table)及び参照カウンターテーブル(reference counter table)を含み、前記ハッシュテーブル及び前記参照カウンターテーブルの各々は、前記複合型データ構造の複数のハッシュシリンダ(hash cylinder)に格納され、前記ハッシュテーブルは、各ハッシュバケットが各物理的ラインにデータを格納する複数の物理的ラインを含む複数のハッシュバケット(bucket)を含み、前記参照カウンターテーブルは、各参照カウンターバケットが複数の参照カウンターを含む複数の参照カウンターバケットを含み、前記方法は、前記データの論理的アドレス(logical address)を識別する段階と、前記変換テーブルの前記論理的アドレスの少なくとも一部を検索して前記論理的アドレスに従う前記データのPLID(physical line ID:物理的ラインID)を識別する段階と、前記PLIDに対応する、前記複数の物理的ラインのそれぞれの物理的ラインの位置を特定する段階と、前記それぞれの物理的ラインから前記データを回収する段階と、を有し、前記データを回収する段階は、前記複数のハッシュシリンダのそれぞれのハッシュシリンダを前記読出しキャッシュにコピーする段階を含み、前記それぞれのハッシュシリンダは、前記それぞれの物理的ラインを含む、前記複数のハッシュバケットのそれぞれのハッシュバケットと、前記それぞれの物理的ラインに関連するそれぞれの参照カウンターを含む、前記複数の参照カウンターバケットのそれぞれの参照カウンターバケットと、を含む。
前記方法は、前記PLIDに基づいて、前記データが前記ハッシュテーブルに格納されていると判断する段階を更に含み得る。
前記PLIDは、前記データに適用された第1ハッシュ関数を利用して生成され、前記PLIDは、前記ハッシュテーブルの位置を示すアドレスを含み得る。
前記PLIDは、前記データが前記ハッシュテーブルに格納されたか又はオーバーフローメモリ領域(overflow memory region)に格納されたかを示す第1識別子(identifier)と、前記データが格納された行を示す第2識別子と、前記データが格納された列を示す第3識別子と、を含み得る。
前記複合型データ構造は、各署名バケットが複数の署名を含む複数の署名バケットを含む署名テーブルを更に含み、前記それぞれのハッシュシリンダは、前記複数の署名バケットのそれぞれの署名バケットを更に含み、前記それぞれの署名バケットは、前記それぞれの物理的ラインに関連するそれぞれの署名を含み得る。
前記PLIDは、前記データに適用された第1ハッシュ関数を利用して生成され、前記PLIDは、前記ハッシュテーブルの位置を示すアドレスを含み、前記複数の署名は、前記第1ハッシュ関数よりも小さい第2ハッシュ関数を利用して生成され得る。
各参照カウンターは、前記ハッシュテーブルに格納された該当データに対する重複除去回数を追跡し得る。
上記目的を達成するためになされた本発明の一態様による重複除去エンジン(dedupe engine)に関連するメモリにデータを格納する方法は、格納されるデータを識別する段階と、第1ハッシュ関数(hash function)を利用して前記データが前記メモリのハッシュテーブル(hash table)に格納されなければならない位置に対応する第1ハッシュ値(hash value)を決定する段階と、前記第1ハッシュ値に対応する前記ハッシュテーブルの位置に前記データを格納する段階と、前記第1ハッシュ関数よりも小さい第2ハッシュ関数を利用して前記データが格納されなければならない位置にもまた対応する第2ハッシュ値を決定する段階と、前記メモリの変換テーブル(translation table)に前記第1ハッシュ値を格納する段階と、前記メモリの署名テーブルに前記第2ハッシュ値を格納する段階と、を有する。
前記方法は、前記データに対応する、参照カウンターテーブル(reference counter table)の参照カウンターを増加させる段階を更に含み得る。
前記メモリは、複数のデータを格納する前記ハッシュテーブルと、前記第1ハッシュ関数を利用して生成される複数のPLID(physical line ID)を格納する前記変換テーブルと、前記第2ハッシュ関数を利用して生成される複数の署名を格納する前記署名テーブルと、各参照カウンターが前記ハッシュテーブルに格納された該当データに対する重複除去回数を追跡する複数の参照カウンターを格納する参照カウンターテーブルと、オーバーフローメモリ領域(overflow memory region)と、を含み得る。
前記複数のPLIDの各々は、前記データが前記ハッシュテーブルに格納されたか又は前記オーバーフローメモリ領域に格納されたかを示す第1識別子(identifier)と、前記データが格納された行を示す第2識別子と、前記データが格納された列を示す第3識別子と、含み得る。
前記ハッシュテーブル、前記署名テーブル、及び前記参照カウンターテーブルは、複合型データ構造に統合され、前記複合型データ構造は、複数のハッシュシリンダ(cylinder)を含み、各ハッシュシリンダは、複数の物理的ラインを含むハッシュバケットと、前記複数の物理的ラインに対応するそれぞれの署名を含む署名バケットと、前記複数の物理的ラインに対応するそれぞれの参照カウンターを含む参照カウンターバケットと、を含み得る。
前記第1ハッシュ値に対応する前記ハッシュテーブルの位置に前記データを格納する段階は、前記第1ハッシュ値に対応する前記ハッシュバケットに前記データを格納する段階を含み、前記メモリの署名テーブルに前記第2ハッシュ値を格納する段階は、前記データが格納された前記ハッシュバケットに対応する前記署名バケットに前記第2ハッシュ値を格納する段階を含み得る。
上記目的を達成するためになされた本発明の一態様による重複除去モジュールは、読出しキャッシュ(read cache)と、ホストシステムからデータ回収要請を受信する重複除去エンジン(dedupe engine)と、メモリと、を備え、前記メモリは、変換テーブル(translation table)及び複合型データ構造を含み、前記複合型データ構造は、各ハッシュバケットが各物理的ラインにデータを格納する複数の物理的ラインを含む複数のハッシュバケット(hash bucket)を含むハッシュテーブル(hash table)と、各参照カウンターバケットが複数の参照カウンターを含む複数の参照カウンターバケット(reference counter bucket)を含む参照カウンターテーブルと、各ハッシュシリンダが前記ハッシュバケットの中の1つ及び前記参照カウンターバケットの中の1つを含む複数のハッシュシリンダ(cylinder)と、を含み、前記データ回収要請は、前記重複除去エンジンが、前記データの論理的アドレスを識別し、前記変換テーブルの前記論理的アドレスの少なくとも一部を検索して前記論理的アドレスに従う前記データのPLID(physical line ID:物理的ラインID)を識別し、前記PLIDに対応する、前記複数の物理的ラインのそれぞれの物理的ラインの位置を特定し、前記それぞれの物理的ラインから前記データを回収することをもたらし、前記データの回収は、前記複数のハッシュシリンダのそれぞれのハッシュシリンダを前記読出しキャッシュにコピーすることを含み、前記それぞれのハッシュシリンダは、前記それぞれの物理的ラインを含む、前記複数のハッシュバケットのそれぞれのハッシュバケットと、前記それぞれの物理的ラインに関連するそれぞれの参照カウンターを含む、前記複数の参照カウンターバケットのそれぞれの参照カウンターバケットと、を含む。
前記データ回収要請は、前記重複除去エンジンが、前記PLIDに基づいて、前記データが前記ハッシュテーブルに格納されていると判断することを更にもたらし得る。
前記PLIDは、前記データに適用された第1ハッシュ関数を利用して生成され、前記PLIDは、前記ハッシュテーブルの位置を示すアドレスを含み得る。
前記PLIDは、前記データが前記ハッシュテーブルに格納されたか又はオーバーフローメモリ領域(overflow memory region)に格納されたかを示す第1識別子(identifier)と、前記データが格納された行を示す第2識別子と、前記データが格納された列を示す第3識別子と、を含み得る。
前記複合型データ構造は、各署名バケットが複数の署名を含む複数の署名バケットを含む署名テーブルを更に含み、前記それぞれのハッシュシリンダは、前記複数の署名バケットのそれぞれの署名バケットを更に含み、前記それぞれの署名バケットは、前記それぞれの物理的ラインに関連するそれぞれの署名を含み得る。
前記PLIDは、前記データに適用された第1ハッシュ関数を利用して生成され、前記PLIDは、前記ハッシュテーブルの位置を示すアドレスを含み、前記複数の署名は、前記第1ハッシュ関数よりも小さい第2ハッシュ関数を利用して生成され得る。
各参照カウンターは、前記ハッシュテーブルに格納された該当データに対する重複除去回数を追跡し得る。
上記目的を達成するためになされた本発明の他の態様による重複除去モジュールは、ホストインターフェイスと、前記ホストインターフェイスを通じてホストシステムからデータ伝送要請を受信する伝送管理部と、複数のパーティション(partition)と、を備え、各パーティションは、前記伝送管理部からパーティションデータ要請を受信する重複除去エンジン(dedupe engine)と、複数のメモリコントローラと、前記重複除去エンジンと前記メモリコントローラとの間に提供されるメモリ管理部と、各メモリモジュールが前記複数のメモリコントローラの中の1つに連結される複数のメモリモジュールと、を含む。
上記目的を達成するためになされた本発明の更に他の態様による重複除去モジュールは、読出しキャッシュ(read cache)と、メモリと、複数のハッシュバケットの第1ハッシュバケットに対するV個の仮想バケットを識別する重複除去エンジンと、を備え、前記メモリは、変換テーブル(translation table)と、各ハッシュバケットが各物理的ラインにデータを格納する複数の物理的ラインを含む複数のハッシュバケット(hash bucket)を含むハッシュテーブルと、各参照カウンターバケットが複数の参照カウンターを含む複数の参照カウンターバケット(reference counter bucket)を含む参照カウンターテーブルと、を含み、前記仮想バケットは、前記第1ハッシュバケットに隣接する前記複数のハッシュバケットの中の他のものであり、前記仮想バケットは、前記第1ハッシュバケットがフルに満たされた場合、前記第1ハッシュバケットのデータの一部を格納し、Vは、第1ハッシュバケットの仮想バケットがフルに満たされた場合に動的に調節される整数である。
本発明によれば、同一なデータで構成される複数のデータブロックを1つの格納されたデータブロックに関連させることで、データブロックの重複コピーはコンピュータメモリ(computer memory)によって減少されるか又は除去され、このようにすることでメモリ装置内の不必要なデータコピーの全体量が減少する。不必要なデータコピー(redundant copies of data)の減少は、読出し待機時間を減少させ、メモリ帯域幅(bandwidth)を増加させ、潛在的に電力を節減することができる。
本発明の一実施形態による重複除去モジュールのブロック図である。 本発明の他の実施形態による重複除去モジュールのブロック図である。 本発明の一実施形態による重複除去エンジンの論理的観点のブロック図である。 本発明の一実施形態によるレベル−1変換テーブルを含む重複除去エンジンの論理的観点のブロック図である。 本発明の一実施形態によるレベル−2変換テーブルを含む重複除去エンジンの論理的観点のブロック図である。 本発明の一実施形態による動的L2マップテーブル及びオーバーフローメモリ領域を有するレベル−2変換テーブルを含む重複除去エンジンの論理的観点のブロック図である。 本発明の一実施形態によるハッシュシリンダの論理的観点のブロック図である。 本発明の一実施形態による複合型データ構造の論理的観点のブロック図である。 本発明の一実施形態による仮想バケットに関連するハッシュバケット及び該当参照カウンターバケットの論理的観点のブロック図である。 本発明の一実施形態によるRAMに格納されたデータを回収する方法を示すフローチャートである。 本発明の一実施形態によるRAMにデータを格納する方法を示すフローチャートである。
以下、本発明を実施するための形態の具体例を、図面を参照しながら詳細に説明する。
本明細書の実施形態は物理的メモリサイズよりも大きいメモリ(例えば、RAM(random−access memory))内のメモリ容量を可能にする方法及び関連する構造を示す。本発明の実施形態によると、重複除去アルゴリズム(deduplication algorithms)はデータメモリの減少及びコンテキストアドレス指定(context addressing)を達成するために使用される。本発明の実施形態によると、ユーザーデータ(user data)はユーザーデータのハッシュ値(hash value)によって索引付けされたハッシュテーブル(hash table)に格納される。
DRAM(dynamic random access memory)技術がメモリ容量に対するこのような増加する要求を充足させるために20nmプロセス技術を超えて積極的に拡張する間に、重複除去のような技法(techniques)はシステムメモリの物理的メモリ容量よりも2、3倍程度以上のシステムメモリの仮想メモリ容量を増加させるために適用される。また、本発明の実施形態は他のタイプのメモリ(例えば、フラッシュメモリ(flash memory))を利用する。
補助圧縮(auxiliary compaction)方法を使用して、本発明の実施形態は、全てのメモリ資源を十分に利用して高い重複除去比率を持続的に達成するために高度に重複除去されたメモリ及びデータ構造を提供する。
高容量(high capacity)及び低待機時間(low latency)を有するメモリはデータセンターアプリケーション(data center applications)のために大きく要求される。このようなメモリ装置は、それらの物理的メモリサイズ(size)よりも大きいメモリ容量を提供するためにデータ圧縮方式(scheme)のみならず、重複除去方式も採用する。重複除去されたメモリ装置は、重複するユーザーデータを減らし、使用可能なメモリ資源を全て利用して高い重複除去比率を持続的に達成することができる。また、重複除去されたメモリ装置によって採用される重複除去方式は重複除去されたデータに対する効果的なアドレス指定を達成することができる。
データ重複排除又は除去(data deduplication、or data duplication elimination)はメモリ装置内の不必要なデータ(redundant data)の減少を示し、このようにすることによってメモリ装置の容量コストが減少する。データ重複除去で、データ客体/アイテム(object/item、例えば、データファイル)は1つ以上のデータライン/チャンク/ブロック(lines/chunks/blocks)に分割される。同一なデータに構成される複数のデータブロックを1つの格納されたデータブロックに関連させることで、データブロックの重複コピーは、コンピュータメモリ(computer memory)によって減少されるか又は除去され、このようにすることによってメモリ装置内の不必要なデータコピーの全体量が減少する。不必要なデータコピー(redundant copies of data)の減少は、読出し待機時間を減少させ、メモリ帯域幅(bandwidth)を増加させ、潛在的に電力節減を惹起する。
従って、重複されたデータコピーを1つのデータコピーに減少させることができる場合、物理的な資源の量を同様に使用しながらも、メモリ装置の全体使用可能な容量は増加する。その結果として、メモリ装置の経済的使用はデータの再書込み回数(data re−write count)を減少させ、そしてメモリに既に格納された重複されたデータブロックに対する書込み要請が捨てられるため、データ重複除去を実行するメモリ装置の寿命は、効果的に書込み耐久性を増加させることによって延長される。
データ重複除去の関連分野の方法はメモリ内(in−memory)重複除去技術を使用し、ここで、重複除去エンジン(deduplication engine)はCPU中心接近方式(CPU−centric approach)でCPU(central processing unit)又はメモリコントローラ(memory controller;MC)に統合される。このような方法は、CPUプロセッサの重複の認識を可能にするために、そしてメモリコントローラの制御に従って重複除去されたメモリ動作(例えば、コンテンツ検索(content lookups)、参照カウントアップデート(reference count updates)、等)の提供を試図するためにメモリコントローラと共に動作する重複除去されたキャッシュ(deduplicated cache:DDC)を代表的に具現する。重複除去方法は、また重要経路(critical path)から変換フェッチ(translation fetch)を除去してデータ読出しを向上させる変換ラインをキャッシング(caching)するためのキャッシュ(cache)であり、索引バッファ(lookaside buffer)に類似する直接変換バッファ(direct translation buffer:DTB)を具現する。
重複除去はハードドライブ(hard drives)のために最も普遍的に使用される。しかし、DRAMのような揮発性メモリの領域では微細な(fine grain)重複除去を提供することに関係する。
図面に関連して以下で説明する詳細な説明は、本発明の実施形態によって提供されるRAM(又は他のメモリ格納装置)の物理的メモリサイズよりも大きいRAM(又は他のメモリ格納装置)内のメモリ容量を可能にするための方法及び関連する構造の例示的な実施形態の説明として意図したものであり、本発明が構成されるかまたは利用される唯一の形態を表現するために意図したものではない。説明は図示した実施形態に関連して本発明の特徴を明らかにする。しかし、同一であるか又は同等な機能及び構造が本発明の思想及び範囲内に含まれるように意図する他の実施形態によって達成されることは理解されるべきである。本明細書の他の部分で言及するように同一の要素番号は同一の要素又は特徴を示す。
図1は、本発明の一実施形態による重複除去モジュールのブロック図である。図1を参照すると、本実施形態による重複除去モジュール(dedupe module)100は、ブリッジ(bridge)130、メモリコントローラ(memory controller)140、ホストインターフェイス(host interface;host I/F)160、読出しキャッシュ(read cache)170、1つ以上のメモリモジュール(memory modules)180、及び重複除去エンジン(de
dupe engine)200を含む。
ブリッジ130は重複除去エンジン200及び読出しキャッシュ170がメモリコントローラ140と通信するようにするインターフェイスを提供する。メモリコントローラ140は通信するためにブリッジ130及びメモリモジュール180に対するインターフェイスを提供する。読出しキャッシュ170はメモリモジュール180の一部である。
一実施形態において、ブリッジ180は存在しない。この場合、メモリコントローラ140は重複除去エンジン200及び読出しキャッシュ170と直接的に通信する。
重複除去エンジン200はメモリモジュール180にデータを格納するか又はメモリモジュール180のデータにアクセスするためにホストインターフェイス160を通じてホストシステムと通信する。重複除去エンジン200はホストインターフェイス160を通じてホストシステムの他の構成要素と更に通信する。
メモリモジュール180はDRAMに連結するためのDIMM(dual in−line memory module)スロット(slots)であるか、或いはフラッシュメモリ(flash memory)、他のタイプのメモリ等に連結するためのスロットである。
図2は、本発明の他の実施形態による重複除去モジュールのブロック図である。図2を参照すると、重複除去モジュール(dedupe module)150は、1つ以上のパーティション(partitions)250(例えば、パーティション0(250−0)、パーティション1(250−1)、等)、伝送管理部(transfer manager)230、及びホストインターフェイス162を含む。各パーティション250は、重複除去エンジン202、メモリ管理部210、1つ以上のメモリコントローラ(例えば、メモリコントローラ0(142)、メモリコントローラ1(144)等)、及び1つ以上のメモリモジュール(例えば、DIMM/フラッシュ0(182)、DIMM/フラッシュ184等)を含む。
重複除去エンジン202の各々は伝送管理部230又はホストインターフェイス162を通じてホストシステムの中のいずれか1つと直接的に通信する。伝送管理部230はホストインターフェイス162を通じてホストシステムと通信する。
伝送管理部230はホストインターフェイス162を通じてホストシステムからデータ伝送要請を受信する。伝送管理部230は重複除去モジュール150の1つ以上のパーティション250へのデータ伝送及び重複除去モジュール150の1つ以上のパーティション250からのデータ伝送を更に管理する。一実施形態において、伝送管理部230は格納されなければならないデータ(例えば、RAMに格納)を格納するパーティション250を決定する。他の実施形態において、伝送管理部230はデータが格納されなければならないパーティション250に関してホストシステムから指示を受信する。一実施形態形態において、伝送管理部230は、ホストシステムから受信されたデータを分離し、それを2以上のパーティションに送る。
重複除去モジュール150はホストインターフェイス162を通じてホストシステムの構成要素と通信する。
重複除去エンジン202は伝送管理部230からそのそれぞれのパーティション250に対するパーティションデータ要請を受信する。重複除去エンジン202はメモリモジュール内のデータのアクセス及び格納を更に制御する。メモリ管理部210はデータが格納されるか又はデータが格納されなければならない1つ以上のメモリモジュールを決定する。1つ以上のメモリコントローラはそれらのそれぞれのメモリモジュール上のデータの格納又はアクセスを制御する。
一実施形態において、重複除去エンジン202及びメモリ管理部210はメモリ管理部210及び重複除去エンジン202の両方の機能を遂行可能な1つのメモリ管理部として具現される。
1つ以上のメモリコントローラ、メモリ管理部210、及び重複除去エンジン202の各々は任意の適切なハードウェア(例えば、ASIC(application−specific integrated circuit))、ファームウェア(firmware、例えばDSP又はFPGA)、ソフトウェア、又はソフトウェア、ファームウェア、及びハードウェアの適切な組合せを利用して具現される。また、重複除去エンジン202は、以下でより詳細に説明する。
一実施形態によると、メモリが高容量を有する場合、パーティションは変換テーブルサイズ(translation table size)を減らすために使用される。
図3は、本発明の一実施形態による重複除去エンジンの論理的観点のブロック図である。図3を参照すると、重複除去エンジン200は複数のテーブルを含む。重複除去エンジン200は、ハッシュテーブル(hash table)220、変換テーブル(translation table)240、署名及び参照カウンターテーブル(signature and reference counter tables)260、並びにオーバーフローメモリ領域(overflow memory region)280を含む。
ハッシュテーブル220は複数の物理的ライン(physical lines:PLs)を含む。各物理的ラインはデータ(例えば、ユーザーデータ)を含む。ハッシュテーブル220内のデータは重複除去される(即ち、重複されたデータは格納装置の空間使用量を減らすために1つの位置に統合される)。
変換テーブル240はそれらの中に格納された複数の物理的ラインIDを含む。ハッシュテーブルの各物理的ラインは変換テーブル240に格納された関連する物理的ラインID(PLID)を有する。変換テーブル240に格納されたPLIDは論理的アドレスから物理的アドレスへの変換である。例えば、重複除去エンジン200が特定の論理的アドレスに関連するデータ位置を特定する必要がある場合、重複除去エンジン200は、変換テーブル240を利用して論理的アドレスに格納されたデータを問い合わせ、データが格納されたハッシュテーブル220の物理的ラインに対応するデータのPLIDを受信する。その次に、重複除去エンジン200はハッシュテーブル220内の該当物理的ラインに格納されたデータにアクセスする。
PLIDは第1ハッシュ関数を使用して生成される。例えば、データがハッシュテーブル内に格納される必要がある場合、第1ハッシュ関数は、データが格納されなければならない物理的ラインに対応する第1ハッシュ値を決定するために、データに対して実行される。第1ハッシュ値はデータのPLIDとして格納される。
各PLIDはターゲティング(targeting)データラインの物理的位置を示す。データラインはハッシュテーブル220又はオーバーフローメモリ領域280の中のいずれか1つにあるため、PLIDはハッシュテーブル220又はオーバーフローメモリ領域280内に位置する。
ハッシュテーブル220は行(row)−列(column)構造のテーブルとして看做される。この場合、PLIDは、領域ビット(region bit)、行ビット、及び列ビットで構成される(例えば、図4及びそれらに対する説明参照)。第1ハッシュ関数はデータを格納するために使用可能な物理的ラインを見つけるための開始点である行ビットを生成する。他のビットは使用可能な物理的ラインが見つかった時に決定される。
上述した段階でハッシュテーブル220内の使用可能な物理的ラインを発見しない場合、データはオーバーフローメモリ領域280に書き込まれる。この場合、PLIDはオーバーフローメモリ領域エントリ(entry)の物理的位置である。
第2ハッシュ関数を使用して計算されるデータの第2ハッシュ値(例えば、署名)は署名テーブルに格納される。第2ハッシュ関数は第1ハッシュ関数よりも小さい。第1及び第2ハッシュ関数は、任意の適切なハッシュ関数であり、異なるハッシュ関数である。
署名は2つデータラインの間の高速比較のために使用される。新しいデータラインがハッシュテーブル220に書き込まれる場合、ハッシュテーブルに同一のデータラインが既に在るか否かを知るための検査が行われる。この検査を遂行することで同一のデータを複数回格納することが防止される。
検査が署名を使用せずに行われる場合、メモリの特定領域内の全てのデータ(全体バケット(bucket)又は全体仮想バケット)が重複を感知するために読み出される。検査が署名を使用して行われる場合、特定領域に対するデータの署名のみがメモリから読み出されて帯域幅を節約する。
一致する署名が無い場合、新しいデータラインに一致するデータラインはない。そうでなく、一致する署名が発見された場合、署名比較が間違った肯定であるため、一致する署名を有するデータラインが追加比較を遂行するためにメモリから読み出される。
ハッシュテーブルの各データラインは署名テーブル内に該当署名を有し、そして各データラインは参照カウンターテーブル内に該当参照カウンターを有する。
参照カウンターテーブルはハッシュテーブル220の物理的ラインの各々に対する重複除去回数(例えば、データが複製された回数)を追跡する。重複除去されたデータのインスタンス(instance)がハッシュテーブルに追加されると、前に格納されたユーザーデータと同一である新しいユーザーデータを追加するのではなく、参照カウンターテーブルの該当参照カウンターは増加し、そしてハッシュテーブルから重複除去されたデータのインスタンスが削除されると、参照カウンターテーブルの該当参照カウンターは1つ減少する。
また、(ハッシュテーブルとして公知された)重複除去されたメモリは固定されたビット幅を有するユーザーデータCである物理的ライン(physical lines:PLs)で構成される。基本(default)物理的ラインの長さは64バイトであるが、本発明はこれに制限されない。PL長さは他のサイズに構成され、例えばPLサイズは64バイトよりも大きいか又は小さい。例えば、PLサイズは32バイトである。
大きいPLサイズは、変換テーブルのサイズを減少させるが、また重複するデータの量を減少させる(即ち、更に大きいビットパターンに一致する必要があるため、重複除去の回数が減少する)。小さいPLサイズは、変換テーブルのサイズを増加させるが、また重複するデータの量を増加させる(即ち、重複除去の回数が増加する)。
変換テーブルは物理的ラインID(PLID)と称される論理的アドレスから物理的アドレスへの変換を格納する。PLIDはハッシュ関数h1(C)によって生成される。また、各物理的ラインに対して、署名テーブルに格納された物理的ラインに関連する署名がある。署名はユーザーデータのはるかに小さいハッシュ結果であり、ハッシュ関数h2(C)によって生成される。参照カウンターは、また物理的ラインに関連し、参照カウンターテーブルに格納される。参照カウンターは(重複除去比率として公知された)ユーザーデータがPLコンテンツと一致する回数をカウントする。
ハッシュテーブル、署名テーブル、及び参照カウンターテーブルは全て同一のデータ構造を有するが、異なる細分性(granularity)を有する。
複数のテーブルは重複除去モジュールの一部として図示したが、本発明はこれに制限されない。本発明の一実施形態によると、複数のテーブルは重複除去モジュール内にあるメモリ(例えば、RAM)に格納され、他の実施形態によると、複数のテーブルは重複除去モジュールの外部にあるメモリ(例えば、RAM)に格納され、本明細書で説明する方式で重複除去モジュールによって制御される。
本発明の上述した特徴の追加的な説明は、米国特許出願(No.15/473、311)で開示され、その全体内容は本明細書で参照文献として引用される。
図4は、本発明の一実施形態によるレベル−1変換テーブルを含む重複除去エンジンの論理的観点のブロック図である。変換テーブルは、そのサイズ及びそれを使用するのに掛かる時間によって、重複除去比率、システム容量、及び/又はシステム待機時間に影響を及ぼす主要メタデータ(metadata)テーブルである。図4を参照すると、論理的アドレス310はシステムメモリ(例えば、DRAM)に格納されたデータの位置としてコンピュータシステムによって使用される。
論理的アドレス310はxビット長さであり、ここでxは整数である。論理的アドレス310はgビット長さである細分性(granularity)314を含み、ここでgは整数である。細分性314は論理的アドレス310の0からg−1までのビットに位置する。論理的アドレス310は変換テーブル索引(translation table index)312を更に含む。変換テーブル索引312は、x−gビット長さであり、論理的アドレス310のgからx−1までのビットに位置する。一実施形態において、物理的ラインが32バイト長さである場合、gは5(2=32)であり、物理的ラインが64バイト長さである場合、gは6(2=64)である。一実施形態において、1TB(terabyte)の仮想容量が支援される場合、xは40(240は1TB)である。
変換テーブル索引312は変換テーブル240内の物理的アドレス320に対応する。物理的アドレス320は領域ビット(RGN)322、行索引(R_INDX)326、及び列索引(COL_INDX)328を含む。領域ビット(RGN)322は1ビットであり、データがハッシュテーブル220に格納されたか又はオーバーフローメモリ領域280に格納されたかを示す。行索引(R_INDX)326はハッシュテーブル220内のM行(0からM−1又は0から2−1)に対応するmビットである。列索引(COL_INDX)328はハッシュテーブル220内のN列(0からN−1又は0から2−1)に対応するnビットである。M、N、m、nは整数である。一実施形態によると、ハッシュテーブルが128GB(237)である場合、g=6、m=26、n=5、M=226、そしてN=2である。
また、オーバーフローメモリ領域280はハッシュテーブルに配置されないデータを格納する。
図5は、本発明の一実施形態によるレベル−2変換テーブルを含む重複除去エンジンの論理的観点のブロック図である。変換テーブルは、重複除去比率、システム容量、及びシステム待機時間に影響を及ぼす主要メタデータテーブルである。図5の重複除去エンジンで、変換テーブルは、レベル−2、ページ索引テーブル242、及びレベル2(L2)マップテーブル244を含む。
論理的アドレス310’はメモリ(例えば、RAM)に格納されたデータの位置としてコンピュータシステムによって使用される。論理的アドレス310’の長さはxビット長さであり、ここでxは整数である。論理的アドレス310’はgビット長さである細分性314’を含み、ここでgは整数である。細分性314’は論理的アドレス310’の0からg−1までのビットに位置する。論理的アドレス310’はページエントリ318及びページ索引316を更に含む。ページエントリ318は12−gビット長さであり論理的アドレス310’のgから11までのビットに位置する。ページ索引316はx−12ビット長さであり、論理的アドレス310’の12からx−1までのビットに位置する。一実施形態において、物理的ラインが32バイト長さである場合、gは5(2=32)であり、物理的ラインが64バイト長さである場合、gは6(2=64)である。一実施形態において、1TBの仮想容量が支援される場合、xは40(240は1TB)である。
ページ索引316はページ索引テーブル242内のページに対応する。ページ索引テーブル242内のページはL2マップテーブル244内のエントリ0の位置に対応する。ページエントリ318はエントリ0の後のどのエントリが論理的アドレス310’に対応する格納されたデータの物理的アドレス320’を格納するかを示す。
即ち、ページ索引316はL2マップエントリのセット及びそのセットのエントリに指定されたページエントリ318に関連する。ページ索引316はセット内の第1エントリに続き、そしてページエントリ318はエントリのそのセットのどの特定のエントリが物理的アドレス320’を含むかを示す。ページ索引テーブル242内の各ページは領域ビット(RGN)を含む。領域ビット(RGN)322’は1ビットであり、データがハッシュテーブル220’に格納されたか又はオーバーフローメモリ領域280’に格納されたかを示す。
物理的アドレス320’は行索引(R_INDX)326’及び列索引(COL_INDX)328’を含む。行索引(R_INDX)326’はハッシュテーブル220’内のM行(0からM−1又は0から2−1)に対応するmビットである。列索引(COL_INDX)328’はハッシュテーブル220’内のN列(0からN−1又は0から2−1)に対応するnビットである。M、N、m、nは整数である。一実施形態によると、ハッシュテーブルが128GB(237)である場合、g=6、m=26、n=5、M=226、そしてN=2である。
また、オーバーフローメモリ領域280はハッシュテーブルに配置されないデータを格納する。
図6は、本発明の一実施形態による、動的L2マップテーブル及びオーバーフローメモリ領域を有するレベル−2変換テーブルを含む重複除去エンジンの論理的観点のブロック図である。図6を参照すると、レベル−2変換テーブルはオーバーフローメモリ領域に対する追加空間を生成する。
一実施形態によると、署名及び参照カウンターテーブル260’並びにページ索引テーブル242’のサイズは固定されるが、L2マップテーブル244’及びオーバーフローメモリ領域280”のサイズは動的である。
L2マップテーブル244’及びオーバーフローメモリ領域280”のサイズが増加することによって、これらは互いに向かって大きくなる。このような方式で、格納空間はL2マップテーブル244’又はオーバーフローメモリ領域280”の中のいずれか1つが使用されない空間に向かって大きくなるようにして効率的に使用される。
図7は、本発明の一実施形態によるハッシュシリンダ(hash cylinder)の論理的観点のブロック図である。図8は、本発明の一実施形態による複合型データ構造の論理的観点のブロック図である。図7及び図8を参照すると、署名テーブル、参照カウンターテーブル、及びハッシュテーブルは、複合型データ構造600(例えば、複合型構造600又は複合型テーブル600)のハッシュシリンダ500(例えば、ハッシュシリンダ500−i)内のバケット(buckets)(例えば、ハッシュバケット(i))内に分配され、整列される。各ハッシュシリンダ500は、ハッシュテーブルのハッシュバケット560(例えば、ハッシュバケット560−i)、署名テーブルの署名バケット520(例えば、署名バケット520−i)、及び参照カウンターテーブルの参照カウンターバケット540(例えば、参照カウンターバケット(i))を含む。
ハッシュバケット560は複数のエントリ(例えば、エントリ(0)〜エントリ(N−1))又は物理的ラインを含む。
署名バケット520は同一ハッシュシリンダ500のハッシュバケット560内の物理的ラインに格納されたデータに対応する複数の署名を含む。
参照カウンターバケット540は同一ハッシュシリンダ500のハッシュバケット560内の物理的ラインに格納されたデータが重複除去された回数に対応する複数の参照カウンターを含む。
即ち、ハッシュテーブルは複数のハッシュバケット560に分割され、各ハッシュバケット560は複数のエントリを含む。署名テーブルは複数の署名バケット520に分割され、各署名バケット520は複数の署名を含む。参照カウンターテーブルは複数の参照カウンターバケット540に分割され、各参照カウンターバケット540は複数の参照カウンターを含む。
複合型データ構造600は、1つのハッシュバケット560、1つの署名バケット520、及び1つの参照カウンターバケット540が共にハッシュシリンダ500に配置されるように構成される。本発明の一実施形態によると、バケットは、第1署名バケット520−0、第1参照カウンターバケット540−0、第1ハッシュバケット560−0、第2署名バケット520−1、第2参照カウンターバケット540−1、第2ハッシュバケット560−1等の順に配置される。
この配列で、第1署名バケット520−0は第1ハッシュバケット560−0に格納されたデータに関連する署名を含み、第1参照カウンターバケット540−0は第1ハッシュバケット560−0に格納されたデータに関連する参照カウンターを含む。また、第2署名バケット520−1は第2ハッシュバケット560−1に格納されたデータに関連する署名を含み、第2参照カウンターバケット540−1は第2ハッシュバケット560−1に格納されたデータに関連する参照カウンターを含む。また、第1シリンダ500−0は、第1署名バケット520−0、第1参照カウンターバケット540−0、及び第1ハッシュバケット560−0を含み、第2シリンダ500−1は、第2署名バケット520−1、第2参照カウンターバケット540−1、及び第2ハッシュバケット560−1を含む。
この方式で、各ハッシュシリンダ500はデータ及び同一ハッシュバケット500内に格納されたデータに関連する署名及び参照カウンターを含む。
複合型データ構造600のハッシュシリンダ500−i内に格納されたデータに対する要請が行われると、全体ハッシュシリンダ500−iは読出しキャッシュ170’にコピーされる。全体ハッシュシリンダ500−iが読出しキャッシュ170’にコピーされるため、要請されたデータ、該当署名(又はそれぞれの署名)、及び該当参照カウンター(又はそれぞれの参照カウンター)の全てを回収するのに必要とする時間は減少する。
一実施形態によると、読出しデータキャッシュはハッシュシリンダと同一サイズである。
また、重複除去エンジンが(重複を防止するために)データが既にハッシュテーブル内に存在すると判断すると、全体ハッシュシリンダ500は読出しキャッシュ170’にコピーされる。重複除去エンジンは、重複除去が可能であるか否かを決定してデータを格納する時に署名、参照カウンター、及びデータにアクセスするため、読出しキャッシュが全体ハッシュシリンダをコピーすることは、アクセス時間を減少させ、全体の計算速度を増加させる。
即ち、待機時間及び性能を向上させるために、ハッシュエントリ、署名、及び参照カウンターエントリの統合単位であるハッシュシリンダ500が生成される。統合されたハッシュシリンダ500はシステムメモリアクセス周期を減らしてシステム待機時間を向上させる。簡潔な(compacted)データ構造はメモリアクセス回数を減少させる。各ハッシュシリンダ500は重複除去エンジンが計算を遂行するのに必要とする全ての情報を含む。複合型データ構造600は、またキャッシング(caching)を容易にする。
図9は、本発明の一実施形態による仮想バケットに関連するハッシュバケット及び該当参照カウンターバケットの論理的観点のブロック図である。図9を参照すると、各ハッシュバケット560’は1つ以上の仮想バケット(VBs、例えば、VB(0)〜VB(V−1))に関連する。各ハッシュバケット560’はNウェイ(ways、例えば、WAY(0)〜WAY(N−1))を含む。
関連分野のハッシュテーブルと異なり、本実施形態のハッシュテーブルは各々複数の仮想ハッシュバケット又は仮想バケットを含み、仮想バケットは複数の物理的ハッシュバケット又は物理的バケットから作成される。以下、“物理的バケット”という用語は前に説明したハッシュバケットを示し、前に説明したハッシュバケットと仮想バケットとを区別するために使用される。
各仮想バケットはハッシュテーブルの物理的バケットの一部を含む。しかし、仮想バケットの他のものは1つ以上の物理的バケットを共有できることに留意しなければならない。以下で説明するように、本発明の実施形態による仮想バケットを利用して、余剰次元(extra dimension)がハッシュテーブルに加えられる。従って、データを配列して配置するのにより大きい柔軟性が提供され、このようにすることによって重複除去DRAMシステムの効率が増加して圧縮比率が増加する。
本実施形態は、他の仮想バケットによって共有される他の物理的バケットを確保するために、ハッシュバケットの中の1つに格納されたデータのブロックが対応する仮想バケット内又は他の物理的バケットに移動されるようにして、他のレベルのデータ配置の柔軟性を増加させるために仮想バケットを使用する。ハッシュテーブル内の空間を確保することにより、重複除去は役に立たない/重複されたデータを除去することによって達成される。即ち、本発明の実施形態による仮想バケットを使用することにより、ハッシュ関数を使用してデータのラインを制限された該当位置にハッシング(hashing)することによって起因する厳格な制限はなく、データは近隣の/“近接する”物理的バケットに配置することができ、この物理的バケットは初期に意図された(しかし、占有された)物理的ハッシュバケットを含む同一な仮想バケット内にある物理的バケットを示す。
一例として、コンテンツ(例えば、データライン)は物理的バケットの中の1つに配置される。データラインが第1物理的バケットに配置される場合、データラインが物理的バケット内に配置されることを要求する代わりに、本実施形態は、単一物理的バケットよりも大きく、単一物理的バケットのみならず他の物理的バケットも含む仮想バケットも許容される。即ち、仮想バケットはハッシュテーブル内で整列された接触するか又は隣接する物理的バケットの総合を含む。
従って、仮想バケットは将来の書込み動作のための空間を確保するためにハッシュテーブル内でデータブロックが動くことを許容する。
仮想バケットに対する追加説明については、2016年5月23日付で出願した米国特許出願(No.15/162、512)及び2016年5月23日付で出願した米国特許出願(No.15/162、517)に開示されており、その全体内容は本明細書で参照文献として引用される。
また、仮想バケットは動的高さ又はサイズを有する。動的仮想バケット高さ(virtual bucket height:VBH)を有することは制限された待機時間の影響でメモリの利用を向上させる。
物理的バケットに関連する仮想バケットの数は仮想バケット(virtual bucket:VB)の高さ索引によって示される。仮想バケットの高さ情報はハッシュバケット560’に関連する参照カウンターバケット540’の最後の参照カウンターに格納される。参照カウンターのビットの一部分はVB高さ索引として使用される(例えば、VBH[1:0])。
ハッシュバケット(i)を一例として使用し、VB高さがVである場合、ハッシュバケット(i)の仮想バケットはハッシュバケット(i+1)からハッシュバケット(i+V)を示す。ハッシュバケット(i)がフルに満たされると、重複除去エンジンは仮想バケットにユーザーデータを入れる。
フラッグ(flag、1つの参照カウンタ(RC)ビットの一部分、例えばハッシュバケットMの最後のRCカウンター)はどのぐらい多い仮想バケットが現在のハッシュバケット(i)によって使用されているかを示す。この方式で、必要とすることよりも更に多い仮想バケットを検索する必要がないので、待機時間は減少する。関連分野の仮想バケットは固定されたVB高さを使用する。固定された仮想バケット高さを使用することで、検索ロジックは、ハッシュバケット(i)によって実際に使用される仮想バケットの数に関係なく、全ての仮想バケットを検索し、これは増加された待機時間を惹起する。
仮想バケットは追加メモリ空間を要求しない。これらはハッシュバケットの付近で使用されないエントリを使用する。例えば、ハッシュバケット(i+1)に対して、その仮想バケットはハッシュバケット(i+2)からハッシュバケット(i+V’+1)を示す。
また、ハッシュバケット(i)の仮想バケット(例えば、ハッシュバケット(i+1)からハッシュバケット(i+V))がフルに満たされると、本発明の実施形態による重複除去エンジンはハッシュバケット付近で利用可能な空間を使用するために仮想バケットの高さ(V)を増加させる。関連分野の仮想バケットの高さは(動的であることよりは)予め決定されたため、増加されない。このように、ハッシュバケット(i)の仮想バケット(例えば、ハッシュバケット(i+1)からハッシュバケット(i+V)までのハッシュバケット)がフルに満たされると、関連分野の重複除去エンジンは高さ(V)を増加させることができない。
また、仮想バケットの高さを動的に調整することによって、重複除去エンジンが(重複を防止するために)データが既にハッシュテーブル内にあるかを確認する場合、重複除去エンジンは予め設定された数の仮想バケットの代わりに使用中である仮想バケットのみを確認すればよい。これはアクセス時間を減少させ、全体の演算速度を増加させる。
図10は、本発明の一実施形態によるRAMに格納されたデータを回収する方法を示すフローチャートである。図10はRAMを使用して示したが、本発明はこれに制限されず、任意の他の適切なメモリタイプが本方法と共に使用される。
図10を参照すると、コンピュータシステムのCPUはRAMに格納されたデータを要請する。CPUはRAM内データの位置に対するアドレスを提供する。本発明はこれに制限されず、例えば他の構成要素がRAMからデータを要請し、論理的アドレスを提供する。
本発明の実施形態によるRAM内に格納されたデータを回収する方法はRAMに格納されたデータの論理的アドレスを識別する段階を含む(1000段階)。論理的アドレスは変換テーブルの位置に対応する。
方法は変換テーブル内の論理的アドレスを検索して論理的アドレスに従うデータのPLID(物理的ラインID)を識別する段階を更に含む(1010段階)。
方法はPLIDに基づいて、データがRAMのハッシュテーブルに格納されたか又はRAMのオーバーフローメモリ領域に格納されたかを決定する段階を更に含む(1020段階)。
データがハッシュテーブルに格納された場合、方法はPLIDに対応するハッシュテーブルの物理的ラインの位置を特定する段階(1030段階)及びハッシュテーブルの物理的ラインからデータを回収する段階(1040段階)を更に含む。データを回収する段階は署名テーブル及び参照カウンターテーブルから該当データを回収する段階を含む。
データがオーバーフローメモリに格納された場合、方法はPLIDに対応するオーバーフローメモリ領域の物理的ラインの位置を特定する段階(1050段階)及びオーバーフローメモリ領域の物理的ラインからデータを回収する段階(1060段階)を更に含む。
PLIDはデータに適用された第1ハッシュ関数を使用して生成される。PLIDはRAMのハッシュテーブルの又はRAMのオーバーフローメモリ領域の位置を示すアドレスを含む。
PLIDは、データがハッシュテーブルに格納されたか又はオーバーフローメモリ領域に格納されたかを示す第1識別子(identifier、例えば、図4のRGN参照)と、データが格納された行を示す第2識別子(例えば、図4のR_INDX参照)と、データが格納された列を示す第3識別子(例えば、図4のCOL_INDX参照)と、を含む。
方法は署名テーブルからデータに関連する署名を回収する段階を更に含む。
RAMは、複数のデータを格納するハッシュテーブルと、第1ハッシュ関数を利用して生成された複数のPLIDを格納する変換テーブルと、第1ハッシュ関数よりも小さい第2ハッシュ関数を使用して生成された複数の署名を格納する署名テーブルと、各参照カウンターがハッシュテーブルに格納された該当データに対する重複除去回数を追跡する複数の参照カウンターを含む参照カウンターテーブルと、オーバーフローメモリ領域と、を含む。
ハッシュテーブル、署名テーブル、及び参照カウンターテーブルは複合型データ構造に統合される。複合型データ構造は、各ハッシュシリンダが複数の物理的ラインを含む複数のハッシュシリンダを含むハッシュバケットと、複数の物理的ラインに対応するそれぞれの署名を含む署名バケットと、複数の物理的ラインに対応するそれぞれの参照カウンターを含む参照カウンターバケットと、を含む。
物理的ライン又はオーバーフローメモリ領域からデータを回収する段階は、物理的ライン、該当署名、及び該当参照カウンターを含む全体ハッシュシリンダを読出しキャッシュにコピーする段階を含む。
図11は、本発明の一実施形態によるRAMにデータを格納する方法を示すフローチャートである。図11はRAMを使用して示したが、本発明はこれに制限されず、任意の他の適切なメモリタイプが本方法と共に使用される。
図11を参照すると、コンピュータシステムのCPUはRAMにデータが格納されるように要請する。CPUはRAM内に格納されるデータを提供する。本発明はこれに制限されず、例えば他の構成要素がRAMにデータが格納されるように要請し、データを提供する。
本発明の実施形態によるRAM内にデータを格納する方法はRAMに格納されるデータを識別する段階を含む(1100段階)。
方法は第1ハッシュ関数を利用してデータがRAMのハッシュテーブルに格納されなければならない位置に対応する第1ハッシュ値を決定する段階を更に含む(1110段階)。
方法は第1ハッシュ値に対応するハッシュテーブルの位置にデータを格納する段階を更に含む(1120段階)。
方法は第2ハッシュ関数を利用してデータが格納されなければならない位置にもまた対応する第2ハッシュ値を決定する段階を更に含む(1130段階)。第2ハッシュ関数は第1ハッシュ関数よりも小さい。
方法は第1ハッシュ値を変換テーブルに格納する段階を更に含む(1140段階)。
方法は第2ハッシュ値を署名テーブルに格納する段階を更に含む(1150段階)。
方法は参照カウンターテーブル内でデータに対応する参照カウンターを増加させる段階を更に含む。
RAMは、複数のデータを格納するハッシュテーブルと、第1ハッシュ関数を使用して生成される複数のPLIDを格納する変換テーブルと、第2ハッシュ関数を使用して生成される複数の署名を格納する署名テーブルと、各参照カウンターがハッシュテーブルに格納された該当データに対する重複除去回数を追跡する複数の参照カウンターを格納する参照カウンターテーブルと、オーバーフローメモリ領域と、を含む。
PLIDの各々は、データがハッシュテーブルに格納されたか又はオーバーフローメモリ領域に格納されたかを示す第1識別子(例えば、図4のRGN参照)と、データが格納された行を示す第2識別子(例えば、図4のR_INDX参照)と、データが格納された列を示す第3識別子(例えば、図4のCOL_INDX参照)と、を含む。
ハッシュテーブル、署名テーブル、及び参照カウンターテーブルは複合型データ構造に統合される。複合型データ構造は複数のハッシュシリンダを含む。各ハッシュシリンダは、複数の物理的ラインを含むハッシュバケットと、複数の物理的ラインに対応するそれぞれの署名を含む署名バケットと、複数の物理的ラインに対応するそれぞれの参照カウンターを含む参照カウンターバケットと、を含む。
第1ハッシュ値に対応するハッシュテーブルの位置にデータを格納する段階は、第1ハッシュ値に対応するハッシュバケットにデータを格納する段階を含む。署名テーブルに第2ハッシュ値を格納する段階は、データが格納されるハッシュバケットに対応する署名バケットに第2ハッシュ値を格納する段階を含む。
従って、本明細書の実施形態は、物理的メモリサイズよりも大きいメモリ(例えば、RAM(random−access memory))内のメモリ容量を可能にする方法及び関連構造を示す。本発明の実施形態によると、重複除去はデータメモリ減少及びコンテキストアドレス指定を達成するために使用される。本発明の実施形態によると、ユーザーデータはユーザーデータのハッシュ値によって索引付けされたハッシュテーブルに格納される。
ここで、第1、第2、第3等の用語を多様な要素、成分、領域、層、及び/又はセクションを説明するために使用したが、このような要素、成分、領域、層、及び/又はセクションはこのような用語によって制限されないことを理解すべきである。このような用語は他の要素、成分、領域、層、又はセクションから1つの要素、構成、領域、層又はセクションを区別するために使用される。従って、第1構成要素、成分、領域、層又はセクションは本発明の思想及び範囲を逸脱せずに、第2構成要素、成分、領域、層又はセクションを指称する。
本明細書に記述した本発明の実施形態によると、関連装置又は構成要素(或いは複数の関連装置又は構成要素、例えば重複除去エンジン)は、任意の適切なハードウェア(例えば、ASIC)、ファームウェア(例えば、DSP又はFPGA)、ソフトウェア、又はソフトウェア、ファームウェア、及びハードウェアの適切な組合せを利用して具現される。例えば、このような装置の多様な要素は1つの集積回路(Integrated Circuit:IC)チップ又は個別のICチップで形成される。また、関連装置の多様な構成要素は、FPCF(flexible printed circuit film)、TCP(tape carrier package)、PCB(printed circuit board)上に具現されるか、或いは1つ以上の回路及び/又は他の装置と同一な基板上に形成される。また、関連装置の多様な構成要素は、1つ以上のプロセッサ上で実行され、1つ以上のコンピューティング装置でコンピュータプログラム命令を実行し、ここで説明した多様な機能を遂行するために他のシステム構成要素と相互作用するプロセス又はスレッド(thread)である。コンピュータプログラム命令は、例えばRAMのような標準メモリ装置を使用してコンピューティング装置に具現されるメモリに格納される。また、コンピュータプログラム命令は、例えばCD−ROM、フラッシュドライブ等のような一時的ではない他のコンピュータ読み取り可能な記録媒体に格納される。また、当業者は、多様なコンピューティング装置の機能が1つのコンピューティング装置に結合されるか又は統合され、本発明の例示的な実施形態の思想及び範囲から逸脱せずに、特定コンピューティング装置の機能が1つ以上の他のコンピューティング装置に亘って分配されることを理解する。
また、1つの要素、構成要素、領域、層、及び/又はセクションが2つの要素、構成要素、領域、層、及び/又はセクションの“間”にあると言及する場合、それは単なる2つの要素、構成要素、領域、層、及び/又はセクションの間の要素、構成要素、領域、層、及び/又はセクションであるか、或いは1つ以上の中間要素、構成要素、領域、層、及び/又はセクションが存在する。
本明細書で使用した用語は、実施形態を説明するためのものであり、本発明を制限しようとするものではない。本明細書で使用した単数形態は、文脈に異なって明示しない限り、複数形態を含むものと意図する。“含む”、“含んでいる”の用語は、本明細書で使用した場合、明示した特徴、整数、段階、動作、要素、及び/又は構成要素を明示しないが、1つ以上の他の特徴、整数、段階、動作、要素及び/又は構成要素の存在又は追加を排除しないと更に理解されるべきである。
本明細書で使用したように“及び/又は”という用語は1つ以上の関連して列挙した項目の任意及び全ての組合せを含む。“少なくとも1つ”、“1つ”、及び“から選択”のような表現は、要素目録を先行する場合、要素全体目録を修正し、目録の個別要素を修正しない。また、本発明の実施形態を記述した際に“することができる”の使用は“本発明の1つ以上の実施形態”を意味する。また、“例示的な”用語は例示又は説明を示すために意図される。
本明細書で使用したように、“使用”、“使用する”、及び“使用された”は各々“利用”、“利用する”及び“利用された”と同意語として看做される。
本発明の1つ以上の実施形態に関連して説明した特徴は本発明の他の実施形態の特徴と共に使用される。例えば、第1実施形態で説明した特徴は第3実施形態が本明細書で具体的に説明しなくても、第3実施形態を形成するために第2実施形態で説明した特徴と結合される。
また、当業者は、プロセスがハードウェア、ファームウェア(例えば、ASICを通じて)、又はソフトウェア、ファームウェア、及び/又はハードウェアの任意の組合せを通じて実行することができることを認識する。また、プロセスの段階の順序は固定されているが、当業者によって認識される任意の所望の順序に変更される。変更された順序は全ての段階又は一部の段階を含む。
本発明を特定の実施形態に関連して説明したが、当業者は説明した実施形態の変形を考案するのに困難がなく、これは本発明の範囲及び思想から逸脱しない。また、本明細書に記載した本発明自体は多様な技術分野の当業者に他のアプリケーションに対する他の課題及び適応に対する解決策を提案する。本発明の思想及び範囲から逸脱せずに、開示の目的で選択された本発明の実施形態を具現可能な本発明の全てのそのような使用及びそれらの変化及び修正を請求範囲に含むことが出願人の意図である。従って、本発明の実施形態は全ての側面で例示的なものであって、制限的ではないと看做され、本発明の範囲は請求の範囲及びその均等物によって示される
100 重複除去モジュール
130 ブリッジ
140 メモリコントローラ
142 メモリコントローラ0
144 メモリコントローラ1
160、162 ホストインターフェイス
170、170’ 読出しキャッシュ
180 メモリモジュール(DIMM/フラッシュ)
182 DIMM/フラッシュ0
184 DIMM/フラッシュ1
200、202 重複除去エンジン
210 メモリ管理部
220、220’ ハッシュテーブル
230 伝送管理部
240 変換テーブル
242、242’ ページ索引テーブル
244、244’ L2マップテーブル
250 パーティション
250−0 パーティション0
250−1 パーティション1
260、260’ 署名及び参照カウンターテーブル
280、280’、280” オーバーフローメモリ領域
310、310’ 論理的アドレス
312 変換テーブル索引
314、314’ 細分性
318 ページエントリ
320、320’ 物理的アドレス
322 領域ビット(RGN)
326、326’ 行索引(R_INDX)
328、328’ 列索引(COL_INDX)
400、400’ 物理的ライン(PL)
500 ハッシュシリンダ
520 署名バケット
540、540’ 参照カウンターバケット
560’ ハッシュバケット
600 複合型データ構造

Claims (22)

  1. 重複除去モジュールに関連するメモリに格納されたデータを回収する方法であって、
    前記重複除去モジュールは、読出しキャッシュを含み、
    前記メモリは、変換テーブル及び複合型データ構造を含み、
    前記複合型データ構造は、ハッシュテーブル及び参照カウンターテーブルを含み、
    前記ハッシュテーブル及び前記参照カウンターテーブルの各々は、前記複合型データ構造の複数のハッシュシリンダに格納され、
    前記ハッシュテーブルは、各ハッシュバケットが各物理的ラインにデータを格納する複数の物理的ラインを含む複数のハッシュバケットを含み、
    前記参照カウンターテーブルは、各参照カウンターバケットが複数の参照カウンターを含む複数の参照カウンターバケットを含み、
    前記方法は、
    前記データの論理的アドレスを識別する段階と、
    前記変換テーブルの前記論理的アドレスの少なくとも一部を検索して前記論理的アドレスに従う前記データのPLID(物理的ラインID)を識別する段階と、
    前記PLIDに対応する、前記複数の物理的ラインのそれぞれの物理的ラインの位置を特定する段階と、
    前記それぞれの物理的ラインから前記データを回収する段階と、を有し、
    前記データを回収する段階は、前記複数のハッシュシリンダのそれぞれのハッシュシリンダを前記読出しキャッシュにコピーする段階を含み、
    前記それぞれのハッシュシリンダは、
    前記それぞれの物理的ラインを含む、前記複数のハッシュバケットのそれぞれのハッシュバケットと、
    前記それぞれの物理的ラインに関連するそれぞれの参照カウンターを含む、前記複数の参照カウンターバケットのそれぞれの参照カウンターバケットと、を含むことを特徴とする方法。
  2. 前記PLIDに基づいて、前記データが前記ハッシュテーブルに格納されていると判断する段階を更に含むことを特徴とする請求項1に記載の方法。
  3. 前記PLIDは、前記データに適用された第1ハッシュ関数を利用して生成され、
    前記PLIDは、前記ハッシュテーブルの位置を示すアドレスを含むことを特徴とする請求項1に記載の方法。
  4. 前記PLIDは、
    前記データが前記ハッシュテーブルに格納されたか又はオーバーフローメモリ領域に格納されたかを示す第1識別子と、
    前記データが格納された行を示す第2識別子と、
    前記データが格納された列を示す第3識別子と、を含むことを特徴とする請求項3に記載の方法。
  5. 前記複合型データ構造は、各署名バケットが複数の署名を含む複数の署名バケットを含む署名テーブルを更に含み、
    前記それぞれのハッシュシリンダは、前記複数の署名バケットのそれぞれの署名バケットを更に含み、
    前記それぞれの署名バケットは、前記それぞれの物理的ラインに関連するそれぞれの署名を含むことを特徴とする請求項1に記載の方法。
  6. 前記PLIDは、前記データに適用された第1ハッシュ関数を利用して生成され、
    前記PLIDは、前記ハッシュテーブルの位置を示すアドレスを含み、
    前記複数の署名は、前記第1ハッシュ関数よりも小さい第2ハッシュ関数を利用して生成されることを特徴とする請求項5に記載の方法。
  7. 各参照カウンターは、前記ハッシュテーブルに格納された該当データに対する重複除去回数を追跡することを特徴とする請求項1に記載の方法。
  8. 重複除去エンジンに関連するメモリにデータを格納する方法であって、
    格納されるデータを識別する段階と、
    第1ハッシュ関数を利用して前記データが前記メモリのハッシュテーブルに格納されなければならない位置に対応する第1ハッシュ値を決定する段階と、
    前記第1ハッシュ値に対応する前記ハッシュテーブルの位置に前記データを格納する段階と、
    前記第1ハッシュ関数よりも小さい第2ハッシュ関数を利用して前記データが格納されなければならない位置にもまた対応する第2ハッシュ値を決定する段階と、
    前記メモリの変換テーブルに前記第1ハッシュ値を格納する段階と、
    前記メモリの署名テーブルに前記第2ハッシュ値を格納する段階と、を有することを特徴とする方法。
  9. 前記データに対応する、参照カウンターテーブルの参照カウンターを増加させる段階を更に含むことを特徴とする請求項8に記載の方法。
  10. 前記メモリは、
    複数のデータを格納する前記ハッシュテーブルと、
    前記第1ハッシュ関数を利用して生成される複数のPLID(物理的ラインID)を格納する前記変換テーブルと、
    前記第2ハッシュ関数を利用して生成される複数の署名を格納する前記署名テーブルと、
    各参照カウンターが前記ハッシュテーブルに格納された該当データに対する重複除去回数を追跡する複数の参照カウンターを格納する参照カウンターテーブルと、
    オーバーフローメモリ領域と、を含むことを特徴とする請求項8に記載の方法。
  11. 前記複数のPLIDの各々は、
    前記データが前記ハッシュテーブルに格納されたか又は前記オーバーフローメモリ領域に格納されたかを示す第1識別子と、
    前記データが格納された行を示す第2識別子と、
    前記データが格納された列を示す第3識別子と、を含むことを特徴とする請求項10に
    記載の方法。
  12. 前記ハッシュテーブル、前記署名テーブル、及び前記参照カウンターテーブルは、複合型データ構造に統合され、
    前記複合型データ構造は、複数のハッシュシリンダを含み、
    各ハッシュシリンダは、
    複数の物理的ラインを含むハッシュバケットと、
    前記複数の物理的ラインに対応するそれぞれの署名を含む署名バケットと、
    前記複数の物理的ラインに対応するそれぞれの参照カウンターを含む参照カウンターバケットと、を含むことを特徴とする請求項10に記載の方法。
  13. 前記第1ハッシュ値に対応する前記ハッシュテーブルの位置に前記データを格納する段階は、前記第1ハッシュ値に対応する前記ハッシュバケットに前記データを格納する段階を含み、
    前記メモリの署名テーブルに前記第2ハッシュ値を格納する段階は、前記データが格納された前記ハッシュバケットに対応する前記署名バケットに前記第2ハッシュ値を格納する段階を含むことを特徴とする請求項12に記載の方法。
  14. 読出しキャッシュと、
    ホストシステムからデータ回収要請を受信する重複除去エンジンと、
    メモリと、を備え、
    前記メモリは、変換テーブル及び複合型データ構造を含み、
    前記複合型データ構造は、
    各ハッシュバケットが各物理的ラインにデータを格納する複数の物理的ラインを含む複数のハッシュバケットを含むハッシュテーブルと、
    各参照カウンターバケットが複数の参照カウンターを含む複数の参照カウンターバケットを含む参照カウンターテーブルと、
    各ハッシュシリンダが前記ハッシュバケットの中の1つ及び前記参照カウンターバケットの中の1つを含む複数のハッシュシリンダと、を含み、
    前記データ回収要請は、前記重複除去エンジンが、
    前記データの論理的アドレスを識別し、
    前記変換テーブルの前記論理的アドレスの少なくとも一部を検索して前記論理的アドレスに従う前記データのPLID(物理的ラインID)を識別し、
    前記PLIDに対応する、前記複数の物理的ラインのそれぞれの物理的ラインの位置を特定し、
    前記それぞれの物理的ラインから前記データを回収することをもたらし、
    前記データの回収は、前記複数のハッシュシリンダのそれぞれのハッシュシリンダを前記読出しキャッシュにコピーすることを含み、
    前記それぞれのハッシュシリンダは、
    前記それぞれの物理的ラインを含む、前記複数のハッシュバケットのそれぞれのハッシュバケットと、
    前記それぞれの物理的ラインに関連するそれぞれの参照カウンターを含む、前記複数の参照カウンターバケットのそれぞれの参照カウンターバケットと、を含むことを特徴とする重複除去モジュール。
  15. 前記データ回収要請は、前記重複除去エンジンが、前記PLIDに基づいて、前記データが前記ハッシュテーブルに格納されていると判断することを更にもたらすことを特徴とする請求項14に記載の重複除去モジュール。
  16. 前記PLIDは、前記データに適用された第1ハッシュ関数を利用して生成され、
    前記PLIDは、前記ハッシュテーブルの位置を示すアドレスを含むことを特徴とする請求項14に記載の重複除去モジュール。
  17. 前記PLIDは、
    前記データが前記ハッシュテーブルに格納されたか又はオーバーフローメモリ領域に格納されたかを示す第1識別子と、
    前記データが格納された行を示す第2識別子と、
    前記データが格納された列を示す第3識別子と、を含むことを特徴とする請求項16に記載の重複除去モジュール。
  18. 前記複合型データ構造は、各署名バケットが複数の署名を含む複数の署名バケットを含む署名テーブルを更に含み、
    前記それぞれのハッシュシリンダは、前記複数の署名バケットのそれぞれの署名バケットを更に含み、
    前記それぞれの署名バケットは、前記それぞれの物理的ラインに関連するそれぞれの署名を含むことを特徴とする請求項14に記載の重複除去モジュール。
  19. 前記PLIDは、前記データに適用された第1ハッシュ関数を利用して生成され、
    前記PLIDは、前記ハッシュテーブルの位置を示すアドレスを含み、
    前記複数の署名は、前記第1ハッシュ関数よりも小さい第2ハッシュ関数を利用して生成されることを特徴とする請求項18に記載の重複除去モジュール。
  20. 各参照カウンターは、前記ハッシュテーブルに格納された該当データに対する重複除去回数を追跡することを特徴とする請求項14に記載の重複除去モジュール。
  21. ホストインターフェイスと、
    前記ホストインターフェイスを通じてホストシステムからデータ伝送要請を受信する伝送管理部と、
    複数のパーティションと、を備え、
    各パーティションは、
    前記伝送管理部からパーティションデータ要請を受信する重複除去エンジンと、
    複数のメモリコントローラと、
    前記重複除去エンジンと前記メモリコントローラとの間に提供されるメモリ管理部と、
    各メモリモジュールが前記複数のメモリコントローラの中の1つに連結される複数のメモリモジュールと、を含むことを特徴とする重複除去モジュール。
  22. 読出しキャッシュと、
    メモリと、
    複数のハッシュバケットの第1ハッシュバケットに対するV個の仮想バケットを識別する重複除去エンジンと、を備え、
    前記メモリは、
    変換テーブルと、
    各ハッシュバケットが各物理的ラインにデータを格納する複数の物理的ラインを含む複数のハッシュバケットを含むハッシュテーブルと、
    各参照カウンターバケットが複数の参照カウンターを含む複数の参照カウンターバケットを含む参照カウンターテーブルと、を含み、
    前記仮想バケットは、前記第1ハッシュバケットに隣接する前記複数のハッシュバケットの中の他のものであり、
    前記仮想バケットは、前記第1ハッシュバケットがフルに満たされた場合、前記第1ハッシュバケットのデータの一部を格納し、
    Vは、第1ハッシュバケットの仮想バケットがフルに満たされた場合に動的に調節される整数であることを特徴とする重複除去モジュール。

JP2017099688A 2016-05-20 2017-05-19 データの取得方法及び格納方法並びに重複除去モジュール Active JP6920107B2 (ja)

Applications Claiming Priority (14)

Application Number Priority Date Filing Date Title
US15/161,136 2016-05-20
US15/161,136 US9983821B2 (en) 2016-03-29 2016-05-20 Optimized hopscotch multiple hash tables for efficient memory in-line deduplication application
US15/162,517 2016-05-23
US15/162,517 US10496543B2 (en) 2016-03-31 2016-05-23 Virtual bucket multiple hash tables for efficient memory in-line deduplication application
US201662368775P 2016-07-29 2016-07-29
US62/368,775 2016-07-29
US201762450502P 2017-01-25 2017-01-25
US62/450,502 2017-01-25
US201762451157P 2017-01-27 2017-01-27
US62/451,157 2017-01-27
US201762453461P 2017-02-01 2017-02-01
US62/453,461 2017-02-01
US15/476,757 2017-03-31
US15/476,757 US10678704B2 (en) 2016-03-29 2017-03-31 Method and apparatus for enabling larger memory capacity than physical memory size

Publications (3)

Publication Number Publication Date
JP2017208096A true JP2017208096A (ja) 2017-11-24
JP2017208096A5 JP2017208096A5 (ja) 2020-07-02
JP6920107B2 JP6920107B2 (ja) 2021-08-18

Family

ID=60404742

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017099688A Active JP6920107B2 (ja) 2016-05-20 2017-05-19 データの取得方法及び格納方法並びに重複除去モジュール

Country Status (4)

Country Link
JP (1) JP6920107B2 (ja)
KR (1) KR102190403B1 (ja)
CN (1) CN107402889B (ja)
TW (1) TWI804466B (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2019128949A (ja) * 2018-01-19 2019-08-01 三星電子株式会社Samsung Electronics Co.,Ltd. デデュープ可能なメモリキャッシュ及びそのための動作方法
JP2020030822A (ja) * 2018-08-21 2020-02-27 三星電子株式会社Samsung Electronics Co.,Ltd. インメモリコンピューティングのための大容量メモリシステム
CN114253472A (zh) * 2021-11-29 2022-03-29 郑州云海信息技术有限公司 一种元数据管理方法、设备及存储介质

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9983821B2 (en) * 2016-03-29 2018-05-29 Samsung Electronics Co., Ltd. Optimized hopscotch multiple hash tables for efficient memory in-line deduplication application
KR102540964B1 (ko) * 2018-02-12 2023-06-07 삼성전자주식회사 입출력 장치의 활용도 및 성능을 조절하는 메모리 컨트롤러, 애플리케이션 프로세서 및 메모리 컨트롤러의 동작
CN110765156A (zh) 2018-07-09 2020-02-07 慧荣科技股份有限公司 链表搜索装置及方法
US11023374B2 (en) 2018-07-09 2021-06-01 Silicon Motion, Inc. Apparatus and method and computer program product for controlling data access
US11079954B2 (en) * 2018-08-21 2021-08-03 Samsung Electronics Co., Ltd. Embedded reference counter and special data pattern auto-detect
CN109299215B (zh) * 2018-09-28 2024-06-18 平安科技(深圳)有限公司 倒排索引查询的资源分配方法、装置及存储介质、服务器
CN112181242B (zh) * 2019-07-02 2021-11-02 北京百度网讯科技有限公司 页面展示方法及装置
KR102467372B1 (ko) * 2022-01-06 2022-11-14 삼성전자주식회사 스토리지 장치 및 이의 동작 방법

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10260869A (ja) * 1997-03-10 1998-09-29 Digital Equip Corp <Dec> 性能カウンタの高頻度サンプリング装置及び方法
JP2009087021A (ja) * 2007-09-28 2009-04-23 Hitachi Ltd ストレージ装置及びデータ重複排除方法
WO2015108931A1 (en) * 2014-01-15 2015-07-23 Cheriton David R Deduplication-based data security

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003030040A (ja) * 2001-07-12 2003-01-31 Nec Commun Syst Ltd オブジェクトデータベースシステムの複数ハッシュインデックスおよび非ユニークインデックス管理方式
US8407428B2 (en) * 2010-05-20 2013-03-26 Hicamp Systems, Inc. Structured memory coprocessor
CN101655861B (zh) * 2009-09-08 2011-06-01 中国科学院计算技术研究所 基于双计数布鲁姆过滤器的哈希方法和哈希装置
US8370593B2 (en) * 2010-04-14 2013-02-05 Hitachi, Ltd. Method and apparatus to manage groups for deduplication
WO2012056491A1 (en) * 2010-10-26 2012-05-03 Hitachi, Ltd. Storage apparatus and data control method
US9047304B2 (en) * 2011-11-28 2015-06-02 International Business Machines Corporation Optimization of fingerprint-based deduplication
US8688661B2 (en) * 2012-06-15 2014-04-01 International Business Machines Corporation Transactional processing
US9069782B2 (en) * 2012-10-01 2015-06-30 The Research Foundation For The State University Of New York System and method for security and privacy aware virtual machine checkpointing
US9983821B2 (en) * 2016-03-29 2018-05-29 Samsung Electronics Co., Ltd. Optimized hopscotch multiple hash tables for efficient memory in-line deduplication application
US10496543B2 (en) * 2016-03-31 2019-12-03 Samsung Electronics Co., Ltd. Virtual bucket multiple hash tables for efficient memory in-line deduplication application

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10260869A (ja) * 1997-03-10 1998-09-29 Digital Equip Corp <Dec> 性能カウンタの高頻度サンプリング装置及び方法
JP2009087021A (ja) * 2007-09-28 2009-04-23 Hitachi Ltd ストレージ装置及びデータ重複排除方法
WO2015108931A1 (en) * 2014-01-15 2015-07-23 Cheriton David R Deduplication-based data security

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2019128949A (ja) * 2018-01-19 2019-08-01 三星電子株式会社Samsung Electronics Co.,Ltd. デデュープ可能なメモリキャッシュ及びそのための動作方法
JP7010809B2 (ja) 2018-01-19 2022-01-26 三星電子株式会社 デデュープ可能なメモリキャッシュ及びそのための動作方法
JP2020030822A (ja) * 2018-08-21 2020-02-27 三星電子株式会社Samsung Electronics Co.,Ltd. インメモリコンピューティングのための大容量メモリシステム
CN110851076A (zh) * 2018-08-21 2020-02-28 三星电子株式会社 存储器系统和删除重复存储器系统
CN114253472A (zh) * 2021-11-29 2022-03-29 郑州云海信息技术有限公司 一种元数据管理方法、设备及存储介质
CN114253472B (zh) * 2021-11-29 2023-09-22 郑州云海信息技术有限公司 一种元数据管理方法、设备及存储介质

Also Published As

Publication number Publication date
TWI804466B (zh) 2023-06-11
CN107402889A (zh) 2017-11-28
KR102190403B1 (ko) 2020-12-11
CN107402889B (zh) 2023-07-11
JP6920107B2 (ja) 2021-08-18
KR20170131274A (ko) 2017-11-29
TW201741883A (zh) 2017-12-01

Similar Documents

Publication Publication Date Title
KR102190403B1 (ko) 물리적 메모리 크기보다 큰 메모리 용량을 가능하게 하기 위한 방법 및 장치
JP6764362B2 (ja) メモリの重複除去方法及び重複除去dramメモリモジュール
US10678704B2 (en) Method and apparatus for enabling larger memory capacity than physical memory size
US11010300B2 (en) Optimized record lookups
US9495294B2 (en) Enhancing data processing performance by cache management of fingerprint index
TWI683217B (zh) 使用去重複dram系統演算法架構的去重複記憶體模組及其方法
JP2018133086A (ja) ハイブリッドメモリーモジュール及びその動作方法
WO2019127104A1 (zh) 高速缓存中资源调整方法、数据访问方法及装置
US10496543B2 (en) Virtual bucket multiple hash tables for efficient memory in-line deduplication application
US10528284B2 (en) Method and apparatus for enabling larger memory capacity than physical memory size
WO2014142337A1 (ja) ストレージ装置と方法及びプログラム
Guo et al. HP-mapper: A high performance storage driver for docker containers
US12010214B2 (en) Hash based key value to block translation methods and systems
US20160103766A1 (en) Lookup of a data structure containing a mapping between a virtual address space and a physical address space
Boggavarapu Deduplication-aware Page Cache in Linux Kernel for Improved Read Performance
TW202340934A (zh) 用於具有計算儲存裝置的跨層鍵值儲存體的系統和方法

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200519

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20200519

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20200519

A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20200910

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20200916

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20200929

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20201204

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20210119

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210419

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20210726

R150 Certificate of patent or registration of utility model

Ref document number: 6920107

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150