JP7058132B2 - Systems and methods for maximized deduplication memory - Google Patents

Systems and methods for maximized deduplication memory Download PDF

Info

Publication number
JP7058132B2
JP7058132B2 JP2018010614A JP2018010614A JP7058132B2 JP 7058132 B2 JP7058132 B2 JP 7058132B2 JP 2018010614 A JP2018010614 A JP 2018010614A JP 2018010614 A JP2018010614 A JP 2018010614A JP 7058132 B2 JP7058132 B2 JP 7058132B2
Authority
JP
Japan
Prior art keywords
hash table
memory
data
small
physical address
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2018010614A
Other languages
Japanese (ja)
Other versions
JP2018120594A (en
Inventor
冬 岩 姜
強 彭
宏 忠 鄭
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Samsung Electronics Co Ltd
Original Assignee
Samsung Electronics Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US15/476,757 external-priority patent/US10678704B2/en
Priority claimed from US15/498,371 external-priority patent/US10528284B2/en
Priority claimed from US15/823,549 external-priority patent/US10437785B2/en
Application filed by Samsung Electronics Co Ltd filed Critical Samsung Electronics Co Ltd
Publication of JP2018120594A publication Critical patent/JP2018120594A/en
Application granted granted Critical
Publication of JP7058132B2 publication Critical patent/JP7058132B2/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • G06F3/0607Improving or facilitating administration, e.g. storage management by facilitating the process of upgrading existing storage systems, e.g. for improving compatibility between host and storage device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • G06F3/0641De-duplication techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0608Saving storage space on storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages

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

本発明は、一般にメモリに関し、より詳しくは重複除去メモリを最大化するシステム及び方法に関する。 The present invention relates generally to memory, and more particularly to systems and methods for maximizing deduplication memory.

重複除去された(又は重複除去)メモリは、データを格納するためのより効率的なメカニズムを提供する。従来のメモリソリューションでは、各々のデータオブジェクトはメモリ内の固有位置に書き込まれる。同一のデータオブジェクトはメモリ内の任意の数の位置に格納され、各々はそのデータオブジェクトの分離されたコピーである。メモリシステムは、このようなデータの繰り返し格納を識別又は防止する方法を有しない。大規模なデータオブジェクトに対して、データのこのような繰り返し格納は無駄である。任意のデータオブジェクトの1つのコピーのみを格納する重複除去メモリはこの問題を解決しようとする。 Deduplicated (or deduplicated) memory provides a more efficient mechanism for storing data. In traditional memory solutions, each data object is written to a unique location in memory. The same data object is stored in any number of locations in memory, each being a separate copy of that data object. The memory system has no way of identifying or preventing such repeated storage of data. Such repetitive storage of data is useless for large data objects. Deduplication memory, which stores only one copy of any data object, attempts to solve this problem.

幾つかの重複除去メモリは、データオブジェクトを格納するためにハッシュテーブル(Hash Table)を使用する。しかし、ハッシュテーブルは、サイズを2倍にするメカニズムによってのみ増加される。このような大きい増加粒状度(granularity)は、しばしば重複除去メモリとして使用できないメモリの大きな部分を残し、単にオーバーフロー領域として処理される。オーバーフロー領域のメモリは重複除去されないので、メモリの大きな部分が重複除去できない場合、全般的な重複除去比率は低下する。 Some deduplication memory uses a hash table to store data objects. However, the hash table is only incremented by a mechanism that doubles its size. Such a large granularity often leaves a large portion of the memory that cannot be used as the deduplication memory and is simply treated as an overflow area. Since the memory in the overflow area is not deduplicated, the overall deduplication ratio will be reduced if a large portion of the memory cannot be deduplicated.

そこで、重複除去の対象にされるメモリの比率を増加させるための方法が依然必要である。 Therefore, there is still a need for a method to increase the proportion of memory targeted for deduplication.

米国特許第9639274号明細書U.S. Pat. No. 9639274 米国特許出願公開第2015/0370835号明細書U.S. Patent Application Publication No. 2015/0370835 米国特許出願公開第2017/0161329号明細書U.S. Patent Application Publication No. 2017/0161329

本発明は、上記従来の問題点に鑑みてなされたものであって、本発明の目的は、重複除去の対象となるメモリの部分を増加させるためのシステム及び方法を提供することにある。 The present invention has been made in view of the above-mentioned conventional problems, and an object of the present invention is to provide a system and a method for increasing a portion of memory to be deduplicated.

上記目的を達成するためになされた本発明の一態様によるメモリシステムは、データを格納するメモリと、前記メモリに格納され、所定数のバケット及び第1の数のウェイを含み、2のの累乗である第1数のバイトを含む前記メモリの第1部分を含む大きいハッシュテーブルと、前記メモリに格納され、所定数のバケット及び第2の数のウェイを含み、2のの累乗である第2数のバイトを含む前記メモリの第2部分を含む小さいハッシュテーブルと、前記メモリに格納され、前記メモリの第3部分を含むオーバーフロー領域と、論理アドレスを領域識別子及び物理アドレスを含むPLID(Physical Line Identifier)にマッピングする変換テーブルと、を備えることを特徴とする。
A memory system according to an aspect of the present invention made to achieve the above object includes a memory for storing data, a predetermined number of buckets and a first number of ways stored in the memory, and a first of two. A large hash table containing the first part of the memory containing the first part of the memory, which is a power of, and a second number of 2 buckets stored in the memory containing a predetermined number of buckets and a second number of ways . A small hash table containing a second part of the memory containing a second number of bytes that is a power , an overflow area stored in the memory containing the third part of the memory, and a logical address as an area identifier and a physical address. It is characterized by comprising a conversion table for mapping to a PLID (Physical Line Idea) including the above.

上記目的を達成するためになされた本発明の一態様によるメモリシステムの方法は、プロセッサから論理アドレスを受信する段階と、変換テーブルを使用して、前記論理アドレスを領域識別子及び物理アドレスを含むPLID(Physical Line Identifier)にマッピングする段階と、前記領域識別子を利用して、メモリ内の大きいハッシュテーブル、小さいハッシュテーブル、又はオーバーフロー領域に前記物理アドレスがあるか否かを判別する段階と、前記物理アドレスを利用して前記メモリ内のデータにアクセスする段階と、を有することを特徴とする。 A method of a memory system according to an aspect of the present invention made to achieve the above object uses a step of receiving a logical address from a processor and a conversion table to convert the logical address to a PLL including an area identifier and a physical address. The stage of mapping to (Physical Line Idea), the stage of determining whether or not the physical address exists in the large hash table, the small hash table, or the overflow area in the memory by using the area identifier, and the physical. It is characterized by having a stage of accessing the data in the memory by using an address.

上記目的を達成するためになされた本発明の一態様によるコンピュータ読み取り可能な記録媒体は、コンピュータに下記方法を実行させるためのプログラムを記録し、前記方法は、プロセッサから論理アドレスを受信する段階と、変換テーブルを使用して、前記論理アドレスを領域識別子及び物理アドレスを含むPLID(Physical Line Identifier)にマッピングする段階と、前記領域識別子を利用して、メモリ内の大きいハッシュテーブル、小さいハッシュテーブル、又はオーバーフロー領域に前記物理アドレスがあるか否かを判別する段階と、前記物理アドレスを利用して前記メモリ内のデータにアクセスする段階と、を有することを特徴とする。 A computer-readable recording medium according to an aspect of the present invention made to achieve the above object records a program for causing a computer to execute the following method, and the method is a step of receiving a logical address from a processor. , A step of mapping the logical address to a PLID (Physical Line Identity) including an area identifier and a physical address using a conversion table, and a large hash table and a small hash table in memory using the area identifier. Alternatively, it is characterized by having a step of determining whether or not the physical address exists in the overflow area, and a step of accessing the data in the memory by using the physical address.

本発明によれば、重複除去された(又は重複除去)メモリは、データを格納するより効果的なメカニズムを提供する。また、メモリの使用を向上させて、重複除去が効果的になるために必要な重複除去比率を減少させる。 According to the present invention, deduplicated (or deduplicated) memory provides a more effective mechanism for storing data. It also improves memory usage and reduces the deduplication ratio required for effective deduplication.

本発明の一実施形態による重複除去メモリを使用するために動作するマシンを示す図である。It is a figure which shows the machine which operates for using the deduplication memory by one Embodiment of this invention. 図1に示すマシンのさらなる詳細を示す図である。It is a figure which shows the further detail of the machine shown in FIG. 図1のマシン内での重複除去メモリに対する従来のハッシュテーブルの使用を示す図である。It is a figure which shows the use of the conventional hash table for the deduplication memory in the machine of FIG. 本発明の一実施形態による拡張可能なハッシュテーブルの使用を示す図である。It is a figure which shows the use of the expandable hash table by one Embodiment of this invention. 本発明の一実施形態による拡張可能なハッシュテーブルの使用を示す図である。It is a figure which shows the use of the expandable hash table by one Embodiment of this invention. 論理アドレスを多様なメモリ目的地にマッピングするために図4の変換テーブルの使用を示す図である。It is a figure which shows the use of the conversion table of FIG. 4 to map a logical address to various memory destinations. 本発明の一実施形態による重複除去メモリに図4の拡張可能なハッシュテーブルを使用する手順の一例を示すフローチャートである。It is a flowchart which shows an example of the procedure which uses the expandable hash table of FIG. 4 for the deduplication memory by one Embodiment of this invention. 本発明の一実施形態による重複除去メモリに図4の拡張可能なハッシュテーブルを使用する手順の一例を示すフローチャートである。It is a flowchart which shows an example of the procedure which uses the expandable hash table of FIG. 4 for the deduplication memory by one Embodiment of this invention. 本発明の一実施形態によるメモリの読出し要請での論理アドレスに対するPLID(Physical Line Identifier)を判別するための手順の一例を示すフローチャートである。It is a flowchart which shows an example of the procedure for discriminating the PLID (Physical Line Identifier) with respect to the logical address in the read request of the memory by one Embodiment of this invention. 本発明の一実施形態によるメモリの書込み要請での論理アドレスに対するPLIDを判別するための手順の一例を示すフローチャートである。It is a flowchart which shows an example of the procedure for discriminating the PLID with respect to the logical address in the write request of the memory by one Embodiment of this invention. 本発明の一実施形態によるメモリの書込み要請での論理アドレスに対するPLIDを判別するための手順の一例を示すフローチャートである。It is a flowchart which shows an example of the procedure for discriminating the PLID with respect to the logical address in the write request of the memory by one Embodiment of this invention. 本発明の一実施形態によるメモリの書込み要請での論理アドレスに対するPLIDを判別するための手順の一例を示すフローチャートである。It is a flowchart which shows an example of the procedure for discriminating the PLID with respect to the logical address in the write request of the memory by one Embodiment of this invention. 本発明の一実施形態による小さいハッシュテーブルのサイズを増加させるか否かを判別するための手順の一例を示すフローチャートである。It is a flowchart which shows an example of the procedure for determining whether or not to increase the size of a small hash table by one Embodiment of this invention.

以下、本発明を実施するための形態の具体例を、図面を参照しながら詳細に説明する。後述する詳細な説明で、本発明の概念が完全に理解できるよう多数の具体的な事例が提示される。しかし、該当技術分野の通常の技術者はこのような具体的な事例無しに本発明を実施することができる。広く公知された方法、装置、構成要素、回路、及びネットワークは、本発明の態様を不必要に曖昧にしないために詳細に説明しない。 Hereinafter, specific examples of embodiments for carrying out the present invention will be described in detail with reference to the drawings. In the detailed description described below, a number of specific examples are presented so that the concept of the present invention can be fully understood. However, an ordinary engineer in the relevant technical field can carry out the present invention without such a specific case. Widely known methods, devices, components, circuits, and networks are not described in detail in order not to unnecessarily obscure aspects of the invention.

本明細書で多様な構成要素を説明するために第1、第2等の用語が使用されるが、これらの構成要素はこのような用語によって制限されない。例えば、本発明の技術的範囲から逸脱しない範囲で、第1モジュールは第2モジュールと称され、同様に第2モジュールは第1モジュールと称される。 The first, second, and the like are used herein to describe the various components, but these components are not limited by such terms. For example, to the extent that it does not deviate from the technical scope of the present invention, the first module is referred to as a second module, and similarly, the second module is referred to as a first module.

本発明の説明に使用される用語は、特定の実施形態を説明する目的にのみ使用され、本発明の技術的思想を限定しない。文脈上で明確に指示しない限り、単数表現は複数表現を含む。「及び/又は」の用語は1つ又はそれより多い連関されたエントリの任意且つ可能な全ての組み合わせを含む。「含む」及び/又は「含んでいる」の用語は記載された特性、整数、段階、動作、元素、及び/又は構成要素の存在を明記し、1つ又はそれより多い他の特性、整数、段階、動作、元素、構成要素、及び/又はそれらのグループの存在又は追加を排除しない。図面に示された構成要素及び特性は実際の比率に必ずしも比例しない。 The terms used in the description of the present invention are used only for the purpose of describing a particular embodiment and do not limit the technical idea of the present invention. Singular expressions include multiple expressions unless explicitly stated in the context. The term "and / or" includes any and possible combinations of one or more associated entries. The terms "contains" and / or "contains" specify the presence of the described properties, integers, steps, actions, elements, and / or components, one or more other properties, integers, Does not rule out the presence or addition of stages, actions, elements, components, and / or groups thereof. The components and properties shown in the drawings are not necessarily proportional to the actual ratio.

従来のハッシュテーブルでは、ハッシュテーブルのサイズをm×nで表し、mはハッシュバケット(又はロー)番号であり、nはウェイ(way)(又はカラム)番号である。例えば、ハッシュテーブルは、2=226ハッシュバケット及び2=2ウェイを有する。 In a conventional hash table, the size of the hash table is represented by m × n, where m is a hash bucket (or low) number and n is a way (or column) number. For example, the hash table has 2 m = 2 26 hash buckets and 2 n = 25 ways.

従来のハッシュテーブルが大きくなる時、ハッシュテーブルサイズの増加分は現在のサイズの2倍である(Nが指数を増加させるため、ハッシュテーブルの次元を2倍に増加させる)。ハッシュバケットの数は変わらず、ウェイの数のみが変わる。したがって、利用可能なメモリ容量及びハッシュテーブルのサイズに応じて、ハッシュテーブルのサイズを2倍に大きくすることが可能でないこともあり得る。この事実は、重複除去されないメモリの大きな部分を残し、この部分はオーバーフロー領域として使用される。 When the traditional hash table grows, the increase in hash table size is twice the current size (since N increases the exponent, the dimension of the hash table is doubled). The number of hash buckets does not change, only the number of ways. Therefore, it may not be possible to double the size of the hash table, depending on the amount of memory available and the size of the hash table. This fact leaves a large portion of memory that is not deduplicated, and this portion is used as an overflow area.

本明細書で、拡張可能な(scalable)ハッシュテーブルは、従来のハッシュテーブルである大きいハッシュテーブル(Big Hash Table)、及び同じ数のハッシュバケットを含むが、より小さい数のウェイを有する小さいハッシュテーブル(Little Hash Table)を含む。したがって、例えば、大きいハッシュテーブルに対して2=226及び2=2(また代わりに、m=26及びn=5)である場合、小さいハッシュテーブルのサイズは2=226及び2n’であり、ここで、n’は1とn-1との間の任意の数である。拡張可能なハッシュテーブルは、重複除去メモリサイズを最大化するためにハッシュテーブルサイズをより細かい粒状度(granularity)で調整して、高い重複除去比率を達成するように柔軟性(flexibility)を提供する。「大きいハッシュテーブル」及び「小さいハッシュテーブル」という名称は、単にいずれのハッシュテーブルが参照されるかを明確にするためのものである。ハッシュテーブルは何らの機能を失うことなく、ただ「第1ハッシュテーブル」及び「第2ハッシュテーブル」と容易に称される。 As used herein, a scalable hash table includes a large hash table, which is a conventional hash table, and a small hash table that includes the same number of hash buckets but has a smaller number of ways. (Little Hash Table) is included. So, for example, if 2 m = 2 26 and 2 n = 25 (and instead m = 26 and n = 5) for a large hash table, then the size of the small hash table is 2 m = 2 26 and 2 n' , where n'is any number between 1 and n-1. The extensible hash table adjusts the hash table size with finer granularity to maximize the deduplication memory size, providing flexibility to achieve high deduplication ratios. .. The names "large hash table" and "small hash table" are merely to clarify which hash table is referenced. Hash tables are simply referred to simply as "first hash tables" and "second hash tables" without losing any functionality.

論理アドレスの物理メモリへのマッピング(mapping)(物理的ラインID、又はPLID(Physical Line ID)としても知られる)は、変換テーブル(Translation Table)によって管理される。使用者データ(物理的ライン又はPL(Physical Line)としても知られる)は、大きいハッシュテーブル、小さいハッシュテーブル、及びオーバーフロー領域の中の1つに格納される。 The mapping of logical addresses to physical memory (also known as physical line ID, or PLID (Physical Line ID)) is managed by a translation table. User data (also known as a physical line or PL (Physical Line)) is stored in one of a large hash table, a small hash table, and an overflow area.

変換テーブルエントリは、使用者データが大きいハッシュテーブルの中、又は小さいハッシュテーブル若しくはオーバーフロー領域の中の1つに存在するか否かを示す領域を含む。したがって、例えば、この領域が値0を格納する場合、使用者データは大きいハッシュテーブルで発見される。そうでなければ、使用者データは小さいハッシュテーブル又はオーバーフロー領域で発見される。 The translation table entry includes an area indicating whether the user data is present in one of the large hash tables or the small hash table or overflow area. So, for example, if this area stores a value of 0, the user data will be found in a large hash table. Otherwise, user data will be found in a small hash table or overflow area.

使用者データが大きいハッシュテーブルに格納されない場合、変換テーブルエントリは小さいハッシュテーブルとオーバーフロー領域との中のいずれが使用者データを格納するかを示す下位領域も含む。したがって、例えば、下位領域が値0を格納する場合、使用者データは小さいハッシュテーブルで発見される。そうでなければ、使用者データはオーバーフロー領域で発見される。 If the user data is not stored in a large hash table, the translation table entry also contains a subregion that indicates which of the smaller hash table and the overflow area stores the user data. So, for example, if the subregion stores the value 0, the user data is found in a small hash table. Otherwise, user data will be found in the overflow area.

図1は、本発明の一実施形態による重複除去メモリを使用するために動作するマシンを示す。図1に、マシン105が示されている。マシン105は、デスクトップコンピュータ、ラップトップコンピュータ、サーバー(スタンドアロンサーバー(standalone server)又はラックサーバー(rack server)の中の1つ)、又は本発明の実施形態から利益を得ることができる他の任意の装置を含む。但し、これらに制限されない。マシン105は、特殊な携帯用コンピューティング装置、タブレットコンピュータ、スマートフォン、及び他のコンピューティング装置を含む。マシン105は任意の所望の応用プログラムを実行する。データベースアプリケーションがよい例であるが、本発明の実施形態は任意の所望のアプリケーションに拡張される。 FIG. 1 shows a machine operating to use the deduplication memory according to an embodiment of the invention. FIG. 1 shows the machine 105. The machine 105 can be a desktop computer, a laptop computer, a server (one of a stand-alone server or a rack server), or any other embodiment of the invention that can benefit from it. Includes equipment. However, it is not limited to these. Machine 105 includes specialized portable computing devices, tablet computers, smartphones, and other computing devices. The machine 105 runs any desired application program. A database application is a good example, but embodiments of the invention extend to any desired application.

マシン105は、特定の形態には拘らず、プロセッサ110、メモリ115、及び格納装置120を備える。プロセッサ110は、任意の多様なプロセッサである。例えば、Intel(登録商標) Xeon(登録商標)、Celeron(登録商標)、Itanium(登録商標)、又はAtom(登録商標)プロセッサ、AMD(登録商標) Opteron(登録商標)プロセッサ、ARM(登録商標)プロセッサ等である。図1には、1つのプロセッサを示しているが、マシン105は任意の数のプロセッサを含み、各々はシングルコア又はマルチコアプロセッサである。メモリ115は、フラッシュメモリ、SRAM(Static Random Access Memory)、PRAM(Persistent Random Access Memory)、FeRAM(Ferroelectric Random Access Memory)、又はMRAM(Magnetoresistive Random Access Memory)のようなNVRAM(Non-Volatile Random Access Memory)などの任意の多様なメモリである。メモリ115は、異なるメモリタイプの任意の所望の組み合わせであってもよい。メモリ115は、マシン105の一部であるメモリコントローラ125によって制御される。 The machine 105 includes a processor 110, a memory 115, and a storage device 120, regardless of the specific form. The processor 110 is any variety of processors. For example, Intel® Xeon®, Celeron®, Itanium®, or Atom® processor, AMD® Opteron® processor, ARM®. It is a processor etc. Although FIG. 1 shows one processor, the machine 105 includes any number of processors, each of which is a single-core or multi-core processor. Memory 115, a flash memory, SRAM (Static Random Access Memory), PRAM (Persistent Random Access Memory), FeRAM (Ferroelectric Random Access Memory), or MRAM (Magnetoresistive Random Access Memory) such as NVRAM (Non-Volatile Random Access Memory ) And any other variety of memory. The memory 115 may be any desired combination of different memory types. The memory 115 is controlled by a memory controller 125 that is part of the machine 105.

格納装置120は、任意の多様な格納装置である。格納装置120は、メモリ115内に配置される装置ドライバー130によって制御される。 The storage device 120 is any variety of storage devices. The storage device 120 is controlled by the device driver 130 arranged in the memory 115.

図2は、図1に示すマシン105のさらなる詳細を示す図である。図2を参照すると、一般的に、マシン105は、マシン105の構成要素の動作を調整するために使用されるメモリコントローラ125及びクロック205を含む1つ以上のプロセッサ110を備える。プロセッサ110は、例えば、RAM(random access memory)、ROM(read-only memory)、又は他の状態保持媒体を含むメモリ115に連結される。プロセッサ110は、格納装置120、及びイーサーネットコネクター又は無線コネクターなどのネットワークコネクター210と結合される。プロセッサ110は、他の構成要素の中で、使用者インターフェイス220及び入/出力エンジン225を使用して管理される入力/出力インターフェイスポートが接続されるバス215に連結される。 FIG. 2 is a diagram showing further details of the machine 105 shown in FIG. Referring to FIG. 2, in general, a machine 105 comprises one or more processors 110 including a memory controller 125 and a clock 205 used to coordinate the operation of the components of the machine 105. The processor 110 is connected to a memory 115 including, for example, a RAM (random access memory), a ROM (read-only memory), or another state-holding medium. The processor 110 is coupled with a storage device 120 and a network connector 210 such as an Ethernet connector or a wireless connector. The processor 110 is connected, among other components, to the bus 215 to which the input / output interface ports managed using the user interface 220 and the input / output engine 225 are connected.

図1乃び図2で、メモリ115は重複除去メモリである。重複除去メモリの実装は、DRAM(Dynamic Random Access Memory)のようなメモリの従来の形態とは異なるが、これらの相異点は重複除去メモリの実装には関連しない。また、プロセッサ110のようなマシン105の他のハードウェア構成要素がメモリ115の特定の実装を認知するか否かは、これらの構成要素がメモリ115の物理構造を知る必要があるか否かに依存する。このメモリ115の特定の実装に対する「知識の不足」は、マシン105上で実行されるアプリケーションプログラムのような、ソフトウェア構成要素に拡張される。アプリケーションプログラムは、メモリ115がDRAM、重複除去メモリ、又は任意の他の形態のメモリを含むか否かに対する知識無しに、読出し及び書込み要請をメモリ115に伝送する。 In FIG. 1 and FIG. 2, the memory 115 is a deduplication memory. The implementation of deduplication memory differs from conventional forms of memory such as DRAM (Dynamic Random Access Memory), but these differences are not relevant to the implementation of deduplication memory. Also, whether other hardware components of the machine 105, such as the processor 110, recognize a particular implementation of the memory 115 depends on whether these components need to know the physical structure of the memory 115. Dependent. This "lack of knowledge" for a particular implementation of memory 115 extends to software components, such as application programs running on machine 105. The application program transmits read and write requests to memory 115 without knowledge of whether memory 115 includes DRAM, deduplication memory, or any other form of memory.

図3は、本明細書でのすべての目的に対する参照として引用される、2017年4月26日に提出された米国特許出願第15/498371明細書及び2017年10月5日に公開された米国特許出願公開第2017/0286010明細書で説明されているように、図1のマシン105での重複除去メモリに対する従来のハッシュテーブルの使用を示す。図3に示すように、メモリ115はハッシュテーブル305、変換テーブル310、シグネチャーテーブル315、及びオーバーフロー領域320を含む。ハッシュテーブル305は、2ロー又はバケット、及び2ウェイ又はカラムを含むように構成される。ハッシュテーブル305は使用者データを格納するために使用され、各々の使用者データは特定のハッシュバケット内の特定のウェイに格納される。図3はハッシュテーブル305が全体メモリの約1/3であることを示しているが、実際にはハッシュテーブル305は任意のサイズであり、しばしば利用可能なメモリ内に合うよう、できる限り大きくなる(重複除去メモリを最大化するため)。オーバーフロー領域320は、重複除去メモリとして使用されないメモリ115の部分を示す(ハッシュテーブル305によって使用されるメモリよりも多くのメモリがあるが、ハッシュテーブル305のウェイの数を2倍にするのに十分な追加メモリがないためである)。 FIG. 3 is the US Patent Application No. 15/489371 filed on April 26, 2017 and the United States published on October 5, 2017, cited as references for all purposes herein. As described in Japanese Patent Application Publication No. 2017/0286010, the use of conventional hash tables for deduplication memory in machine 105 of FIG. 1 is shown. As shown in FIG. 3, the memory 115 includes a hash table 305, a conversion table 310, a signature table 315, and an overflow area 320. The hash table 305 is configured to include a 2 m row or bucket and a 2 n way or column. The hash table 305 is used to store user data, and each user data is stored in a particular way within a particular hash bucket. Figure 3 shows that the hash table 305 is about 1/3 of the total memory, but in reality the hash table 305 is of arbitrary size and is often as large as possible to fit within the available memory. (To maximize deduplication memory). The overflow area 320 indicates a portion of memory 115 that is not used as deduplication memory (there is more memory than is used by hash table 305, but sufficient to double the number of ways in hash table 305. Because there is no additional memory).

図4は、本発明の一実施形態による拡張可能なハッシュテーブルの使用を示す図である。図3とは対照的に、図4は大きいハッシュテーブル305、変換テーブル310、シグネチャーテーブル315、オーバーフロー領域320、及び小さいハッシュテーブル405を含む。小さいハッシュテーブル405は大きいハッシュテーブル305のように、2個のバケットを含む。しかし、小さいハッシュテーブル405は2n’個のウェイを含み、ここで、n’はnより小さい。本発明の幾つかの実施形態で、n’は変化し、小さいハッシュテーブル405が時間に応じて動的に大きくなる。したがって、例えば、n’は(実装に応じて)0又は1から開始し、小さいハッシュテーブル405が十分に満たされて新しいエントリがバケットに配置されない時、n’は1だけ増加する。例えば、メモリ115が比較的少ない重複除去を遂行する場合に、小さいハッシュテーブル405は動的に縮小する。本発明の他の実施形態で、小さいハッシュテーブル405は静的に(それはメモリ内にある可能性があるほどに大きい)設定される。 FIG. 4 is a diagram showing the use of an extensible hash table according to an embodiment of the present invention. In contrast to FIG. 3, FIG. 4 includes a large hash table 305, a conversion table 310, a signature table 315, an overflow area 320, and a small hash table 405. The small hash table 405, like the large hash table 305, contains 2 m buckets. However, the small hash table 405 contains 2 n'way, where n'is less than n . In some embodiments of the invention, n'varies and the small hash table 405 grows dynamically over time. So, for example, n'starts from 0 or 1 (depending on the implementation) and increases by 1 when the small hash table 405 is fully filled and no new entries are placed in the bucket. For example, the small hash table 405 shrinks dynamically when the memory 115 performs relatively little deduplication. In another embodiment of the invention, the small hash table 405 is set statically (large enough that it may be in memory).

大きいハッシュテーブル305又は小さいハッシュテーブル405の中の1つに与えられたロー及びカラム値に対して、ハッシュテーブルは、エントリ410のようなエントリを含む。エントリ410は、データ415及び度数カウンター(frequency counter)420を含む。データ415は実際のデータを格納する。度数カウンター420はデータに対する異なる参照の数を追跡する。アプリケーションがデータ415の使用に関心を示すと、度数カウンター420は増加する。アプリケーションがそれ以上データ415に関心がない時、度数カウンター420は減少する。 For a row and column value given to one of the large hash table 305 or the small hash table 405, the hash table contains an entry such as entry 410. Entry 410 includes data 415 and a frequency counter 420. The data 415 stores the actual data. Frequency counter 420 keeps track of the number of different references to the data. When the application is interested in using the data 415, the frequency counter 420 increases. When the application is no longer interested in data 415, the frequency counter 420 is decremented.

n’はnより大きくてはならない。結局、メモリが、n’がnくらいの大きい数になるための充分な空間を含むならば、大きいハッシュテーブル305は最初から2倍に作成され、小さいハッシュテーブル405を使用する必要はない。 n'must not be greater than n. After all, if the memory contains enough space for n'to be as large as n, the large hash table 305 is created twice from the beginning and there is no need to use the small hash table 405.

以上の説明は、小さいハッシュテーブル405が静的であるか、又は動的であるかに拘らず、大きいハッシュテーブル305が静的に設定されることを提案する。本発明の幾つかの実施形態で、大きいハッシュテーブル305は静的に設定されるが、本発明の他の実施形態で大きいハッシュテーブル305は(物理的メモリの範囲内でそれ以上大きくならないところまで)必要に応じて動的に大きくなる。さらに、大きいハッシュテーブル305と小さいハッシュテーブル405との間に、これらのどちらが静的又は動的であるかを要求される関係はない。即ち、テーブルの両方が静的であってもよく、一方が静的であり、他方は動的であってもよく、又は両方が動的であってもよい。 The above description proposes that the large hash table 305 is statically set regardless of whether the small hash table 405 is static or dynamic. In some embodiments of the invention the large hash table 305 is statically set, whereas in other embodiments of the invention the large hash table 305 does not grow any further within physical memory. ) It grows dynamically as needed. Furthermore, there is no requirement between the large hash table 305 and the small hash table 405 which of these is static or dynamic. That is, both of the tables may be static, one may be static, the other may be dynamic, or both may be dynamic.

大きいハッシュテーブル305及び小さいハッシュテーブル405の両方を使用して、より多くのメモリ115が重複除去メモリに使用され、より少ないメモリ115がオーバーフロー領域320に割り当られる。これはメモリ115の使用を向上させて、重複除去が効果的になるために必要な重複除去比率を減少させる。 Using both the large hash table 305 and the small hash table 405, more memory 115 is used for deduplication memory and less memory 115 is allocated to the overflow area 320. This improves the use of memory 115 and reduces the deduplication ratio required for effective deduplication.

幾つかの例が参考になる。総メモリ容量が274,877,906,944バイト(約256GB)で、大きいハッシュテーブル305が32(2)ウェイを有し、小さいハッシュテーブル405が16(2)ウェイを有する状況を考察する。以下の表1は、ハッシュテーブル305のみを使用した場合とハッシュテーブル305及び小さいハッシュテーブル405を使用した場合とを比較した、ハッシュテーブルの使用に関する関連データを示す。表1から明らかなように、3.0の効果的な重複除去比率を達成するために、ハッシュテーブル305のみに対して要求される原始重複除去比率は5.4である。即ち、メモリ115に格納された約5.4%のデータが3.0の効果的な重複除去比率を達成するために重複除去されたデータを示さなければならない。一方、大きいハッシュテーブル305及び小さいハッシュテーブル405の両方が共に使用される場合、3.0の効果的な重複除去比率を達成するためには、ただ3.9の原始重複除去比率が必要である。これは相当に向上されている。 Some examples will be helpful. Consider a situation where the total memory capacity is 274,877,906,944 bytes (about 256 GB), the large hash table 305 has 32 ( 25 ) ways, and the small hash table 405 has 16 ( 24) ways. .. Table 1 below shows relevant data on the use of the hash table comparing the use of the hash table 305 alone with the use of the hash table 305 and the smaller hash table 405. As is clear from Table 1, in order to achieve an effective deduplication ratio of 3.0, the primitive deduplication ratio required for hash table 305 only is 5.4. That is, about 5.4% of the data stored in memory 115 must indicate the deduplicated data in order to achieve an effective deduplication ratio of 3.0. On the other hand, if both the large hash table 305 and the small hash table 405 are used together, only 3.9 primitive deduplication ratios are needed to achieve an effective deduplication ratio of 3.0. .. This has been significantly improved.

Figure 0007058132000001
Figure 0007058132000001

大きいハッシュテーブル305及び小さいハッシュテーブル405の両方を使用する場合、より低い原始重複除去比率が必要となる理由は、より多くのメモリ115が重複除去メモリとして使用されるためである。即ち、オーバーフロー領域320は、より小さい。より少ないメモリ115がオーバーフロー領域320に使用されるため、より低い原始重複除去比率が必要となり、メモリ115は全般的により効率的に使用される。 When both the large hash table 305 and the small hash table 405 are used, the reason why a lower primitive deduplication ratio is required is that more memory 115 is used as the deduplication memory. That is, the overflow region 320 is smaller. Since less memory 115 is used for the overflow area 320, a lower primitive deduplication ratio is required and memory 115 is generally used more efficiently.

第2の例として、同じ物理メモリ内にある同一のハッシュテーブルを考察する。この例では、一定の原始重複除去比率を仮定する効果的な重複除去比率を考察する。表2はこのような状況を示している。表2に示すように、ハッシュテーブル305が単独で使用される時の効果的な重複除去比率は、大きいハッシュテーブル305と小さいハッシュテーブル405とが共に使用される時の効果的な重複除去比率よりも低い。 As a second example, consider the same hash table in the same physical memory. In this example, we consider an effective deduplication ratio that assumes a constant primitive deduplication ratio. Table 2 shows such a situation. As shown in Table 2, the effective deduplication ratio when the hash table 305 is used alone is higher than the effective deduplication ratio when the large hash table 305 and the small hash table 405 are used together. Is also low.

Figure 0007058132000002
Figure 0007058132000002

以上で説明した実施形態は、1つの大きいハッシュテーブル305及び1つの小さいハッシュテーブル405を示す。しかし、ただ1つの小さいハッシュテーブル405のみが使用される理由はない。図5は、本発明の他の実施形態による拡張可能なハッシュテーブルの使用を示す図である。本実施形態では、投資回収率を犠牲にして、多数の小さいハッシュテーブルを支援する。例えば、図5で、メモリ115は大きいハッシュテーブル305、小さいハッシュテーブル405、及び小さいハッシュテーブル505を含むことが示されている。小さいハッシュテーブル505は、このハッシュテーブル505がN”ウェイを含むことを除いて、形態及び機能において小さいハッシュテーブル405と同一であり、ここで、(N’がNより少ない2の累乗であるように)N”は、N’より少ない2の累乗である。 The embodiments described above show one large hash table 305 and one small hash table 405. However, there is no reason to use only one small hash table 405. FIG. 5 is a diagram illustrating the use of an extensible hash table according to another embodiment of the invention. In this embodiment, a large number of small hash tables are supported at the expense of return on investment. For example, in FIG. 5, memory 115 is shown to include a large hash table 305, a small hash table 405, and a small hash table 505. The small hash table 505 is identical in form and function to the small hash table 405, except that the hash table 505 includes an N "way, where (N'is a power of 2 less than N). Ni) N "is a power of 2 less than N'.

変換テーブル310は、論理アドレスを所望の使用者データが格納されたアドレスにマッピングすることを担当する。具体的に、変換テーブル310は、ロー及びカラム(即ち、バケット及びウェイ)を、(使用者データがハッシュテーブルの中の1つに格納された場合)使用者データが格納されたハッシュテーブルに格納するか、又は(使用者データがハッシュテーブルの中の1つに格納されない場合)オーバーフロー領域320に物理アドレスを格納する。図6はこのプロセスを示している。即ち、図6は、論理アドレスを多様なメモリ目的地にマッピングするために図4の変換テーブルの使用を示す図である。 The translation table 310 is responsible for mapping the logical address to the address where the desired user data is stored. Specifically, the conversion table 310 stores rows and columns (ie, buckets and ways) in a hash table containing user data (if the user data is stored in one of the hash tables). Or store the physical address in the overflow area 320 (if the user data is not stored in one of the hash tables). FIG. 6 illustrates this process. That is, FIG. 6 is a diagram showing the use of the conversion table of FIG. 4 to map logical addresses to various memory destinations.

図6で、変換テーブル310は、ホストコンピュータから論理アドレス605を受信する(論理アドレス605は、アプリケーション、オペレーティングシステム(Operating system)、又は図1のメモリ115からデータにアクセスが必要な任意の他のソフトウェア又はハードウェアから最終的に得られる)。論理アドレス605は、読出し要請又は書込み要請の中の1つであるデータ要請の部分である。論理アドレス605は、2つの構成要素、即ち、変換テーブルインデックス及び粒状度を含むものと考えられる。変換テーブルインデックスは、要請されたデータが発見される特定ページ(又はキャッシュライン)を示す。粒状度は検索されるデータの特定バイトを示す。具体的に、変換テーブルインデックスは、論理アドレス605から最下位ビットをマスクすることによって生成される。変換テーブルインデックスを生成するためにどのくらい多くのビットがマスクされるかは、変換テーブルインデックスのサイズに依存する(これは、図1のメモリ115のサイズ及びコンピュータシステムで使用されるキャッシュラインのサイズに依存する)。 In FIG. 6, the translation table 310 receives a logical address 605 from the host computer (the logical address 605 is an application, an operating system, or any other data that needs to be accessed from the memory 115 of FIG. 1). Ultimately obtained from software or hardware). The logical address 605 is a part of a data request which is one of a read request or a write request. The logical address 605 is considered to include two components: a translation table index and a granularity. The conversion table index indicates the specific page (or cache line) where the requested data is found. The granularity indicates a specific byte of the data to be searched. Specifically, the translation table index is generated by masking the least significant bit from the logical address 605. How many bits are masked to generate a translation table index depends on the size of the translation table index (this depends on the size of memory 115 in FIG. 1 and the size of the cache line used by the computer system. Dependent).

その後、変換テーブルインデックスは、PLID(Physical Line Identifier)610が読み出される変換テーブル内でインデックスとして使用される。PLID610は、使用者データが実際にどこに格納されるかに応じて異なる形態を取る。しかし、すべての場合において、PLID610は、領域識別子615及び物理アドレス620を含む。 The conversion table index is then used as an index in the conversion table from which the PLID (Physical Line Identifier) 610 is read. The PLEID 610 takes different forms depending on where the user data is actually stored. However, in all cases, the PLEID 610 includes a region identifier 615 and a physical address 620.

使用者データが図4の大きいハッシュテーブル305に格納される場合、PLID610はエントリ625のように見える。エントリ625で、領域識別子は1ビットを含み、これは使用者データが図4の大きいハッシュテーブル305に格納されたことを示す。そして、物理アドレスは、ローインデックス(ハッシュバケットを識別する)に対するmビット及びカラムインデックス(ウェイを識別する)に対するnビットを含む。mビットは2ハッシュバケットの中から選択するのに十分であり、nビットは2ウェイの中から選択するのに十分であるので、固有の使用者データが大きいハッシュテーブル305内で識別される。 If the user data is stored in the large hash table 305 of FIG. 4, the PLEID 610 looks like entry 625. At entry 625, the region identifier contains one bit, indicating that the user data was stored in the large hash table 305 of FIG. The physical address then includes m bits for the low index (identifying the hash bucket) and n bits for the column index (identifying the way). Since the m bits are sufficient to select from within the 2 m hash bucket and the n bits are sufficient to select from within the 2 n way, the unique user data is identified in the large hash table 305. To.

使用者データが図4の小さいハッシュテーブル405に格納される場合、PLID610はエントリ630のように見える。エントリ630で、領域識別子は2ビットを含む。即ち、使用者データが図4の大きいハッシュテーブル305に格納されていないことを示す第1ビット、及び使用者データが図4の小さいハッシュテーブル405に格納されていることを示す第2ビットを含む。そして、物理アドレスは、ローインデックス(ハッシュバケットを識別する)に対するmビット及びカラムインデックス(ウェイを識別する)に対するn’ビットを含む。n’は常にnより小さいので、2ビットが使用者データが格納された領域を識別するのに使用されるにも拘らず、エントリ630はエントリ625よりもさらに多くのビットを必要としない。 If the user data is stored in the small hash table 405 of FIG. 4, the PLEID 610 looks like entry 630. At entry 630, the region identifier contains 2 bits. That is, it includes a first bit indicating that the user data is not stored in the large hash table 305 of FIG. 4 and a second bit indicating that the user data is stored in the small hash table 405 of FIG. .. The physical address then includes an m-bit for the low index (identifying the hash bucket) and an n'bit for the column index (identifying the way). Since n'is always less than n, entry 630 does not require any more bits than entry 625, even though 2 bits are used to identify the area where user data is stored.

使用者データが図4のオーバーフロー領域320に格納される場合、PLID610はエントリ635のように見える。エントリ635で、領域識別子は再び2ビットを含む。即ち、使用者データが図4の大きいハッシュテーブル305に格納されないことを示す第1ビット、及び使用者データが図4のオーバーフロー領域320に格納されていることを示す第2ビットを含む。物理アドレスは、ロー及びカラムインデックス(エントリ625、630のように)を含むか、又は任意の他の所望のフォーマットを使用して、任意の所望の方式にフォーマットされる。 If the user data is stored in the overflow area 320 of FIG. 4, the PLEID 610 looks like entry 635. At entry 635, the region identifier again contains 2 bits. That is, it includes a first bit indicating that the user data is not stored in the large hash table 305 of FIG. 4, and a second bit indicating that the user data is stored in the overflow area 320 of FIG. The physical address contains raw and column indexes (such as entries 625, 630) or is formatted in any desired format using any other desired format.

エントリ625、630、及び635が、図4の大きいハッシュテーブル305、図4の小さいハッシュテーブル405、及び図4のオーバーフロー領域320のエントリの間をいかに区別するかを示したが、本発明の実施形態は使用される他の形態を支援する。例えば、図5に示す多数の小さいハッシュテーブル405及び505を含む実施形態で、領域識別子615は、図5の大きいハッシュテーブル305と他の領域との間を区別するための1ビットを含み、また、図5の小さいハッシュテーブル(405、505)、及び図5のオーバーフロー領域320の中から選択するための2ビットを使用する。又は、領域識別子615は常に最大4つの異なる領域まで選択するための2ビットを使用するか、又は常に異なる最大8個の領域まで選択するための3ビットを使用することなどができる。このアプローチは、領域を選択するために多様な数のビットを必要としない長所を有するが、全体PLID610を格納するための多様な数のビットを必要とし、使用されない領域615に対するビットの幾つかの組み合わせが残る。 Although entries 625, 630, and 635 show how to distinguish between entries in the large hash table 305 of FIG. 4, the small hash table 405 of FIG. 4, and the overflow region 320 of FIG. 4, the present invention is practiced. The morphology supports the other morphology used. For example, in an embodiment comprising a large number of small hash tables 405 and 505 shown in FIG. 5, the region identifier 615 includes one bit for distinguishing between the large hash table 305 of FIG. 5 and the other region. , The small hash table of FIG. 5 (405, 505), and 2 bits for selection from the overflow area 320 of FIG. Alternatively, the region identifier 615 may always use 2 bits to select up to 4 different regions, or may always use 3 bits to select up to 8 different regions. This approach has the advantage that it does not require a diverse number of bits to select the region, but it does require a diverse number of bits to store the entire PLEID 610 and some of the bits for the unused region 615. The combination remains.

図6は、論理アドレスから多くのビットをキーオフされたエントリと共に、テーブルとして変換テーブル310を説明したが、変換テーブル310は他の技術、例えばハッシュ関数を利用して、具現される。ハッシュ関数を利用する場合、特定の論理アドレス(又は論理アドレスの関連上位ビット)はハッシュ関数の対象になる可能性がある。ハッシュ関数の結果は、使用者データの位置(図4の大きいハッシュテーブル305、図4の小さいハッシュテーブル405、又は図4のオーバーフロー領域320)、及び物理アドレスを判別するのに使用される。 FIG. 6 describes the conversion table 310 as a table, with entries keyed off many bits from the logical address, but the conversion table 310 is embodied using other techniques, such as hash functions. When using a hash function, a specific logical address (or the associated high-order bit of the logical address) may be the target of the hash function. The result of the hash function is used to determine the location of the user data (large hash table 305 in FIG. 4, small hash table 405 in FIG. 4, or overflow area 320 in FIG. 4) and physical address.

図4に戻ると、重複除去メモリを使用する時の1つの問題は、使用者データが実際にメモリ115のどこかに格納されているのか否かを確認することである。例えば、異なるアプリケーションは同一のデータへのアクセスを要請するが、異なる論理アドレスを使用する(どちらのアプリケーションも、他のアプリケーション又は使用者データに対する他のアプリケーションの関心を認知できないので)。シグネチャーテーブル315は、与えられた使用者データがメモリ115に既に存在する幾つかの他の使用者データの複製であるか否かを判別し、使用者データの不必要なコピーが格納されることを防止するために使用される。 Returning to FIG. 4, one problem when using the deduplication memory is to check whether the user data is actually stored somewhere in the memory 115. For example, different applications request access to the same data, but use different logical addresses (because neither application recognizes the interest of other applications or user data). The signature table 315 determines if the given user data is a duplicate of some other user data that already exists in memory 115 and stores an unnecessary copy of the user data. Used to prevent.

使用者データがメモリ115に新たに格納される時、ハッシュ関数はシグネチャーを生成するために使用者データに適用される。このハッシュ関数は、メモリに使用者データが実際に格納された場所を判別するのに使用されるハッシュ関数と同一であるか、又は、異なるハッシュ関数である。使用者データが格納された場所を判別するのに使用されるハッシュ関数とは異なり、シグネチャーを生成するのに使用されるハッシュ関数は使用者データの論理アドレスではなく、使用者データ自体のハッシュを遂行する。その後、シグネチャーテーブル315はシグネチャーが存在するか否かを確認するために検索される。 When the user data is newly stored in memory 115, the hash function is applied to the user data to generate a signature. This hash function is the same as or different from the hash function used to determine where the user data is actually stored in memory. Unlike the hash function used to determine where the user data is stored, the hash function used to generate the signature is not the logical address of the user data, but the hash of the user data itself. To carry out. The signature table 315 is then searched to see if the signature exists.

シグネチャーは、通常、使用者データ自体よりも長さが短い(即ち、より少ビット)。したがって、異なる使用者データが同一のシグネチャーを生成することが可能である。言い換えると、シグネチャーの一致がシグネチャーテーブル315で発見される場合、その一致は使用者データがメモリ115に既に格納されていることを自動的に意味するものではない。使用者データがメモリ115に実際に格納されたか否かを判別するために、使用者データはメモリ115の識別されたデータと比較される。完全な比較が一致を示す場合、使用者データはメモリ115に既に格納されている。その場合、変換テーブル310は、図6のPLID610が使用者データが格納された位置を示すように設定する。逆の命題が真であることに留意する。シグネチャーテーブル315でシグネチャーの一致が発見されなければ、使用者データはメモリ115に未だ格納されていない(同一データが同一のハッシュ関数を使用して異なるシグネチャーを生成しないため)。その場合、新しいエントリが、論理アドレスに再びマッピングされるシグネチャーテーブル315に追加される。 Signatures are usually shorter (ie, less bits) in length than the user data itself. Therefore, it is possible for different user data to generate the same signature. In other words, if a signature match is found in the signature table 315, that match does not automatically mean that the user data is already stored in memory 115. User data is compared with the identified data in memory 115 to determine if the user data was actually stored in memory 115. If the exact comparison shows a match, the user data is already stored in memory 115. In that case, the conversion table 310 is set so that the PLL 610 in FIG. 6 indicates the position where the user data is stored. Keep in mind that the opposite proposition is true. If no signature match is found in the signature table 315, the user data is not yet stored in memory 115 (because the same data does not use the same hash function to generate different signatures). In that case, the new entry is added to the signature table 315, which is remapped to the logical address.

シグネチャーテーブル315は、一般的に大きいハッシュテーブル305及び小さいハッシュテーブル405に格納された使用者データに関してのみに使用される。即ち、シグネチャーテーブル315は、オーバーフロー領域320に格納されたデータのために使用されない。理由は単純である。オーバーフロー領域320は重複除去の対象ではないため、そこに重複データが格納される可能性がある。 The signature table 315 is generally used only for user data stored in the large hash table 305 and the small hash table 405. That is, the signature table 315 is not used for the data stored in the overflow area 320. The reason is simple. Since the overflow area 320 is not a target of deduplication, duplicate data may be stored there.

図7A及び図7Bは、本発明の一実施形態による重複除去メモリに図4の拡張可能なハッシュテーブルを使用する手順の一例を示すフローチャートである。図7Aの、段階705で、図4のメモリ115は、データ要請の一部として、図1のマシン105から図6の論理アドレス605を受信する(マシン105、オペレーティングシステム、又は幾つかの他の構成要素で実行中の応用プログラムから)。段階710で、図4のメモリ115は図6の論理アドレス605に対応する図6のPLID610を判別する。この場合、異なるアプローチ(approach)が図6のPLID610を判別するのに使用されるので、図6のPLID610がいかに判別されるかは、データが読み出されるか、又は書き込まれるかによって異なる。図6のPLID610が読出し及び書込み要請に対していかに判別されるかに対するフローチャートが以下の図8、及び図9A~図9Cを各々参照して示される。 7A and 7B are flowcharts showing an example of a procedure for using the expandable hash table of FIG. 4 in the deduplication memory according to one embodiment of the present invention. At step 705 of FIG. 7A, memory 115 of FIG. 4 receives the logical address 605 of FIG. 6 from machine 105 of FIG. 1 as part of a data request (machine 105, operating system, or some other). From the application program running on the component). At step 710, the memory 115 of FIG. 4 determines the PLEID 610 of FIG. 6 corresponding to the logical address 605 of FIG. In this case, since different approaches are used to determine the PLLD 610 of FIG. 6, how the PLLD 610 of FIG. 6 is determined depends on whether the data is read or written. A flowchart of how the PLLD 610 of FIG. 6 is discriminated against a read and write request is shown with reference to FIGS. 8 and 9A-9C below, respectively.

図6のPLID610が判別されると、段階715で図4のメモリ115は、データが格納された場所を判別するために図6のPLID610の領域識別子を使用する。データが図4のオーバーフロー領域320に格納されると、段階720で使用者データは(発行された要請のタイプに応じて、図4のオーバーフロー領域320からデータを読み出すか、又は図4のオーバーフロー領域にデータを書き込む)処理が終了された後、図6のPLID610から物理アドレスを使用してアクセスされる。そうでなければ、段階725で、図4のメモリ115はローインデックス及びカラムインデックス(即ち、ハッシュバケット及びウェイ)を図4の大きいハッシュテーブル305又は図4の小さいハッシュテーブル405の中の1つで判別する(ハッシュテーブルが図4のメモリ115に格納されるところを除外すれば、データのアクセスは同一である)。 When the PLLD 610 of FIG. 6 is determined, in step 715 the memory 115 of FIG. 4 uses the area identifier of the PLL ID 610 of FIG. 6 to determine where the data is stored. When the data is stored in the overflow area 320 of FIG. 4, in step 720 the user data (depending on the type of request issued, either read the data from the overflow area 320 of FIG. 4 or read the data from the overflow area 320 of FIG. 4). After the process of writing data to) is completed, the data is accessed from the PLL 610 in FIG. 6 using the physical address. Otherwise, at step 725, memory 115 in FIG. 4 has a low index and column index (ie, hash bucket and way) in one of the large hash table 305 of FIG. 4 or the small hash table 405 of FIG. Determination (data access is the same except where the hash table is stored in memory 115 of FIG. 4).

段階730(図7B)で、図4のメモリ115は要請されたデータが特定のローインデックス及びカラムインデックスで「発見」されたか否かを判別する。例えば、データがハッシュテーブルの中の1つに書き込まれる時、ローインデックス及びカラムインデックスが、既にデータがある位置を識別することが発生する(可能性は低いが、発生可能である)。その場合、使用者データは付近の位置に書き込まれ(例えば、カラムインデックスの幾つかの予め決定されたデルタ内で、同じハッシュバケットの他のウェイ)、したがってデータは読み出される時の代わりにその位置で検索される必要がある。ハッシュテーブルで「近い」と看做されることは、図9A~図9Cを参照して、以下でさらに論議される。書込み要請の場合、「発見」されるデータは、データが書き込まれるハッシュテーブルに利用可能なエントリがあることを意味する。 At step 730 (FIG. 7B), memory 115 of FIG. 4 determines whether the requested data has been "discovered" at a particular low index and column index. For example, when data is written to one of the hash tables, it happens that the raw and column indexes identify where the data is already (less likely, but possible). In that case, the user data is written to a nearby location (eg, within some predetermined delta of the column index, other ways in the same hash bucket), so the data is in that location instead of being read. Need to be searched for. What is considered "close" in the hash table is further discussed below with reference to FIGS. 9A-9C. In the case of a write request, the data "discovered" means that there is an available entry in the hash table to which the data is written.

図6の論理アドレス605が読出し要請の部分である状況で、図4のメモリ115は、特定のローインデックス及びカラムインデックスのデータが要請されたデータではないことを判別する方法がない。このような状況で、段階730は、データにアクセスするために、一般的に常に「はい(Yes)」の結果を返し、段階735へ自動的に進行する。 In the situation where the logical address 605 of FIG. 6 is a read request portion, the memory 115 of FIG. 4 has no way of determining that the data of a specific low index and column index is not the requested data. In such a situation, step 730 generally always returns a "Yes" result to access the data and automatically proceeds to step 735.

データが特定のローインデックス及びカラムインデックスで発見されるか、又は特定のローインデックス及びカラムインデックスが書込み要請に対するデータを格納可能な場合、段階735で図4のメモリ115はデータにアクセスし、その後に処理が完了される。そうでない場合、データが書き込まれる予定であるが、ローインデックス及びカラムインデックスがデータを既に格納している位置を識別する場合、段階740で図4のメモリ115は使用者データを書き込む位置のために近くのエントリを検索する。段階745で、使用者データが書き込まれる近くの位置が無い場合、段階750で図4のメモリ115はエラーを報告する。又は、特にデータがハッシュテーブルの中の1つに書き込まれる予定であるが、幾つかの理由によって書き込むことができない場合、図6のPLID610はハッシュテーブルの代わりに図4のオーバーフロー領域320を指すように変更される(この場合に処理が図7Aの段階720へ進行される)。そうでない場合、データは付近で「発見」され、段階735で使用者データはハッシュテーブルからアクセスされ、処理は完了される。 If the data is found at a particular low index and column index, or if the particular low index and column index can store the data for a write request, then in step 735 the memory 115 of FIG. 4 accesses the data and then. The process is completed. If not, data will be written, but if the low index and column index identify where the data is already stored, then in step 740 memory 115 in FIG. 4 is for the position where the user data is written. Search for nearby entries. At step 745, if there is no location near where user data is written, memory 115 of FIG. 4 reports an error at step 750. Or, in particular, if the data is to be written to one of the hash tables but cannot be written for some reason, the PLEID 610 in FIG. 6 should point to the overflow area 320 in FIG. 4 instead of the hash table. (In this case, the process proceeds to step 720 in FIG. 7A). Otherwise, the data is "discovered" in the vicinity, user data is accessed from the hash table at step 735, and processing is complete.

図8は、本発明の一実施形態によるメモリの読出し要請での論理アドレスに対するPLID(Physical Line Identifier)を判別するための手順の一例を示すフローチャートである。読出し要請の場合、プロセスは単純である。段階805で、論理アドレスは図4の変換テーブル310にアクセスするのに使用される。変換テーブル310は、図4のメモリ115内の適切な領域からデータにアクセスするのに使用される物理アドレス(ハッシュテーブルの中の1つにローインデックス及びカラムインデックスを含む)が決定される図6のPLID610を提供する。 FIG. 8 is a flowchart showing an example of a procedure for determining a PLID (Physical Line Identifier) for a logical address in a memory read request according to an embodiment of the present invention. For read requests, the process is simple. At step 805, the logical address is used to access the translation table 310 of FIG. The translation table 310 determines the physical address used to access the data from the appropriate area in memory 115 of FIG. 4 (one of the hash tables includes a low index and a column index). PLID 610 is provided.

図9A~図9Cは、本発明の一実施形態によるメモリの書込み要請での論理アドレスに対するPLIDを判別するための手順の一例を示すフローチャートである。図9Aの段階905で、図4のメモリ115は書き込まれるデータのシグネチャーを生成する。段階910で、図4のシグネチャーテーブル315はシグネチャーが存在するか否かを確認する。シグネチャーの一致が発見されると、段階915で図4のメモリ115はデータがハッシュテーブル(図4の大きいハッシュテーブル305又は図4の小さいハッシュテーブルの中の1つである)に格納されたデータと一致するか否かを確認する。そうでない場合、段階920で、図4のメモリ115は図4のシグネチャーテーブル315が新しいエントリのための空間を有するか否かを確認する。 9A-9C are flowcharts showing an example of a procedure for determining a PLID for a logical address in a memory write request according to an embodiment of the present invention. At step 905 of FIG. 9A, memory 115 of FIG. 4 generates a signature of the data to be written. At step 910, the signature table 315 of FIG. 4 confirms whether or not a signature exists. When a signature match is found, in step 915 the memory 115 of FIG. 4 is the data whose data is stored in a hash table (one of the large hash table 305 of FIG. 4 or the small hash table of FIG. 4). Check if it matches with. If not, at step 920, memory 115 in FIG. 4 checks to see if signature table 315 in FIG. 4 has space for new entries.

段階915でデータがハッシュテーブルに格納されたデータと一致すると、段階925(図9B)で、図4のメモリ115は、図4の度数カウンター420が増加する場合、図4の度数カウンター420がオーバーフローしているか否かを確認する(図4の度数カウンター420が既に最大値に到達する場合に発生する)。その場合、又はシグネチャーテーブルが図9Aの段階920で、新しいエントリに対する空間を有しない場合、使用者データは図4のオーバーフロー領域320に書き込まれ、段階930でメモリ115は図4のオーバーフロー領域320に対する図6のPLID610を生成する。或は、シグネチャーが図4のシグネチャーテーブル315で発見されると、データはハッシュテーブルのエントリに一致し、図4の度数カウンター420はオーバーフローせず、段階935で図4のメモリ115は図4の度数カウンター420を増加させて、処理は終了する。図4の度数カウンター420がオーバーフローされずに、増加されると、データはそれ以上図4のメモリ115に書き込まれる必要がなく(既にハッシュテーブルに格納されている)、したがって図7Aの処理も終了する。 When the data matches the data stored in the hash table in step 915, in step 925 (FIG. 9B), the memory 115 in FIG. 4 overflows the frequency counter 420 in FIG. 4 if the frequency counter 420 in FIG. 4 increases. Check if it is done (occurs when the frequency counter 420 in FIG. 4 has already reached the maximum value). In that case, or if the signature table is in step 920 of FIG. 9A and has no space for a new entry, user data is written to the overflow area 320 of FIG. 4, and in step 930 the memory 115 is relative to the overflow area 320 of FIG. Generate the PLL 610 of FIG. Alternatively, if the signature is found in the signature table 315 of FIG. 4, the data matches the entry in the hash table, the frequency counter 420 of FIG. 4 does not overflow, and the memory 115 of FIG. 4 at step 935 is of FIG. The frequency counter 420 is increased, and the process ends. When the frequency counter 420 of FIG. 4 is increased without overflowing, the data does not need to be further written to the memory 115 of FIG. 4 (already stored in the hash table), and therefore the processing of FIG. 7A is also completed. do.

シグネチャーが図4のシグネチャーテーブル315で発見されたが、データが段階915で一致しない場合、論理アドレスが通常マッピングするハッシュバケット及びウェイの特定の組み合わせは既に使用中である。この状況は「ハッシュ衝突(collision)」と称される。ハッシュ衝突が発生する時、対応する幾つかの方法がある。段階940に示すように、1つの可能性はハッシュテーブルの新しい利用可能な位置を探し、新しい位置を指すように図6のPLID610をアップデートする。第2の可能性は段階930に制御を進めて、ハッシュテーブルではなく図4のオーバーフロー領域320にデータを書き込み、これにより図6のPLIDを再びアップデートすることである。第3の可能性は、段階945に示すように、図6のPLID610を変更しないで残し、データが他のどこかに実際に格納されていることを把握するために図4のメモリ115に残すことである。例えば、開番地法(open addressing)のように、ハッシュ衝突に対する既存のソリューションがあり、ここで、データは識別された正確な位置に格納されないが、ハッシュ衝突が発生した後、空いている第1位置内のどこかに格納される。開番地法を使用する時、データは、図6のPLID610によって識別された位置の後の任意のアドレスに格納されるか、又はデータは固定された予め決定された数の位置内に格納される(固定された予め決定された数は任意の所望の値に設定される)。本発明の他の実施形態で、データは、図6のPLID610によって特定された位置の前に、再び幾つかの固定された予め決定された数の位置内に格納される。何れのアプローチが使用されても、図4のメモリ115は図6のPLID610を生成し、図6のPLID610によって特定された位置からデータにアクセスするためにこのアプローチを使用する。本発明の実施形態はハッシュ衝突に対する他のソリューションも支援する。 If the signature is found in the signature table 315 of FIG. 4, but the data do not match at stage 915, then the particular combination of hash buckets and ways that the logical address normally maps to is already in use. This situation is referred to as a "hash collision". When hash collisions occur, there are several ways to deal with them. As shown in step 940, one possibility is to look for a new available location in the hash table and update the PLLD 610 in FIG. 6 to point to the new location. The second possibility is to advance control to step 930 and write data to the overflow area 320 of FIG. 4 instead of the hash table, thereby updating the PLID of FIG. 6 again. The third possibility, as shown in step 945, is to leave the PLLD 610 of FIG. 6 unchanged and to the memory 115 of FIG. 4 to know that the data is actually stored somewhere else. That is. There are existing solutions to hash collisions, for example open addressing, where the data is not stored in the exact location identified, but is free after the hash collision occurs. Stored somewhere in the location. When using the open address method, the data is stored at any address after the position identified by PLID610 in FIG. 6, or the data is stored within a fixed, predetermined number of positions. (A fixed, predetermined number is set to any desired value). In another embodiment of the invention, the data is stored again in a number of fixed and predetermined numbers of positions prior to the positions identified by PLLD610 in FIG. Regardless of which approach is used, the memory 115 of FIG. 4 will generate the PLLD 610 of FIG. 6 and use this approach to access the data from the location specified by the PLL 610 of FIG. Embodiments of the invention also support other solutions to hash collisions.

図4のシグネチャーテーブル315でシグネチャーが発見されず、図4のシグネチャーテーブル315が新しいエントリに対する空間を有する場合、以段階950(図9C)で、シグネチャーは図4のシグネチャーテーブル315に追加され、段階955でメモリ115は、利用可能なエントリがどこに発見されるかによって、図4の大きいハッシュテーブル305及び図4の小さいハッシュテーブル405の中の1つに対して図6のPLID610を生成する。 If no signature is found in the signature table 315 of FIG. 4 and the signature table 315 of FIG. 4 has space for a new entry, then at stage 950 (FIG. 9C), the signature is added to the signature table 315 of FIG. At 955, memory 115 produces PLID 610 of FIG. 6 for one of the large hash table 305 of FIG. 4 and the small hash table 405 of FIG. 4, depending on where the available entry is found.

図10は、本発明の一実施形態による小さいハッシュテーブルのサイズを増加させるか否かを判別するための手順の一例を示すフローチャートである。図10の段階1005で、図4の小さいハッシュテーブル405は収容容量に近づいているかを確認する。また、図4のメモリ115は、図4のオーバーフロー領域320が図4の小さいハッシュテーブル405に使用されるために用途変更される利用可能な十分な格納空間を有するかを確認する。図4の小さいハッシュテーブル405はサイズが2倍になるので、図4のオーバーフロー領域320は、少なくとも図4の小さいハッシュテーブルが既に使用しているくらいの空間を有する必要がある。幾つかのデータが図4のオーバーフロー領域320に既に格納されている可能性があり、図4のオーバーフロー領域320に残す必要があるので、できる限り多くの空間を要する。図4の小さいハッシュテーブル405が十分な空間を有するか、又は図4のオーバーフロー領域320が図4の増加する小さいハッシュテーブル405をサポートするための十分な格納空間を有しない場合、処理は終了する。そうでない場合(そして、図4の小さいハッシュテーブル405に対する値n’が図4の大きいハッシュテーブル305に対する値nより少なくとも2小さいと仮定すると)、段階1010で、図4のオーバーフロー領域320のサイズを減少させる代償として、図4の小さいハッシュテーブル405はサイズが増加される。その後、段階1015で、図4の小さいハッシュテーブル405は新しく追加されたメモリを使用するために(値n’を増加させることによって)ウェイの数を2倍に増加させて処理は終了する。 FIG. 10 is a flowchart showing an example of a procedure for determining whether or not to increase the size of a small hash table according to an embodiment of the present invention. At step 1005 in FIG. 10, it is confirmed that the small hash table 405 in FIG. 4 is approaching the capacity. Also, the memory 115 of FIG. 4 confirms whether the overflow area 320 of FIG. 4 has sufficient storage space available for use in the small hash table 405 of FIG. Since the small hash table 405 of FIG. 4 is doubled in size, the overflow area 320 of FIG. 4 needs to have at least enough space for the small hash table of FIG. 4 to already use. It takes as much space as possible because some data may already be stored in the overflow area 320 of FIG. 4 and needs to be left in the overflow area 320 of FIG. If the small hash table 405 of FIG. 4 has sufficient space, or the overflow area 320 of FIG. 4 does not have sufficient storage space to support the increasing small hash table 405 of FIG. 4, the process ends. .. If not (and assuming that the value n'for the small hash table 405 in FIG. 4 is at least 2 less than the value n for the large hash table 305 in FIG. 4), in step 1010 the size of the overflow region 320 in FIG. 4 is increased. In return for the reduction, the small hash table 405 in FIG. 4 is increased in size. Then, at step 1015, the small hash table 405 of FIG. 4 doubles the number of ways (by increasing the value n') to use the newly added memory and the process ends.

図7A~図10で、本発明の幾つかの実施形態が開示されている。しかし、当該技術分野における通常の知識を有する者は、段階の順序を変更するか、段階を省略するか、又は図面に示されていない連結を含めることによって、本発明の他の実施形態も実施可能である。フローチャートのすべてのこのような変形は、明示的に記載されているか否かに拘らず、本発明の実施形態と考えられる。 7A-10 disclose some embodiments of the present invention. However, those with ordinary knowledge in the art may also implement other embodiments of the invention by rearranging the order of the steps, omitting the steps, or including concatenation not shown in the drawings. It is possible. All such modifications of the flow chart are considered embodiments of the invention, whether explicitly stated or not.

以下の説明は、本発明の技術的思想の特定の側面が具現される適切なマシンの簡単且つ一般的な説明を提供する。マシンは、少なくとも部分的に、他のマシンから受信する指示、仮想現実(virtual Reality:VR)との相互作用、生体認証フィードバック、又は他の入力信号のみならず、キーボード、マウス等のような既存の入力装置からの入力によって、制御される。本明細書で使用される、「マシン」という用語は1つのマシン、仮想マシン、通信可能に結合されたマシンのシステム、又は共に動作する装置を幅広く含む。マシンの一例は、例えば、自動車、汽車、タクシー等の個人又は公共交通機関のような輸送機器のみならず、個人用コンピュータ、ワークステーション、サーバー、携帯用コンピュータ、ハンドヘルド(handheld)装置、電話機、タブレット等のようなコンピューティング装置を含む。 The following description provides a brief and general description of a suitable machine that embodies certain aspects of the technical idea of the present invention. Machines, at least in part, are existing such as instructions received from other machines, interaction with virtual reality (VR), biometric feedback, or other input signals, as well as keyboards, mice, etc. It is controlled by the input from the input device of. As used herein, the term "machine" broadly includes one machine, a virtual machine, a system of communicably coupled machines, or devices that work together. Examples of machines include personal computers, workstations, servers, portable computers, handheld devices, telephones, tablets, as well as transportation equipment such as personal or public transportation such as automobiles, trains, taxis, etc. Includes computing devices such as.

マシンは、プログラム可能な又は非プログラマブルな論理装置又はアレイ、特定用途向け集積回路(Application Specific Integrated Circuits、ASIC)、組込みコンピュータ、スマトカード等のような組込みコントローラを含む。マシンは、例えばネットワークインターフェイス、モデム、又は他の通信結合器を通じて、1つ以上の遠隔マシンに対する1つ以上の接続を利用する。マシンは、イントラネット(登録商標)、インターネット、LAN(local area network)、WAN(wide area network)等のような物理的及び/又は論理的ネットワーク手段で相互連結される。当業者はネットワークコミニュケーションが、無線(RF)、衛星、マイクロ波、IEEE802.11規格、ブルートゥース(登録商標)、光学的、赤外線、ケーブル、レーザー等を含む多様な有線及び/又は無線の短距離又は長距離のキャリヤー及びプロトコルを使用できることを理解する。 Machines include programmable or non-programmable logic devices or arrays, embedded controllers such as application specific integrated circuits (ASICs), embedded computers, smart cards, and the like. The machine utilizes one or more connections to one or more remote machines, for example through a network interface, modem, or other communication combiner. The machines are interconnected by physical and / or logical network means such as intranet®, internet, LAN (local area network), WAN (wide area network) and the like. We have a variety of wired and / or wireless short-range or wireless network communication including wireless (RF), satellite, microwave, 802.11 standard, Bluetooth®, optical, infrared, cable, laser, etc. Understand that long range carriers and protocols can be used.

本発明の実施形態は、マシンによってアクセスされる時、マシンが業務を遂行するか、或いは抽象的なデータタイプ又は低いレベルのハードウェアコンテキストを定義する結果を行う、機能、手続、データ構造、アプリケーションプログラム等を含む関連データを参照するか、又は関連データと共に説明される。関連データは、例えば、揮発性及び/又は不揮発性メモリ(例えば、RAM、ROM等)、又は他の記憶装置、及びハードドライブ、フロッピーディスク、光学記憶装置、テープ、フラッシュメモリ、メモリスティック、デジタルビデオディスク、生物学的記憶装置等を含む関連記憶媒体に格納される。関連データは、物理及び/又は論理ネットワークを含む伝送環境を通じてパケット、シリアルデータ、並列データ、伝播信号等の形態で伝達され、圧縮又は暗号化されたフォーマットで使用される。関連データは、分散環境で使用され、マシンアクセスに対してローカル及び/又は遠隔に格納される。 Embodiments of the invention, when accessed by a machine, perform a function, procedure, data structure, application that results in the machine performing business or defining an abstract data type or low level hardware context. Refer to related data including programs, etc., or be explained together with related data. Related data includes, for example, volatile and / or non-volatile memory (eg, RAM, ROM, etc.), or other storage devices, and hard drives, floppy disks, optical storage devices, tapes, flash memories, memory sticks, digital video. It is stored in a related storage medium including a disk, biological storage device, and the like. Related data is transmitted in the form of packets, serial data, parallel data, propagated signals, etc. through transmission environments including physical and / or logical networks and is used in compressed or encrypted formats. Relevant data is used in a distributed environment and is stored locally and / or remotely to machine access.

本発明の実施形態は、1つ以上のプロセッサによって実行可能な命令を含むタイプの、非一時的なマシンで解読することができる媒体を含み、命令は本明細書で説明した発明の概念の構成要素を遂行するための命令を含む。 Embodiments of the invention include a medium that can be decoded by a non-temporary machine of the type including instructions that can be executed by one or more processors, where the instructions constitute the concept of the invention described herein. Contains instructions to carry out the element.

以上、図面を参照しながら本発明の実施形態を説明したが、本発明は、本発明の技術範囲から逸脱しない範囲で変形され、他の望ましい方式に結合される。また、本明細書の説明は特定の実施形態に集中したが、他の構成も考慮され得る。特に、「本発明の実施形態によれば」等の表現が本明細書で使用されるが、このような句は実施形態の可能性を一般的に参照することを意味し、特定の実施構成として本発明を制限するものではない。本明細書で使用した、これらの用語は他の実施形態と結合可能な同一又は異なる実施形態を参照する。 Although the embodiments of the present invention have been described above with reference to the drawings, the present invention is modified without departing from the technical scope of the present invention and combined with other desirable methods. Also, although the description herein has focused on a particular embodiment, other configurations may be considered. In particular, expressions such as "according to embodiments of the present invention" are used herein, such clauses mean to generally refer to the possibilities of embodiments, and particular embodiments. It does not limit the present invention. As used herein, these terms refer to the same or different embodiments that can be combined with other embodiments.

本発明は、上述の実施形態に限定されるものではなく、そのような実施形態に対して多様に変更実施が可能である。したがって、このようなすべての変形は本発明の技術範囲内に含まれる。 The present invention is not limited to the above-described embodiment, and various modifications can be made to such an embodiment. Therefore, all such modifications are within the scope of the present invention.

本発明の実施形態は以下の説明に制限無しで拡張される。 The embodiments of the present invention are extended without limitation to the following description.

説明1.本発明の実施形態によるメモリシステムは、データを格納するメモリと、
前記メモリに格納され、所定数のバケット及び第1の数のウェイを含み、2のの累乗である第1数のバイトを含む前記メモリの第1部分を含む大きいハッシュテーブルと、
前記メモリに格納され、所定数のバケット及び第2の数のウェイを含み、2のの累乗である第2数のバイトを含む前記メモリの第2部分を含む小さいハッシュテーブルと、
前記メモリに格納され、前記メモリの第3部分を含むオーバーフロー領域と、
論理アドレスを領域識別子及び物理アドレスを含むPLID(Physical Line Identifier)にマッピングするための変換テーブルを含むメモリシステムと、を備える。
Explanation 1. The memory system according to the embodiment of the present invention includes a memory for storing data and a memory system.
A large hash table stored in the memory, containing a predetermined number of buckets and a first number of ways, and containing a first portion of the memory containing a first power of two, a first number of bytes.
A small hash table stored in the memory, containing a predetermined number of buckets and a second number of ways, and a second portion of the memory containing a second power of 2 bytes.
An overflow area stored in the memory and including a third portion of the memory,
A memory system including a conversion table for mapping a logical address to a PLID (Physical Line Identity) including an area identifier and a physical address is provided.

説明2.本発明の実施形態は、説明1にしたがうメモリシステムを含み、前記領域識別子は、前記PLIDが前記大きいハッシュテーブルのデータを識別することを示す第1ビットを含む。 Explanation 2. An embodiment of the invention includes a memory system according to Description 1, wherein the area identifier includes a first bit indicating that the PLID identifies data in the large hash table.

説明3.本発明の実施形態は、説明2にしたがうメモリシステムを含み、前記物理アドレスは、ローインデックス及びカラムインデックスを含む。 Explanation 3. An embodiment of the present invention includes a memory system according to Description 2, wherein the physical address includes a low index and a column index.

説明4.本発明の実施形態は、説明2にしたがうメモリシステムを含み、
前記第1ビットは、前記PLIDが前記大きいハッシュテーブルのデータを識別しないことを示し、
前記領域識別子は、前記PLIDが前記小さいハッシュテーブル内にあるか又は前記オーバーフロー領域内にあるかを示す第2ビットを含む。
Explanation 4. Embodiments of the present invention include a memory system according to Description 2.
The first bit indicates that the PLID does not identify the data in the large hash table.
The region identifier includes a second bit indicating whether the PLID is in the small hash table or in the overflow region.

説明5.本発明の実施形態は、説明4にしたがうメモリシステムを含み、
前記第2ビットは、前記PLIDが前記小さいハッシュテーブルのデータを職別することを示し、
前記物理アドレスは、ローインデックス及びカラムインデックスを含む。
Explanation 5. Embodiments of the present invention include a memory system according to Description 4.
The second bit indicates that the PLID classifies the data in the small hash table by job.
The physical address includes a low index and a column index.

説明6.本発明の実施形態は、説明2にしたがうメモリシステムを含み、前記小さいハッシュテーブルは、動的に大きくなる。 Explanation 6. An embodiment of the present invention includes a memory system according to Description 2, wherein the small hash table dynamically grows.

説明7.本発明の実施形態は、説明6にしたがうメモリシステムを含み、前記大きいハッシュテーブルは、動的に大きくなる。 Explanation 7. An embodiment of the present invention includes a memory system according to Description 6, wherein the large hash table dynamically grows.

説明8.本発明の実施形態は、説明1によるメモリシステムを含み、前記メモリシステムに対する第1の効果的な最小の重複除去比率は、前記小さいハッシュテーブル無しで前記大きいハッシュテーブルに対する第2の効果的な最小の重複除去比率よりも低い。 Explanation 8. Embodiments of the invention include the memory system according to Description 1, where the first effective minimum deduplication ratio for the memory system is the second effective minimum for the large hash table without the small hash table. Is lower than the deduplication ratio of.

説明9.本発明の実施形態は、説明1にしたがうメモリシステムを含み、
前記メモリに格納され、前記大きいハッシュテーブル及び前記小さいハッシュテーブルに格納された複数のデータのシグネチャーを格納するシグネチャーテーブルをさらに含み、
前記シグネチャーテーブルは、共通シグネチャーがある多数のデータを前記大きいハッシュテーブル又は前記小さいハッシュテーブルのローに格納することを防止する。
Explanation 9. Embodiments of the present invention include a memory system according to Description 1.
Further including a signature table stored in the memory and storing a signature of the large hash table and a plurality of data stored in the small hash table.
The signature table prevents a large amount of data having a common signature from being stored in the row of the large hash table or the small hash table.

説明10.本発明の実施形態による方法は、
プロセッサから論理アドレスを受信する段階と、
変換テーブルを使用して、前記論理アドレスを領域識別子及び物理アドレスを含むPLID(Physical Line Identifier)にマッピングする段階と、
前記領域識別子を利用して、メモリ内の大きいハッシュテーブル、小さいハッシュテーブル、又はオーバーフロー領域に前記物理アドレスがあるか否かを判別する段階と、
前記物理アドレスを利用して前記メモリ内のデータにアクセスする段階と、を有する。
Explanation 10. The method according to the embodiment of the present invention
The stage of receiving a logical address from the processor and
A step of mapping the logical address to a PLID (Physical Line Identity) including a region identifier and a physical address using a translation table, and a step of mapping.
The step of determining whether or not the physical address exists in the large hash table, the small hash table, or the overflow area in the memory by using the area identifier, and
It has a stage of accessing data in the memory by using the physical address.

説明11.本発明の実施形態は、説明10にしたがう方法を含み、前記領域識別子を利用して、メモリ内の大きいハッシュテーブル、小さいハッシュテーブル、又はオーバーフロー領域に前記物理アドレスがあるか否かを判別する段階は、前記領域識別子の第1ビットが設定されない場合、前記物理アドレスが前記大きいハッシュテーブルにあると判別する段階を含む。 Explanation 11. An embodiment of the present invention includes a method according to the description 10, and uses the area identifier to determine whether or not the physical address is present in a large hash table, a small hash table, or an overflow area in a memory. Includes a step of determining that the physical address is in the large hash table if the first bit of the region identifier is not set.

説明12.本発明の実施形態は、説明10にしたがう方法を含み、前記領域識別子を利用して、メモリ内の大きいハッシュテーブル、小さいハッシュテーブル、又はオーバーフロー領域に前記物理アドレスがあるか否かを判別する段階は、前記領域識別子の第1ビットが設定されて前記領域識別子の第2ビットが設定されない場合、前記物理アドレスが前記小さいハッシュテーブルにあると判別する段階を含む。 Explanation 12. An embodiment of the present invention includes a method according to the description 10, and uses the area identifier to determine whether or not the physical address is present in a large hash table, a small hash table, or an overflow area in a memory. Includes the step of determining that the physical address is in the small hash table when the first bit of the area identifier is set and the second bit of the area identifier is not set.

説明13.本発明の実施形態は、説明10にしたがう方法を含み、前記領域識別子を利用して、メモリ内の大きいハッシュテーブル、小さいハッシュテーブル、又はオーバーフロー領域に前記物理アドレスがあるか否かを判別する段階は、前記領域識別子の第1ビットが設定されて前記領域識別子の第2ビットが設定された場合、前記物理アドレスが前記オーバーフロー領域にあると判別する段階を含む。 Explanation 13. An embodiment of the present invention includes a method according to the description 10, and uses the area identifier to determine whether or not the physical address is present in a large hash table, a small hash table, or an overflow area in a memory. Includes a step of determining that the physical address is in the overflow region when the first bit of the region identifier is set and the second bit of the region identifier is set.

説明14.本発明の実施形態は、説明10にしたがう方法を含み、前記物理アドレスを利用して前記メモリ内のデータにアクセスする段階は、
前記物理アドレスからローインデックス及びカラムインデックスを判別する段階と、
前記ローインデックス及び前記カラムインデックスを利用して前記大きいハッシュテーブル及び前記小さいハッシュテーブルの中の1つのデータにアクセスする段階と、を含む。
Explanation 14. The embodiment of the present invention includes the method according to the description 10, and the step of accessing the data in the memory by using the physical address is
The stage of determining the low index and column index from the physical address, and
The low index and the column index are used to access one of the data in the large hash table and the small hash table.

説明15.本発明の実施形態は、説明14にしたがう方法を含み、前記ローインデックス及び前記カラムインデックスを利用して前記大きいハッシュテーブル及び前記小さいハッシュテーブルの中の1つのデータにアクセスする段階は、前記小さいハッシュテーブルの前記ローインデックス及び前記カラムインデックスで前記データが発見されない場合、前記小さいハッシュテーブルの近くのエントリを検索する段階を含む。 Explanation 15. Embodiments of the present invention include the method according to Description 14, and the step of accessing one data in the large hash table and the small hash table using the low index and the column index is the small hash. If the data is not found in the low index and the column index of the table, it comprises searching for entries near the small hash table.

説明16.本発明の実施形態は、説明10にしたがう方法を含み、前記物理アドレスを利用して前記メモリ内のデータにアクセスする段階は、前記物理アドレスを利用して前記オーバーフロー領域のデータにアクセスする段階を含む。 Explanation 16. The embodiment of the present invention includes the method according to the description 10, and the step of accessing the data in the memory by using the physical address is the step of accessing the data in the overflow area by using the physical address. include.

説明17.本発明の実施形態は、説明10にしたがう方法を含み、
前記小さいハッシュテーブルが収容容量に近づいていることを判別する段階と、
前記オーバーフロー領域のサイズを減少させる一方、前記小さいハッシュテーブルのサイズを増加させる段階と、をさらに含む。
Explanation 17. Embodiments of the present invention include a method according to Description 10.
At the stage of determining that the small hash table is approaching the capacity,
It further comprises a step of reducing the size of the overflow area while increasing the size of the small hash table.

説明18.本発明の実施形態は、説明17にしたがう方法を含み、
前記小さいハッシュテーブルのサイズを増加させる段階は、
前記小さいハッシュテーブルのサイズを2倍に増加させる段階と、
前記オーバーフロー領域のサイズを減少させる段階と、を含む。
Explanation 18. Embodiments of the present invention include a method according to Description 17.
The step of increasing the size of the small hash table is
At the stage of doubling the size of the small hash table,
Includes a step of reducing the size of the overflow region.

説明19.本発明の実施形態は、説明17にしたがう方法を含み、前記小さいハッシュテーブルのサイズを増加させる段階は、前記小さいハッシュテーブルのカラムに相当するウェイの数を増加させる段階を含む。 Explanation 19. An embodiment of the present invention comprises the method according to Description 17, wherein the step of increasing the size of the small hash table comprises increasing the number of ways corresponding to the columns of the small hash table.

説明20.本発明の実施形態は、説明10にしたがう方法を含み、
前記物理アドレスを利用して前記メモリ内のデータにアクセスする段階は、前記メモリに前記データを書き込む段階を含み、
変換テーブルを使用して、前記論理アドレスを領域識別子及び物理アドレスを含むPLIDにマッピングする段階は、前記変換テーブルを使用して前記データを書込みために、前記大きいハッシュテーブル、前記小さいハッシュテーブル、及び前記オーバーフロー領域の中の1つを選択する段階を含む。
Explanation 20. Embodiments of the present invention include a method according to Description 10.
The step of accessing the data in the memory using the physical address includes the step of writing the data to the memory.
The step of using a translation table to map the logical address to a PLID containing a region identifier and a physical address is to use the translation table to write the data to the large hash table, the small hash table, and the small hash table. It comprises the step of selecting one of the overflow areas.

説明21.本発明の実施形態は、説明20にしたがう方法を含み、前記領域識別子を利用して、メモリ内の大きいハッシュテーブル、小さいハッシュテーブル、又はオーバーフロー領域に前記物理アドレスがあるか否かを判別する段階は、
シグネチャーを生産するために前記データにハッシュ関数を適用する段階と、
前記シグネチャーに対するシグネチャーテーブルを確認する段階と、
前記シグネチャーが前記シグネチャーテーブルにある場合、前記データを前記オーバーフロー領域に書き込む段階と、を含む。
Explanation 21. An embodiment of the present invention includes the method according to the description 20, and uses the area identifier to determine whether or not the physical address is in a large hash table, a small hash table, or an overflow area in the memory. teeth,
At the stage of applying a hash function to the data to produce a signature,
At the stage of checking the signature table for the signature,
If the signature is in the signature table, it includes writing the data to the overflow area.

説明22.本発明の実施形態は、説明21にしたがう方法を含み、前記シグネチャーに対するシグネチャーテーブルを確認する段階は、前記物理アドレスのローでの前記シグネチャーに対するシグネチャーテーブルを確認する段階を含む。 Explanation 22. An embodiment of the invention comprises the method according to Description 21, wherein the step of checking the signature table for the signature comprises checking the signature table for the signature at the row of the physical address.

説明23.本発明の実施形態によるコンピュータ読み取り可能な記録媒体は、コンピュータに下記方法を実行させるためのプログラムを記録し、、
前記方法は、
プロセッサから論理アドレスを受信する段階と、
変換テーブルを使用して、前記論理アドレスを領域識別子及び物理アドレスを含むPLID(Physical Line Identifier)にマッピングする段階と、
前記領域識別子を利用して、メモリ内の大きいハッシュテーブル、小さいハッシュテーブル、又はオーバーフロー領域に前記物理アドレスがあるか否かを判別する段階と、
前記物理アドレスを使用して前記メモリ内のデータにアクセスする段階と、を有する。
Explanation 23. The computer-readable recording medium according to the embodiment of the present invention records a program for causing the computer to execute the following method, and ...
The method is
The stage of receiving a logical address from the processor and
A step of mapping the logical address to a PLID (Physical Line Identity) including a region identifier and a physical address using a translation table, and a step of mapping.
The step of determining whether or not the physical address exists in the large hash table, the small hash table, or the overflow area in the memory by using the area identifier, and
It has a step of accessing data in the memory using the physical address.

説明24.本発明の実施形態は、説明23にしたがう記録媒体を含み、前記領域識別子を利用して、メモリ内の大きいハッシュテーブル、小さいハッシュテーブル、又はオーバーフロー領域に前記物理アドレスがあるか否かを判別する段階は、前記領域識別子の第1ビットが設定されない場合、前記物理アドレスが前記大きいハッシュテーブルにあると判別する段階を含む。 Explanation 24. An embodiment of the present invention includes a recording medium according to the description 23, and uses the area identifier to determine whether or not the physical address is in a large hash table, a small hash table, or an overflow area in a memory. The step includes determining that the physical address is in the large hash table if the first bit of the region identifier is not set.

説明25.本発明の実施形態は、説明23にしたがう記録媒体を含み、前記領域識別子を利用して、メモリ内の大きいハッシュテーブル、小さいハッシュテーブル、又はオーバーフロー領域に前記物理アドレスがあるか否かを判別する段階は、前記領域識別子の第1ビットが設定されて前記領域識別子の第2ビットが設定されない場合、前記物理アドレスが前記小さいハッシュテーブルにあると判別する段階を含む。 Explanation 25. An embodiment of the present invention includes a recording medium according to the description 23, and uses the area identifier to determine whether or not the physical address is in a large hash table, a small hash table, or an overflow area in a memory. The step includes the step of determining that the physical address is in the small hash table when the first bit of the area identifier is set and the second bit of the area identifier is not set.

説明26.本発明の実施形態は、説明23にしたがう記録媒体を含み、前記領域識別子を利用して、メモリ内の大きいハッシュテーブル、小さいハッシュテーブル、又はオーバーフロー領域に前記物理アドレスがあるか否かを判別する段階は、前記領域識別子の第1ビットが設定されて前記領域識別子の第2ビットが設定された場合、前記物理アドレスが前記オーバーフロー領域にあると判別する段階を含む。 Explanation 26. An embodiment of the present invention includes a recording medium according to the description 23, and uses the area identifier to determine whether or not the physical address is in a large hash table, a small hash table, or an overflow area in a memory. The step includes a step of determining that the physical address is in the overflow region when the first bit of the region identifier is set and the second bit of the region identifier is set.

説明27.本発明の実施形態は、説明23にしたがう記録媒体を含み、前記物理アドレスを利用して前記メモリ内のデータにアクセスする段階は、
前記物理アドレスからローインデックス及びカラムインデックスを判別する段階と、
前記ローインデックス及び前記カラムインデックスを利用して前記大きいハッシュテーブル及び前記小さいハッシュテーブルの中の1つのデータにアクセスする段階と、を含む。
Explanation 27. The embodiment of the present invention includes a recording medium according to the description 23, and the step of accessing the data in the memory by using the physical address is
The stage of determining the low index and column index from the physical address, and
The low index and the column index are used to access one of the data in the large hash table and the small hash table.

説明28.本発明の実施形態は、説明27にしたがう記録媒体を含み、前記ローインデックス及び前記カラムインデックスを利用して前記大きいハッシュテーブル及び前記小さいハッシュテーブルの中の1つのデータにアクセスする段階は、前記小さいハッシュテーブルの前記ローインデックス及び前記カラムインデックスで前記データが発見されない場合、前記小さいハッシュテーブルの付近のエントリを検索する段階を含む。 Explanation 28. The embodiment of the present invention includes a recording medium according to the description 27, and the step of accessing one data in the large hash table and the small hash table by using the low index and the column index is small. If the data is not found in the low index and the column index of the hash table, it includes a step of searching for entries in the vicinity of the small hash table.

説明29.本発明の実施形態は、説明23にしたがう記録媒体を含み、前記物理アドレスを利用して前記メモリ内のデータにアクセスする段階は、前記物理アドレスを利用して前記オーバーフロー領域のデータにアクセスする段階を含む。 Explanation 29. The embodiment of the present invention includes a recording medium according to the description 23, and the step of accessing the data in the memory by using the physical address is the step of accessing the data in the overflow area by using the physical address. including.

説明30.本発明の実施形態は、説明23にしたがう記録媒体を含み、前記方法は、
前記小さいハッシュテーブルが収容容量に近づいていることを判別する段階と、
前記オーバーフロー領域のサイズを減少させる一方、前記小さいハッシュテーブルのサイズを増加させる段階と、をさらに含む。
Explanation 30. An embodiment of the present invention comprises a recording medium according to Description 23, wherein the method is:
At the stage of determining that the small hash table is approaching the capacity,
It further comprises a step of reducing the size of the overflow area while increasing the size of the small hash table.

説明31.本発明の実施形態は、説明30にしたがう記録媒体を含み、
前記小さいハッシュテーブルのサイズを増加させる段階は、
前記小さいハッシュテーブルのサイズを2倍に増加させる段階と、
前記オーバーフロー領域のサイズを減少させる段階と、を含む。
Explanation 31. An embodiment of the present invention includes a recording medium according to the description 30.
The step of increasing the size of the small hash table is
At the stage of doubling the size of the small hash table,
Includes a step of reducing the size of the overflow region.

説明32.本発明の実施形態は、説明30にしたがう記録媒体を含み、前記小さいハッシュテーブルのサイズを増加させる段階は、前記小さいハッシュテーブルのカラムに相当するウェイの数を増加させる段階を含む。 Explanation 32. An embodiment of the present invention includes a recording medium according to Description 30, and the step of increasing the size of the small hash table comprises increasing the number of ways corresponding to the columns of the small hash table.

説明33.本発明の実施形態は、説明23にしたがう記録媒体を含み、
前記物理アドレスを利用して前記メモリ内のデータにアクセスする段階は、前記メモリに前記データを書き込む段階を含み、
変換テーブルを使用して、前記論理アドレスを領域識別子及び物理アドレスを含むPLIDにマッピングする段階は、前記変換テーブルを使用して前記データを書込みために、前記大きいハッシュテーブル、前記小さいハッシュテーブル、及び前記オーバーフロー領域の中の1つを選択する段階を含む。
Explanation 33. An embodiment of the present invention includes a recording medium according to the description 23, and comprises a recording medium.
The step of accessing the data in the memory using the physical address includes the step of writing the data to the memory.
The step of using a translation table to map the logical address to a PLID containing a region identifier and a physical address is to use the translation table to write the data to the large hash table, the small hash table, and the small hash table. It comprises the step of selecting one of the overflow areas.

説明34.本発明の実施形態は、説明33にしたがう記録媒体を含み、前記領域識別子を利用して、メモリ内の大きいハッシュテーブル、小さいハッシュテーブル、又はオーバーフロー領域に前記物理アドレスがあるか否かを判別する段階は、
シグネチャーを生産するために前記データにハッシュ関数を適用する段階と、
前記シグネチャーに対するシグネチャーテーブルを確認する段階と、
前記シグネチャーが前記シグネチャーテーブルにある場合、前記データを前記オーバーフロー領域に書き込む段階と、を含む。
Explanation 34. An embodiment of the present invention includes a recording medium according to the description 33, and uses the area identifier to determine whether or not the physical address is in a large hash table, a small hash table, or an overflow area in a memory. The stage is
At the stage of applying a hash function to the data to produce a signature,
At the stage of checking the signature table for the signature,
If the signature is in the signature table, it includes writing the data to the overflow area.

説明35.本発明の実施形態は、説明34にしたがう記録媒体を含み、前記シグネチャーに対するシグネチャーテーブルを確認する段階は、前記物理アドレスのローでの前記シグネチャーに対するシグネチャーテーブルを確認する段階を含む。 Explanation 35. An embodiment of the present invention includes a recording medium according to the description 34, and a step of checking the signature table for the signature includes a step of checking the signature table for the signature at the row of the physical address.

105 マシン
110 プロセッサ
115 メモリ
120 格納装置
125 メモリコントローラ
130 装置ドライバー
205 クロック
210 ネットワークコネクター
215 バス
220 使用者インターフェイス
225 入/出力エンジン
305 (大きい)ハッシュテーブル
310 変換テーブル
315 シグネチャーテーブル
320 オーバーフロー領域
405、505 小さいハッシュテーブル
410、625、630、635 エントリ
415 データ
420 度数カウンター
605 論理アドレス
610 PLID(Physical Line Identifier)
615 領域識別子
620 物理アドレス
105 Machine 110 Processor 115 Memory 120 Storage Device 125 Memory Controller 130 Device Driver 205 Clock 210 Network Connector 215 Bus 220 User Interface 225 Input / Output Engine 305 (Large) Hash Table 310 Conversion Table 315 Signature Table 320 Overflow Area 405, 505 Small Hash table 410, 625, 630, 635 Entry 415 Data 420 Frequency counter 605 Logical address 610 PLID (Physical Line Processor)
615 Area identifier 620 Physical address

Claims (16)

データを格納するメモリと、
前記メモリに格納され、所定数のバケット及び第1の数のウェイを含み、2のの累乗である第1数のバイトを含む前記メモリの第1部分を含む大きいハッシュテーブルと、
前記メモリに格納され、所定数のバケット及び第2の数のウェイを含み、2のの累乗である第2数のバイトを含む前記メモリの第2部分を含む小さいハッシュテーブルと、
前記メモリに格納され、前記メモリの第3部分を含むオーバーフロー領域と、
論理アドレスを領域識別子及び物理アドレスを含むPLID(Physical Line Identifier)にマッピングする変換テーブルと、を備えることを特徴とするメモリシステム。
Memory to store data and
A large hash table stored in the memory, containing a predetermined number of buckets and a first number of ways, and containing a first portion of the memory containing a first power of two, a first number of bytes.
A small hash table stored in the memory, containing a predetermined number of buckets and a second number of ways, and a second portion of the memory containing a second power of 2 bytes.
An overflow area stored in the memory and including a third portion of the memory,
A memory system comprising: a conversion table for mapping a logical address to a PLID (Physical Line Identity) including an area identifier and a physical address.
前記領域識別子は、前記PLIDが前記大きいハッシュテーブルのデータを識別することを示す第1ビットを含むことを特徴とする請求項1に記載のメモリシステム。 The memory system according to claim 1, wherein the area identifier includes a first bit indicating that the PLID identifies data in the large hash table. 前記物理アドレスは、ローインデックス及びカラムインデックスを含むことを特徴とする請求項2に記載のメモリシステム。 The memory system according to claim 2, wherein the physical address includes a low index and a column index. 前記第1ビットは、前記PLIDが前記大きいハッシュテーブルのデータを識別しないことを示し、
前記領域識別子は、前記PLIDが前記小さいハッシュテーブル内にあるか又は前記オーバーフロー領域内にあるかを示す第2ビットを含むことを特徴とする請求項2に記載のメモリシステム。
The first bit indicates that the PLID does not identify the data in the large hash table.
The memory system according to claim 2, wherein the area identifier includes a second bit indicating whether the PLID is in the small hash table or in the overflow area.
前記小さいハッシュテーブルは、動的に大きくなることを特徴とする請求項1に記載のメモリシステム。 The memory system according to claim 1, wherein the small hash table dynamically grows. 前記メモリシステムに対する第1の効果的な最小の重複除去比率は、前記小さいハッシュテーブル無しで前記大きいハッシュテーブルに対する第2の効果的な最小の重複除去比率よりも小さいことを特徴とする請求項1に記載のメモリシステム。 Claim 1 characterized in that the first effective minimum deduplication ratio for the memory system is less than the second effective minimum deduplication ratio for the large hash table without the small hash table. The memory system described in. 前記メモリに格納され、前記大きいハッシュテーブル及び前記小さいハッシュテーブルに格納された複数のデータのシグネチャーを格納するシグネチャーテーブルをさらに含み、
前記シグネチャーテーブルは、共通シグネチャーがある多数のデータを前記大きいハッシュテーブル又は前記小さいハッシュテーブルのローに格納することを防止することを特徴とする請求項1に記載のメモリシステム。
Further including a signature table stored in the memory and storing a signature of the large hash table and a plurality of data stored in the small hash table.
The memory system according to claim 1, wherein the signature table prevents a large amount of data having a common signature from being stored in the row of the large hash table or the small hash table.
プロセッサから論理アドレスを受信する段階と、
変換テーブルを使用して、前記論理アドレスを領域識別子及び物理アドレスを含むPLID(Physical Line Identifier)にマッピングする段階と、
前記領域識別子を利用して、メモリ内の大きいハッシュテーブル、小さいハッシュテーブル、又はオーバーフロー領域に前記物理アドレスがあるか否かを判別する段階と、
前記物理アドレスを利用して前記メモリ内のデータにアクセスする段階と、を有することを特徴とする方法。
The stage of receiving a logical address from the processor and
A step of mapping the logical address to a PLID (Physical Line Identity) including a region identifier and a physical address using a translation table, and a step of mapping.
The step of determining whether or not the physical address exists in the large hash table, the small hash table, or the overflow area in the memory by using the area identifier, and
A method characterized by having a step of accessing data in the memory using the physical address.
前記領域識別子を利用して、メモリ内の大きいハッシュテーブル、小さいハッシュテーブル、又はオーバーフロー領域に前記物理アドレスがあるか否かを判別する段階は、前記領域識別子の第1ビットが設定されない場合、前記物理アドレスが前記大きいハッシュテーブルにあると判別する段階を含むことを特徴とする請求項8に記載の方法。 When the first bit of the area identifier is not set, the step of determining whether or not the physical address exists in the large hash table, the small hash table, or the overflow area in the memory by using the area identifier is described. The method of claim 8, wherein the method comprises the step of determining that the physical address is in the large hash table. 前記領域識別子を利用して、メモリ内の大きいハッシュテーブル、小さいハッシュテーブル、又はオーバーフロー領域に前記物理アドレスがあるか否かを判別する段階は、前記領域識別子の第1ビットが設定されて前記領域識別子の第2ビットが設定されない場合、前記物理アドレスが前記小さいハッシュテーブルにあると判別する段階を含むことを特徴とする請求項8に記載の方法。 In the step of determining whether or not the physical address exists in the large hash table, the small hash table, or the overflow area in the memory by using the area identifier, the first bit of the area identifier is set and the area is set. The method according to claim 8, wherein when the second bit of the identifier is not set, the step of determining that the physical address is in the small hash table is included. 前記領域識別子を利用して、メモリ内の大きいハッシュテーブル、小さいハッシュテーブル、又はオーバーフロー領域に前記物理アドレスがあるか否かを判別する段階は、前記領域識別子の第1ビットが設定されて前記領域識別子の第2ビットが設定された場合、前記物理アドレスが前記オーバーフロー領域にあると判別する段階を含むことを特徴とする請求項8に記載の方法。 In the step of determining whether or not the physical address exists in the large hash table, the small hash table, or the overflow area in the memory by using the area identifier, the first bit of the area identifier is set and the area is set. The method according to claim 8, wherein when the second bit of the identifier is set, the step of determining that the physical address is in the overflow area is included. 前記物理アドレスを利用して前記メモリ内のデータにアクセスする段階は、
前記物理アドレスからローインデックス及びカラムインデックスを判別する段階と、
前記ローインデックス及び前記カラムインデックスを利用して前記大きいハッシュテーブル及び前記小さいハッシュテーブルの中の1つのデータにアクセスする段階と、を含むことを特徴とする請求項8に記載の方法。
The stage of accessing the data in the memory using the physical address is
The stage of determining the low index and column index from the physical address, and
The method according to claim 8, wherein the method comprising the step of accessing one data in the large hash table and the small hash table by using the low index and the column index.
前記ローインデックス及び前記カラムインデックスを利用して前記大きいハッシュテーブル及び前記小さいハッシュテーブルの中の1つのデータにアクセスする段階は、前記小さいハッシュテーブルの前記ローインデックス及び前記カラムインデックスで前記データが発見されない場合、前記小さいハッシュテーブルの近くのエントリを検索する段階を含むことを特徴とする請求項12に記載の方法。 At the stage of accessing one data in the large hash table and the small hash table by using the low index and the column index, the data is not found in the low index and the column index of the small hash table. The method of claim 12, wherein the method comprises searching for entries near the small hash table. 前記小さいハッシュテーブルが収容容量に近づいていることを判別する段階と、
オーバーフロー領域のサイズを減少させる一方、前記小さいハッシュテーブルのサイズを増加させる段階と、をさらに含むことを特徴とする請求項8に記載の方法。
At the stage of determining that the small hash table is approaching the capacity,
8. The method of claim 8, further comprising a step of reducing the size of the overflow area while increasing the size of the small hash table.
前記小さいハッシュテーブルのサイズを増加させる段階は、前記小さいハッシュテーブルのカラムに相当するウェイの数を増加させる段階を含むことを特徴とする請求項14に記載の方法。 14. The method of claim 14, wherein the step of increasing the size of the small hash table comprises increasing the number of ways corresponding to the columns of the small hash table. コンピュータに請求項8乃至12のいずれか一項に記載の方法を実行させるためのプログラムを記録したコンピュータ読み取り可能な記録媒体。
A computer-readable recording medium on which a program for causing a computer to execute the method according to any one of claims 8 to 12 is recorded.
JP2018010614A 2017-01-25 2018-01-25 Systems and methods for maximized deduplication memory Active JP7058132B2 (en)

Applications Claiming Priority (14)

Application Number Priority Date Filing Date Title
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 US10678704B2 (en) 2016-03-29 2017-03-31 Method and apparatus for enabling larger memory capacity than physical memory size
US15/476,757 2017-03-31
US15/498,371 2017-04-26
US15/498,371 US10528284B2 (en) 2016-03-29 2017-04-26 Method and apparatus for enabling larger memory capacity than physical memory size
US201762554904P 2017-09-06 2017-09-06
US62/554,904 2017-09-06
US15/823,549 2017-11-27
US15/823,549 US10437785B2 (en) 2016-03-29 2017-11-27 Method and apparatus for maximized dedupable memory

Publications (2)

Publication Number Publication Date
JP2018120594A JP2018120594A (en) 2018-08-02
JP7058132B2 true JP7058132B2 (en) 2022-04-21

Family

ID=62961185

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018010614A Active JP7058132B2 (en) 2017-01-25 2018-01-25 Systems and methods for maximized deduplication memory

Country Status (4)

Country Link
JP (1) JP7058132B2 (en)
KR (1) KR102509913B1 (en)
CN (1) CN108345433B (en)
TW (1) TWI761419B (en)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10628072B2 (en) * 2018-08-21 2020-04-21 Samsung Electronics Co., Ltd. Scalable architecture enabling large memory system for in-memory computations
CN109189349A (en) * 2018-10-16 2019-01-11 深圳忆联信息系统有限公司 A kind of method and its system promoting solid state hard disk copy function
CN112257368B (en) * 2019-07-02 2023-08-01 上海复旦微电子集团股份有限公司 Clock layout method, device, EDA tool and computer readable storage medium
CN112286966A (en) * 2020-09-23 2021-01-29 清华大学 Data stream processing method, data stream recovery method, data stream processing device, data stream recovery device and storage medium
CN113595816A (en) * 2021-07-16 2021-11-02 清华大学 Data stream measuring and calculating method, equipment and storage medium
CN116991855B (en) * 2023-09-27 2024-01-12 深圳大普微电子股份有限公司 Hash table processing method, device, equipment, medium, controller and solid state disk

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009087021A (en) 2007-09-28 2009-04-23 Hitachi Ltd Storage device and data deduplication method
JP2014513345A (en) 2011-04-08 2014-05-29 マイクロン テクノロジー, インク. Data deduplication

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4060847B2 (en) * 2004-12-22 2008-03-12 株式会社東芝 Memory management device, computer system, and memory management method
US7454592B1 (en) * 2006-02-16 2008-11-18 Symantec Operating Corporation Block-level and hash-based single-instance storage
US8312217B2 (en) * 2008-12-30 2012-11-13 Rasilient Systems, Inc. Methods and systems for storing data blocks of multi-streams and multi-user applications
US20110161553A1 (en) * 2009-12-30 2011-06-30 Nvidia Corporation Memory device wear-leveling techniques
CN102103518B (en) * 2011-02-23 2013-11-13 运软网络科技(上海)有限公司 System for managing resources in virtual environment and implementation method thereof
US9501421B1 (en) 2011-07-05 2016-11-22 Intel Corporation Memory sharing and page deduplication using indirect lines
KR20130064518A (en) * 2011-12-08 2013-06-18 삼성전자주식회사 Storage device and operation method thereof
US9009165B2 (en) * 2013-01-10 2015-04-14 Telefonaktiebolaget L M Ericsson (Publ) High performance hash-based lookup for packet processing in a communication network
CN104035838B (en) 2013-03-08 2018-08-14 英特尔公司 The storage log recording of hardware supported
KR20140114515A (en) * 2013-03-15 2014-09-29 삼성전자주식회사 Nonvolatile memory device and deduplication method thereof
WO2015066719A2 (en) 2013-11-04 2015-05-07 Falconstor, Inc. Use of solid state storage devices and the like in data deduplication
US9792063B2 (en) * 2014-01-15 2017-10-17 Intel Corporation Deduplication-based data security
US9256549B2 (en) * 2014-01-17 2016-02-09 Netapp, Inc. Set-associative hash table organization for efficient storage and retrieval of data in a storage system

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009087021A (en) 2007-09-28 2009-04-23 Hitachi Ltd Storage device and data deduplication method
JP2014513345A (en) 2011-04-08 2014-05-29 マイクロン テクノロジー, インク. Data deduplication

Also Published As

Publication number Publication date
TWI761419B (en) 2022-04-21
TW201830249A (en) 2018-08-16
JP2018120594A (en) 2018-08-02
CN108345433B (en) 2023-05-02
KR20180087838A (en) 2018-08-02
CN108345433A (en) 2018-07-31
KR102509913B1 (en) 2023-03-14

Similar Documents

Publication Publication Date Title
JP7058132B2 (en) Systems and methods for maximized deduplication memory
US9846642B2 (en) Efficient key collision handling
US11874815B2 (en) Key-value storage device and method of operating the same
US7761648B2 (en) Caching method for NAND flash translation layer
US9971799B2 (en) Storage device for storing directory entries, directory entry lookup apparatus and method, and storage medium storing directory entry lookup program
KR20170133247A (en) Address based multi-stream storage device access
US20160378680A1 (en) File access method and related device
US20150317083A1 (en) Synergetic deduplication
KR102535828B1 (en) Memory controller and method of operating the memory controller
US9430492B1 (en) Efficient scavenging of data and metadata file system blocks
EP3276494B1 (en) Memory space management
US20200225882A1 (en) System and method for compaction-less key-value store for improving storage capacity, write amplification, and i/o performance
US11269811B2 (en) Method and apparatus for maximized dedupable memory
KR20210027625A (en) Method for managing of memory address mapping table for data storage device
US11449270B2 (en) Address translation method and system for KV storage device
CN108628760B (en) Method and device for atomic write command
CN108628761B (en) Atomic command execution method and device
US20150121033A1 (en) Information processing apparatus and data transfer control method
US7185020B2 (en) Generating one or more block addresses based on an identifier of a hierarchical data structure
US10482012B1 (en) Storage system and method of operating thereof
US7346620B2 (en) Adjusting log size in a static logical volume
CN106796588A (en) The update method and equipment of concordance list
US11481143B2 (en) Metadata management for extent-based storage system
WO2021223669A1 (en) Metadata storage method and device
CN114968357A (en) Method and device for generating operation command for multiple storage device versions

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20201130

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20211206

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20211214

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220301

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20220411

R150 Certificate of patent or registration of utility model

Ref document number: 7058132

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150