JP2018120594A - 最大化された重複除去メモリのためのシステム及び方法 - Google Patents

最大化された重複除去メモリのためのシステム及び方法 Download PDF

Info

Publication number
JP2018120594A
JP2018120594A JP2018010614A JP2018010614A JP2018120594A JP 2018120594 A JP2018120594 A JP 2018120594A JP 2018010614 A JP2018010614 A JP 2018010614A JP 2018010614 A JP2018010614 A JP 2018010614A JP 2018120594 A JP2018120594 A JP 2018120594A
Authority
JP
Japan
Prior art keywords
hash table
memory
data
physical address
small
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2018010614A
Other languages
English (en)
Other versions
JP7058132B2 (ja
Inventor
冬 岩 姜
Dongyan Jiang
冬 岩 姜
強 彭
Tsuyoshi Ho
強 彭
宏 忠 鄭
Hongzhong Zheng
宏 忠 鄭
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Samsung Electronics Co Ltd
Original Assignee
Samsung Electronics Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US15/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/ja
Application granted granted Critical
Publication of JP7058132B2 publication Critical patent/JP7058132B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/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
    • 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/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • G06F3/0641De-duplication techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/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)

Abstract

【課題】重複除去の対象となるメモリの部分を増加させるためのシステム及び方法を提供する。【解決手段】本発明のメモリシステムは、データを格納するメモリと、メモリに格納され、所定数のバケット及び第1の数のウェイを含み、2の1乗である第1数のバイトを含むメモリの第1部分を含む大きいハッシュテーブルと、メモリに格納され、所定数のバケット及び第2の数のウェイを含み、2の2乗である第2数のバイトを含むメモリの第2部分を含む小さいハッシュテーブルと、メモリに格納され、メモリの第3部分を含むオーバーフロー領域と、論理アドレスを領域識別子及び物理アドレスを含むPLID(Physical Line Identifier)にマッピングする変換テーブルと、を備える。【選択図】図1

Description

本発明は、一般にメモリに関し、より詳しくは重複除去メモリを最大化するシステム及び方法に関する。
重複除去された(又は重複除去)メモリは、データを格納するためのより効率的なメカニズムを提供する。従来のメモリソリューションでは、各々のデータオブジェクトはメモリ内の固有位置に書き込まれる。同一のデータオブジェクトはメモリ内の任意の数の位置に格納され、各々はそのデータオブジェクトの分離されたコピーである。メモリシステムは、このようなデータの繰り返し格納を識別又は防止する方法を有しない。大規模なデータオブジェクトに対して、データのこのような繰り返し格納は無駄である。任意のデータオブジェクトの1つのコピーのみを格納する重複除去メモリはこの問題を解決しようとする。
幾つかの重複除去メモリは、データオブジェクトを格納するためにハッシュテーブル(Hash Table)を使用する。しかし、ハッシュテーブルは、サイズを2倍にするメカニズムによってのみ増加される。このような大きい増加粒状度(granularity)は、しばしば重複除去メモリとして使用できないメモリの大きな部分を残し、単にオーバーフロー領域として処理される。オーバーフロー領域のメモリは重複除去されないので、メモリの大きな部分が重複除去できない場合、全般的な重複除去比率は低下する。
そこで、重複除去の対象にされるメモリの比率を増加させるための方法が依然必要である。
米国特許第9639274号明細書 米国特許出願公開第2015/0370835号明細書 米国特許出願公開第2017/0161329号明細書
本発明は、上記従来の問題点に鑑みてなされたものであって、本発明の目的は、重複除去の対象となるメモリの部分を増加させるためのシステム及び方法を提供することにある。
上記目的を達成するためになされた本発明の一態様によるメモリシステムは、データを格納するメモリと、前記メモリに格納され、所定数のバケット及び第1の数のウェイを含み、2の1乗である第1数のバイトを含む前記メモリの第1部分を含む大きいハッシュテーブルと、前記メモリに格納され、所定数のバケット及び第2の数のウェイを含み、2の2乗である第2数のバイトを含む前記メモリの第2部分を含む小さいハッシュテーブルと、前記メモリに格納され、前記メモリの第3部分を含むオーバーフロー領域と、論理アドレスを領域識別子及び物理アドレスを含むPLID(Physical Line Identifier)にマッピングする変換テーブルと、を備えることを特徴とする。
上記目的を達成するためになされた本発明の一態様によるメモリシステムの方法は、プロセッサから論理アドレスを受信する段階と、変換テーブルを使用して、前記論理アドレスを領域識別子及び物理アドレスを含むPLID(Physical Line Identifier)にマッピングする段階と、前記領域識別子を利用して、メモリ内の大きいハッシュテーブル、小さいハッシュテーブル、又はオーバーフロー領域に前記物理アドレスがあるか否かを判別する段階と、前記物理アドレスを利用して前記メモリ内のデータにアクセスする段階と、を有することを特徴とする。
上記目的を達成するためになされた本発明の一態様によるコンピュータ読み取り可能な記録媒体は、コンピュータに下記方法を実行させるためのプログラムを記録し、前記方法は、プロセッサから論理アドレスを受信する段階と、変換テーブルを使用して、前記論理アドレスを領域識別子及び物理アドレスを含むPLID(Physical Line Identifier)にマッピングする段階と、前記領域識別子を利用して、メモリ内の大きいハッシュテーブル、小さいハッシュテーブル、又はオーバーフロー領域に前記物理アドレスがあるか否かを判別する段階と、前記物理アドレスを利用して前記メモリ内のデータにアクセスする段階と、を有することを特徴とする。
本発明によれば、重複除去された(又は重複除去)メモリは、データを格納するより効果的なメカニズムを提供する。また、メモリの使用を向上させて、重複除去が効果的になるために必要な重複除去比率を減少させる。
本発明の一実施形態による重複除去メモリを使用するために動作するマシンを示す図である。 図1に示すマシンのさらなる詳細を示す図である。 図1のマシン内での重複除去メモリに対する従来のハッシュテーブルの使用を示す図である。 本発明の一実施形態による拡張可能なハッシュテーブルの使用を示す図である。 本発明の一実施形態による拡張可能なハッシュテーブルの使用を示す図である。 論理アドレスを多様なメモリ目的地にマッピングするために図4の変換テーブルの使用を示す図である。 本発明の一実施形態による重複除去メモリに図4の拡張可能なハッシュテーブルを使用する手順の一例を示すフローチャートである。 本発明の一実施形態による重複除去メモリに図4の拡張可能なハッシュテーブルを使用する手順の一例を示すフローチャートである。 本発明の一実施形態によるメモリの読出し要請での論理アドレスに対するPLID(Physical Line Identifier)を判別するための手順の一例を示すフローチャートである。 本発明の一実施形態によるメモリの書込み要請での論理アドレスに対するPLIDを判別するための手順の一例を示すフローチャートである。 本発明の一実施形態によるメモリの書込み要請での論理アドレスに対するPLIDを判別するための手順の一例を示すフローチャートである。 本発明の一実施形態によるメモリの書込み要請での論理アドレスに対するPLIDを判別するための手順の一例を示すフローチャートである。 本発明の一実施形態による小さいハッシュテーブルのサイズを増加させるか否かを判別するための手順の一例を示すフローチャートである。
以下、本発明を実施するための形態の具体例を、図面を参照しながら詳細に説明する。後述する詳細な説明で、本発明の概念が完全に理解できるよう多数の具体的な事例が提示される。しかし、該当技術分野の通常の技術者はこのような具体的な事例無しに本発明を実施することができる。広く公知された方法、装置、構成要素、回路、及びネットワークは、本発明の態様を不必要に曖昧にしないために詳細に説明しない。
本明細書で多様な構成要素を説明するために第1、第2等の用語が使用されるが、これらの構成要素はこのような用語によって制限されない。例えば、本発明の技術的範囲から逸脱しない範囲で、第1モジュールは第2モジュールと称され、同様に第2モジュールは第1モジュールと称される。
本発明の説明に使用される用語は、特定の実施形態を説明する目的にのみ使用され、本発明の技術的思想を限定しない。文脈上で明確に指示しない限り、単数表現は複数表現を含む。「及び/又は」の用語は1つ又はそれより多い連関されたエントリの任意且つ可能な全ての組み合わせを含む。「含む」及び/又は「含んでいる」の用語は記載された特性、整数、段階、動作、元素、及び/又は構成要素の存在を明記し、1つ又はそれより多い他の特性、整数、段階、動作、元素、構成要素、及び/又はそれらのグループの存在又は追加を排除しない。図面に示された構成要素及び特性は実際の比率に必ずしも比例しない。
従来のハッシュテーブルでは、ハッシュテーブルのサイズをm×nで表し、mはハッシュバケット(又はロー)番号であり、nはウェイ(way)(又はカラム)番号である。例えば、ハッシュテーブルは、2=226ハッシュバケット及び2=2ウェイを有する。
従来のハッシュテーブルが大きくなる時、ハッシュテーブルサイズの増加分は現在のサイズの2倍である(Nが指数を増加させるため、ハッシュテーブルの次元を2倍に増加させる)。ハッシュバケットの数は変わらず、ウェイの数のみが変わる。したがって、利用可能なメモリ容量及びハッシュテーブルのサイズに応じて、ハッシュテーブルのサイズを2倍に大きくすることが可能でないこともあり得る。この事実は、重複除去されないメモリの大きな部分を残し、この部分はオーバーフロー領域として使用される。
本明細書で、拡張可能な(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ハッシュテーブル」と容易に称される。
論理アドレスの物理メモリへのマッピング(mapping)(物理的ラインID、又はPLID(Physical Line ID)としても知られる)は、変換テーブル(Translation Table)によって管理される。使用者データ(物理的ライン又はPL(Physical Line)としても知られる)は、大きいハッシュテーブル、小さいハッシュテーブル、及びオーバーフロー領域の中の1つに格納される。
変換テーブルエントリは、使用者データが大きいハッシュテーブルの中、又は小さいハッシュテーブル若しくはオーバーフロー領域の中の1つに存在するか否かを示す領域を含む。したがって、例えば、この領域が値0を格納する場合、使用者データは大きいハッシュテーブルで発見される。そうでなければ、使用者データは小さいハッシュテーブル又はオーバーフロー領域で発見される。
使用者データが大きいハッシュテーブルに格納されない場合、変換テーブルエントリは小さいハッシュテーブルとオーバーフロー領域との中のいずれが使用者データを格納するかを示す下位領域も含む。したがって、例えば、下位領域が値0を格納する場合、使用者データは小さいハッシュテーブルで発見される。そうでなければ、使用者データはオーバーフロー領域で発見される。
図1は、本発明の一実施形態による重複除去メモリを使用するために動作するマシンを示す。図1に、マシン105が示されている。マシン105は、デスクトップコンピュータ、ラップトップコンピュータ、サーバー(スタンドアロンサーバー(standalone server)又はラックサーバー(rack server)の中の1つ)、又は本発明の実施形態から利益を得ることができる他の任意の装置を含む。但し、これらに制限されない。マシン105は、特殊な携帯用コンピューティング装置、タブレットコンピュータ、スマートフォン、及び他のコンピューティング装置を含む。マシン105は任意の所望の応用プログラムを実行する。データベースアプリケーションがよい例であるが、本発明の実施形態は任意の所望のアプリケーションに拡張される。
マシン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によって制御される。
格納装置120は、任意の多様な格納装置である。格納装置120は、メモリ115内に配置される装置ドライバー130によって制御される。
図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に連結される。
図1乃び図2で、メモリ115は重複除去メモリである。重複除去メモリの実装は、DRAM(Dynamic Random Access Memory)のようなメモリの従来の形態とは異なるが、これらの相異点は重複除去メモリの実装には関連しない。また、プロセッサ110のようなマシン105の他のハードウェア構成要素がメモリ115の特定の実装を認知するか否かは、これらの構成要素がメモリ115の物理構造を知る必要があるか否かに依存する。このメモリ115の特定の実装に対する「知識の不足」は、マシン105上で実行されるアプリケーションプログラムのような、ソフトウェア構成要素に拡張される。アプリケーションプログラムは、メモリ115がDRAM、重複除去メモリ、又は任意の他の形態のメモリを含むか否かに対する知識無しに、読出し及び書込み要請をメモリ115に伝送する。
図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倍にするのに十分な追加メモリがないためである)。
図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は静的に(それはメモリ内にある可能性があるほどに大きい)設定される。
大きいハッシュテーブル305又は小さいハッシュテーブル405の中の1つに与えられたロー及びカラム値に対して、ハッシュテーブルは、エントリ410のようなエントリを含む。エントリ410は、データ415及び度数カウンター(frequency counter)420を含む。データ415は実際のデータを格納する。度数カウンター420はデータに対する異なる参照の数を追跡する。アプリケーションがデータ415の使用に関心を示すと、度数カウンター420は増加する。アプリケーションがそれ以上データ415に関心がない時、度数カウンター420は減少する。
n’はnより大きくてはならない。結局、メモリが、n’がnくらいの大きい数になるための充分な空間を含むならば、大きいハッシュテーブル305は最初から2倍に作成され、小さいハッシュテーブル405を使用する必要はない。
以上の説明は、小さいハッシュテーブル405が静的であるか、又は動的であるかに拘らず、大きいハッシュテーブル305が静的に設定されることを提案する。本発明の幾つかの実施形態で、大きいハッシュテーブル305は静的に設定されるが、本発明の他の実施形態で大きいハッシュテーブル305は(物理的メモリの範囲内でそれ以上大きくならないところまで)必要に応じて動的に大きくなる。さらに、大きいハッシュテーブル305と小さいハッシュテーブル405との間に、これらのどちらが静的又は動的であるかを要求される関係はない。即ち、テーブルの両方が静的であってもよく、一方が静的であり、他方は動的であってもよく、又は両方が動的であってもよい。
大きいハッシュテーブル305及び小さいハッシュテーブル405の両方を使用して、より多くのメモリ115が重複除去メモリに使用され、より少ないメモリ115がオーバーフロー領域320に割り当られる。これはメモリ115の使用を向上させて、重複除去が効果的になるために必要な重複除去比率を減少させる。
幾つかの例が参考になる。総メモリ容量が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の原始重複除去比率が必要である。これは相当に向上されている。
Figure 2018120594
大きいハッシュテーブル305及び小さいハッシュテーブル405の両方を使用する場合、より低い原始重複除去比率が必要となる理由は、より多くのメモリ115が重複除去メモリとして使用されるためである。即ち、オーバーフロー領域320は、より小さい。より少ないメモリ115がオーバーフロー領域320に使用されるため、より低い原始重複除去比率が必要となり、メモリ115は全般的により効率的に使用される。
第2の例として、同じ物理メモリ内にある同一のハッシュテーブルを考察する。この例では、一定の原始重複除去比率を仮定する効果的な重複除去比率を考察する。表2はこのような状況を示している。表2に示すように、ハッシュテーブル305が単独で使用される時の効果的な重複除去比率は、大きいハッシュテーブル305と小さいハッシュテーブル405とが共に使用される時の効果的な重複除去比率よりも低い。
Figure 2018120594
以上で説明した実施形態は、1つの大きいハッシュテーブル305及び1つの小さいハッシュテーブル405を示す。しかし、ただ1つの小さいハッシュテーブル405のみが使用される理由はない。図5は、本発明の他の実施形態による拡張可能なハッシュテーブルの使用を示す図である。本実施形態では、投資回収率を犠牲にして、多数の小さいハッシュテーブルを支援する。例えば、図5で、メモリ115は大きいハッシュテーブル305、小さいハッシュテーブル405、及び小さいハッシュテーブル505を含むことが示されている。小さいハッシュテーブル505は、このハッシュテーブル505がN”ウェイを含むことを除いて、形態及び機能において小さいハッシュテーブル405と同一であり、ここで、(N’がNより少ない2の累乗であるように)N”は、N’より少ない2の累乗である。
変換テーブル310は、論理アドレスを所望の使用者データが格納されたアドレスにマッピングすることを担当する。具体的に、変換テーブル310は、ロー及びカラム(即ち、バケット及びウェイ)を、(使用者データがハッシュテーブルの中の1つに格納された場合)使用者データが格納されたハッシュテーブルに格納するか、又は(使用者データがハッシュテーブルの中の1つに格納されない場合)オーバーフロー領域320に物理アドレスを格納する。図6はこのプロセスを示している。即ち、図6は、論理アドレスを多様なメモリ目的地にマッピングするために図4の変換テーブルの使用を示す図である。
図6で、変換テーブル310は、ホストコンピュータから論理アドレス605を受信する(論理アドレス605は、アプリケーション、オペレーティングシステム(Operating system)、又は図1のメモリ115からデータにアクセスが必要な任意の他のソフトウェア又はハードウェアから最終的に得られる)。論理アドレス605は、読出し要請又は書込み要請の中の1つであるデータ要請の部分である。論理アドレス605は、2つの構成要素、即ち、変換テーブルインデックス及び粒状度を含むものと考えられる。変換テーブルインデックスは、要請されたデータが発見される特定ページ(又はキャッシュライン)を示す。粒状度は検索されるデータの特定バイトを示す。具体的に、変換テーブルインデックスは、論理アドレス605から最下位ビットをマスクすることによって生成される。変換テーブルインデックスを生成するためにどのくらい多くのビットがマスクされるかは、変換テーブルインデックスのサイズに依存する(これは、図1のメモリ115のサイズ及びコンピュータシステムで使用されるキャッシュラインのサイズに依存する)。
その後、変換テーブルインデックスは、PLID(Physical Line Identifier)610が読み出される変換テーブル内でインデックスとして使用される。PLID610は、使用者データが実際にどこに格納されるかに応じて異なる形態を取る。しかし、すべての場合において、PLID610は、領域識別子615及び物理アドレス620を含む。
使用者データが図4の大きいハッシュテーブル305に格納される場合、PLID610はエントリ625のように見える。エントリ625で、領域識別子は1ビットを含み、これは使用者データが図4の大きいハッシュテーブル305に格納されたことを示す。そして、物理アドレスは、ローインデックス(ハッシュバケットを識別する)に対するmビット及びカラムインデックス(ウェイを識別する)に対するnビットを含む。mビットは2ハッシュバケットの中から選択するのに十分であり、nビットは2ウェイの中から選択するのに十分であるので、固有の使用者データが大きいハッシュテーブル305内で識別される。
使用者データが図4の小さいハッシュテーブル405に格納される場合、PLID610はエントリ630のように見える。エントリ630で、領域識別子は2ビットを含む。即ち、使用者データが図4の大きいハッシュテーブル305に格納されていないことを示す第1ビット、及び使用者データが図4の小さいハッシュテーブル405に格納されていることを示す第2ビットを含む。そして、物理アドレスは、ローインデックス(ハッシュバケットを識別する)に対するmビット及びカラムインデックス(ウェイを識別する)に対するn’ビットを含む。n’は常にnより小さいので、2ビットが使用者データが格納された領域を識別するのに使用されるにも拘らず、エントリ630はエントリ625よりもさらに多くのビットを必要としない。
使用者データが図4のオーバーフロー領域320に格納される場合、PLID610はエントリ635のように見える。エントリ635で、領域識別子は再び2ビットを含む。即ち、使用者データが図4の大きいハッシュテーブル305に格納されないことを示す第1ビット、及び使用者データが図4のオーバーフロー領域320に格納されていることを示す第2ビットを含む。物理アドレスは、ロー及びカラムインデックス(エントリ625、630のように)を含むか、又は任意の他の所望のフォーマットを使用して、任意の所望の方式にフォーマットされる。
エントリ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に対するビットの幾つかの組み合わせが残る。
図6は、論理アドレスから多くのビットをキーオフされたエントリと共に、テーブルとして変換テーブル310を説明したが、変換テーブル310は他の技術、例えばハッシュ関数を利用して、具現される。ハッシュ関数を利用する場合、特定の論理アドレス(又は論理アドレスの関連上位ビット)はハッシュ関数の対象になる可能性がある。ハッシュ関数の結果は、使用者データの位置(図4の大きいハッシュテーブル305、図4の小さいハッシュテーブル405、又は図4のオーバーフロー領域320)、及び物理アドレスを判別するのに使用される。
図4に戻ると、重複除去メモリを使用する時の1つの問題は、使用者データが実際にメモリ115のどこかに格納されているのか否かを確認することである。例えば、異なるアプリケーションは同一のデータへのアクセスを要請するが、異なる論理アドレスを使用する(どちらのアプリケーションも、他のアプリケーション又は使用者データに対する他のアプリケーションの関心を認知できないので)。シグネチャーテーブル315は、与えられた使用者データがメモリ115に既に存在する幾つかの他の使用者データの複製であるか否かを判別し、使用者データの不必要なコピーが格納されることを防止するために使用される。
使用者データがメモリ115に新たに格納される時、ハッシュ関数はシグネチャーを生成するために使用者データに適用される。このハッシュ関数は、メモリに使用者データが実際に格納された場所を判別するのに使用されるハッシュ関数と同一であるか、又は、異なるハッシュ関数である。使用者データが格納された場所を判別するのに使用されるハッシュ関数とは異なり、シグネチャーを生成するのに使用されるハッシュ関数は使用者データの論理アドレスではなく、使用者データ自体のハッシュを遂行する。その後、シグネチャーテーブル315はシグネチャーが存在するか否かを確認するために検索される。
シグネチャーは、通常、使用者データ自体よりも長さが短い(即ち、より少ビット)。したがって、異なる使用者データが同一のシグネチャーを生成することが可能である。言い換えると、シグネチャーの一致がシグネチャーテーブル315で発見される場合、その一致は使用者データがメモリ115に既に格納されていることを自動的に意味するものではない。使用者データがメモリ115に実際に格納されたか否かを判別するために、使用者データはメモリ115の識別されたデータと比較される。完全な比較が一致を示す場合、使用者データはメモリ115に既に格納されている。その場合、変換テーブル310は、図6のPLID610が使用者データが格納された位置を示すように設定する。逆の命題が真であることに留意する。シグネチャーテーブル315でシグネチャーの一致が発見されなければ、使用者データはメモリ115に未だ格納されていない(同一データが同一のハッシュ関数を使用して異なるシグネチャーを生成しないため)。その場合、新しいエントリが、論理アドレスに再びマッピングされるシグネチャーテーブル315に追加される。
シグネチャーテーブル315は、一般的に大きいハッシュテーブル305及び小さいハッシュテーブル405に格納された使用者データに関してのみに使用される。即ち、シグネチャーテーブル315は、オーバーフロー領域320に格納されたデータのために使用されない。理由は単純である。オーバーフロー領域320は重複除去の対象ではないため、そこに重複データが格納される可能性がある。
図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を各々参照して示される。
図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に格納されるところを除外すれば、データのアクセスは同一である)。
段階730(図7B)で、図4のメモリ115は要請されたデータが特定のローインデックス及びカラムインデックスで「発見」されたか否かを判別する。例えば、データがハッシュテーブルの中の1つに書き込まれる時、ローインデックス及びカラムインデックスが、既にデータがある位置を識別することが発生する(可能性は低いが、発生可能である)。その場合、使用者データは付近の位置に書き込まれ(例えば、カラムインデックスの幾つかの予め決定されたデルタ内で、同じハッシュバケットの他のウェイ)、したがってデータは読み出される時の代わりにその位置で検索される必要がある。ハッシュテーブルで「近い」と看做されることは、図9A〜図9Cを参照して、以下でさらに論議される。書込み要請の場合、「発見」されるデータは、データが書き込まれるハッシュテーブルに利用可能なエントリがあることを意味する。
図6の論理アドレス605が読出し要請の部分である状況で、図4のメモリ115は、特定のローインデックス及びカラムインデックスのデータが要請されたデータではないことを判別する方法がない。このような状況で、段階730は、データにアクセスするために、一般的に常に「はい(Yes)」の結果を返し、段階735へ自動的に進行する。
データが特定のローインデックス及びカラムインデックスで発見されるか、又は特定のローインデックス及びカラムインデックスが書込み要請に対するデータを格納可能な場合、段階735で図4のメモリ115はデータにアクセスし、その後に処理が完了される。そうでない場合、データが書き込まれる予定であるが、ローインデックス及びカラムインデックスがデータを既に格納している位置を識別する場合、段階740で図4のメモリ115は使用者データを書き込む位置のために近くのエントリを検索する。段階745で、使用者データが書き込まれる近くの位置が無い場合、段階750で図4のメモリ115はエラーを報告する。又は、特にデータがハッシュテーブルの中の1つに書き込まれる予定であるが、幾つかの理由によって書き込むことができない場合、図6のPLID610はハッシュテーブルの代わりに図4のオーバーフロー領域320を指すように変更される(この場合に処理が図7Aの段階720へ進行される)。そうでない場合、データは付近で「発見」され、段階735で使用者データはハッシュテーブルからアクセスされ、処理は完了される。
図8は、本発明の一実施形態によるメモリの読出し要請での論理アドレスに対するPLID(Physical Line Identifier)を判別するための手順の一例を示すフローチャートである。読出し要請の場合、プロセスは単純である。段階805で、論理アドレスは図4の変換テーブル310にアクセスするのに使用される。変換テーブル310は、図4のメモリ115内の適切な領域からデータにアクセスするのに使用される物理アドレス(ハッシュテーブルの中の1つにローインデックス及びカラムインデックスを含む)が決定される図6のPLID610を提供する。
図9A〜図9Cは、本発明の一実施形態によるメモリの書込み要請での論理アドレスに対するPLIDを判別するための手順の一例を示すフローチャートである。図9Aの段階905で、図4のメモリ115は書き込まれるデータのシグネチャーを生成する。段階910で、図4のシグネチャーテーブル315はシグネチャーが存在するか否かを確認する。シグネチャーの一致が発見されると、段階915で図4のメモリ115はデータがハッシュテーブル(図4の大きいハッシュテーブル305又は図4の小さいハッシュテーブルの中の1つである)に格納されたデータと一致するか否かを確認する。そうでない場合、段階920で、図4のメモリ115は図4のシグネチャーテーブル315が新しいエントリのための空間を有するか否かを確認する。
段階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の処理も終了する。
シグネチャーが図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によって特定された位置からデータにアクセスするためにこのアプローチを使用する。本発明の実施形態はハッシュ衝突に対する他のソリューションも支援する。
図4のシグネチャーテーブル315でシグネチャーが発見されず、図4のシグネチャーテーブル315が新しいエントリに対する空間を有する場合、以段階950(図9C)で、シグネチャーは図4のシグネチャーテーブル315に追加され、段階955でメモリ115は、利用可能なエントリがどこに発見されるかによって、図4の大きいハッシュテーブル305及び図4の小さいハッシュテーブル405の中の1つに対して図6のPLID610を生成する。
図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倍に増加させて処理は終了する。
図7A〜図10で、本発明の幾つかの実施形態が開示されている。しかし、当該技術分野における通常の知識を有する者は、段階の順序を変更するか、段階を省略するか、又は図面に示されていない連結を含めることによって、本発明の他の実施形態も実施可能である。フローチャートのすべてのこのような変形は、明示的に記載されているか否かに拘らず、本発明の実施形態と考えられる。
以下の説明は、本発明の技術的思想の特定の側面が具現される適切なマシンの簡単且つ一般的な説明を提供する。マシンは、少なくとも部分的に、他のマシンから受信する指示、仮想現実(virtual Reality:VR)との相互作用、生体認証フィードバック、又は他の入力信号のみならず、キーボード、マウス等のような既存の入力装置からの入力によって、制御される。本明細書で使用される、「マシン」という用語は1つのマシン、仮想マシン、通信可能に結合されたマシンのシステム、又は共に動作する装置を幅広く含む。マシンの一例は、例えば、自動車、汽車、タクシー等の個人又は公共交通機関のような輸送機器のみならず、個人用コンピュータ、ワークステーション、サーバー、携帯用コンピュータ、ハンドヘルド(handheld)装置、電話機、タブレット等のようなコンピューティング装置を含む。
マシンは、プログラム可能な又は非プログラマブルな論理装置又はアレイ、特定用途向け集積回路(Application Specific Integrated Circuits、ASIC)、組込みコンピュータ、スマトカード等のような組込みコントローラを含む。マシンは、例えばネットワークインターフェイス、モデム、又は他の通信結合器を通じて、1つ以上の遠隔マシンに対する1つ以上の接続を利用する。マシンは、イントラネット(登録商標)、インターネット、LAN(local area network)、WAN(wide area network)等のような物理的及び/又は論理的ネットワーク手段で相互連結される。当業者はネットワークコミニュケーションが、無線(RF)、衛星、マイクロ波、IEEE802.11規格、ブルートゥース(登録商標)、光学的、赤外線、ケーブル、レーザー等を含む多様な有線及び/又は無線の短距離又は長距離のキャリヤー及びプロトコルを使用できることを理解する。
本発明の実施形態は、マシンによってアクセスされる時、マシンが業務を遂行するか、或いは抽象的なデータタイプ又は低いレベルのハードウェアコンテキストを定義する結果を行う、機能、手続、データ構造、アプリケーションプログラム等を含む関連データを参照するか、又は関連データと共に説明される。関連データは、例えば、揮発性及び/又は不揮発性メモリ(例えば、RAM、ROM等)、又は他の記憶装置、及びハードドライブ、フロッピーディスク、光学記憶装置、テープ、フラッシュメモリ、メモリスティック、デジタルビデオディスク、生物学的記憶装置等を含む関連記憶媒体に格納される。関連データは、物理及び/又は論理ネットワークを含む伝送環境を通じてパケット、シリアルデータ、並列データ、伝播信号等の形態で伝達され、圧縮又は暗号化されたフォーマットで使用される。関連データは、分散環境で使用され、マシンアクセスに対してローカル及び/又は遠隔に格納される。
本発明の実施形態は、1つ以上のプロセッサによって実行可能な命令を含むタイプの、非一時的なマシンで解読することができる媒体を含み、命令は本明細書で説明した発明の概念の構成要素を遂行するための命令を含む。
以上、図面を参照しながら本発明の実施形態を説明したが、本発明は、本発明の技術範囲から逸脱しない範囲で変形され、他の望ましい方式に結合される。また、本明細書の説明は特定の実施形態に集中したが、他の構成も考慮され得る。特に、「本発明の実施形態によれば」等の表現が本明細書で使用されるが、このような句は実施形態の可能性を一般的に参照することを意味し、特定の実施構成として本発明を制限するものではない。本明細書で使用した、これらの用語は他の実施形態と結合可能な同一又は異なる実施形態を参照する。
本発明は、上述の実施形態に限定されるものではなく、そのような実施形態に対して多様に変更実施が可能である。したがって、このようなすべての変形は本発明の技術範囲内に含まれる。
本発明の実施形態は以下の説明に制限無しで拡張される。
説明1.本発明の実施形態によるメモリシステムは、データを格納するメモリと、
前記メモリに格納され、所定数のバケット及び第1の数のウェイを含み、2の1乗である第1数のバイトを含む前記メモリの第1部分を含む大きいハッシュテーブルと、
前記メモリに格納され、所定数のバケット及び第2の数のウェイを含み、2の2乗である第2数のバイトを含む前記メモリの第2部分を含む小さいハッシュテーブルと、
前記メモリに格納され、前記メモリの第3部分を含むオーバーフロー領域と、
論理アドレスを領域識別子及び物理アドレスを含むPLID(Physical Line Identifier)にマッピングするための変換テーブルを含むメモリシステムと、を備える。
説明2.本発明の実施形態は、説明1にしたがうメモリシステムを含み、前記領域識別子は、前記PLIDが前記大きいハッシュテーブルのデータを識別することを示す第1ビットを含む。
説明3.本発明の実施形態は、説明2にしたがうメモリシステムを含み、前記物理アドレスは、ローインデックス及びカラムインデックスを含む。
説明4.本発明の実施形態は、説明2にしたがうメモリシステムを含み、
前記第1ビットは、前記PLIDが前記大きいハッシュテーブルのデータを識別しないことを示し、
前記領域識別子は、前記PLIDが前記小さいハッシュテーブル内にあるか又は前記オーバーフロー領域内にあるかを示す第2ビットを含む。
説明5.本発明の実施形態は、説明4にしたがうメモリシステムを含み、
前記第2ビットは、前記PLIDが前記小さいハッシュテーブルのデータを職別することを示し、
前記物理アドレスは、ローインデックス及びカラムインデックスを含む。
説明6.本発明の実施形態は、説明2にしたがうメモリシステムを含み、前記小さいハッシュテーブルは、動的に大きくなる。
説明7.本発明の実施形態は、説明6にしたがうメモリシステムを含み、前記大きいハッシュテーブルは、動的に大きくなる。
説明8.本発明の実施形態は、説明1によるメモリシステムを含み、前記メモリシステムに対する第1の効果的な最小の重複除去比率は、前記小さいハッシュテーブル無しで前記大きいハッシュテーブルに対する第2の効果的な最小の重複除去比率よりも低い。
説明9.本発明の実施形態は、説明1にしたがうメモリシステムを含み、
前記メモリに格納され、前記大きいハッシュテーブル及び前記小さいハッシュテーブルに格納された複数のデータのシグネチャーを格納するシグネチャーテーブルをさらに含み、
前記シグネチャーテーブルは、共通シグネチャーがある多数のデータを前記大きいハッシュテーブル又は前記小さいハッシュテーブルのローに格納することを防止する。
説明10.本発明の実施形態による方法は、
プロセッサから論理アドレスを受信する段階と、
変換テーブルを使用して、前記論理アドレスを領域識別子及び物理アドレスを含むPLID(Physical Line Identifier)にマッピングする段階と、
前記領域識別子を利用して、メモリ内の大きいハッシュテーブル、小さいハッシュテーブル、又はオーバーフロー領域に前記物理アドレスがあるか否かを判別する段階と、
前記物理アドレスを利用して前記メモリ内のデータにアクセスする段階と、を有する。
説明11.本発明の実施形態は、説明10にしたがう方法を含み、前記領域識別子を利用して、メモリ内の大きいハッシュテーブル、小さいハッシュテーブル、又はオーバーフロー領域に前記物理アドレスがあるか否かを判別する段階は、前記領域識別子の第1ビットが設定されない場合、前記物理アドレスが前記大きいハッシュテーブルにあると判別する段階を含む。
説明12.本発明の実施形態は、説明10にしたがう方法を含み、前記領域識別子を利用して、メモリ内の大きいハッシュテーブル、小さいハッシュテーブル、又はオーバーフロー領域に前記物理アドレスがあるか否かを判別する段階は、前記領域識別子の第1ビットが設定されて前記領域識別子の第2ビットが設定されない場合、前記物理アドレスが前記小さいハッシュテーブルにあると判別する段階を含む。
説明13.本発明の実施形態は、説明10にしたがう方法を含み、前記領域識別子を利用して、メモリ内の大きいハッシュテーブル、小さいハッシュテーブル、又はオーバーフロー領域に前記物理アドレスがあるか否かを判別する段階は、前記領域識別子の第1ビットが設定されて前記領域識別子の第2ビットが設定された場合、前記物理アドレスが前記オーバーフロー領域にあると判別する段階を含む。
説明14.本発明の実施形態は、説明10にしたがう方法を含み、前記物理アドレスを利用して前記メモリ内のデータにアクセスする段階は、
前記物理アドレスからローインデックス及びカラムインデックスを判別する段階と、
前記ローインデックス及び前記カラムインデックスを利用して前記大きいハッシュテーブル及び前記小さいハッシュテーブルの中の1つのデータにアクセスする段階と、を含む。
説明15.本発明の実施形態は、説明14にしたがう方法を含み、前記ローインデックス及び前記カラムインデックスを利用して前記大きいハッシュテーブル及び前記小さいハッシュテーブルの中の1つのデータにアクセスする段階は、前記小さいハッシュテーブルの前記ローインデックス及び前記カラムインデックスで前記データが発見されない場合、前記小さいハッシュテーブルの近くのエントリを検索する段階を含む。
説明16.本発明の実施形態は、説明10にしたがう方法を含み、前記物理アドレスを利用して前記メモリ内のデータにアクセスする段階は、前記物理アドレスを利用して前記オーバーフロー領域のデータにアクセスする段階を含む。
説明17.本発明の実施形態は、説明10にしたがう方法を含み、
前記小さいハッシュテーブルが収容容量に近づいていることを判別する段階と、
前記オーバーフロー領域のサイズを減少させる一方、前記小さいハッシュテーブルのサイズを増加させる段階と、をさらに含む。
説明18.本発明の実施形態は、説明17にしたがう方法を含み、
前記小さいハッシュテーブルのサイズを増加させる段階は、
前記小さいハッシュテーブルのサイズを2倍に増加させる段階と、
前記オーバーフロー領域のサイズを減少させる段階と、を含む。
説明19.本発明の実施形態は、説明17にしたがう方法を含み、前記小さいハッシュテーブルのサイズを増加させる段階は、前記小さいハッシュテーブルのカラムに相当するウェイの数を増加させる段階を含む。
説明20.本発明の実施形態は、説明10にしたがう方法を含み、
前記物理アドレスを利用して前記メモリ内のデータにアクセスする段階は、前記メモリに前記データを書き込む段階を含み、
変換テーブルを使用して、前記論理アドレスを領域識別子及び物理アドレスを含むPLIDにマッピングする段階は、前記変換テーブルを使用して前記データを書込みために、前記大きいハッシュテーブル、前記小さいハッシュテーブル、及び前記オーバーフロー領域の中の1つを選択する段階を含む。
説明21.本発明の実施形態は、説明20にしたがう方法を含み、前記領域識別子を利用して、メモリ内の大きいハッシュテーブル、小さいハッシュテーブル、又はオーバーフロー領域に前記物理アドレスがあるか否かを判別する段階は、
シグネチャーを生産するために前記データにハッシュ関数を適用する段階と、
前記シグネチャーに対するシグネチャーテーブルを確認する段階と、
前記シグネチャーが前記シグネチャーテーブルにある場合、前記データを前記オーバーフロー領域に書き込む段階と、を含む。
説明22.本発明の実施形態は、説明21にしたがう方法を含み、前記シグネチャーに対するシグネチャーテーブルを確認する段階は、前記物理アドレスのローでの前記シグネチャーに対するシグネチャーテーブルを確認する段階を含む。
説明23.本発明の実施形態によるコンピュータ読み取り可能な記録媒体は、コンピュータに下記方法を実行させるためのプログラムを記録し、、
前記方法は、
プロセッサから論理アドレスを受信する段階と、
変換テーブルを使用して、前記論理アドレスを領域識別子及び物理アドレスを含むPLID(Physical Line Identifier)にマッピングする段階と、
前記領域識別子を利用して、メモリ内の大きいハッシュテーブル、小さいハッシュテーブル、又はオーバーフロー領域に前記物理アドレスがあるか否かを判別する段階と、
前記物理アドレスを使用して前記メモリ内のデータにアクセスする段階と、を有する。
説明24.本発明の実施形態は、説明23にしたがう記録媒体を含み、前記領域識別子を利用して、メモリ内の大きいハッシュテーブル、小さいハッシュテーブル、又はオーバーフロー領域に前記物理アドレスがあるか否かを判別する段階は、前記領域識別子の第1ビットが設定されない場合、前記物理アドレスが前記大きいハッシュテーブルにあると判別する段階を含む。
説明25.本発明の実施形態は、説明23にしたがう記録媒体を含み、前記領域識別子を利用して、メモリ内の大きいハッシュテーブル、小さいハッシュテーブル、又はオーバーフロー領域に前記物理アドレスがあるか否かを判別する段階は、前記領域識別子の第1ビットが設定されて前記領域識別子の第2ビットが設定されない場合、前記物理アドレスが前記小さいハッシュテーブルにあると判別する段階を含む。
説明26.本発明の実施形態は、説明23にしたがう記録媒体を含み、前記領域識別子を利用して、メモリ内の大きいハッシュテーブル、小さいハッシュテーブル、又はオーバーフロー領域に前記物理アドレスがあるか否かを判別する段階は、前記領域識別子の第1ビットが設定されて前記領域識別子の第2ビットが設定された場合、前記物理アドレスが前記オーバーフロー領域にあると判別する段階を含む。
説明27.本発明の実施形態は、説明23にしたがう記録媒体を含み、前記物理アドレスを利用して前記メモリ内のデータにアクセスする段階は、
前記物理アドレスからローインデックス及びカラムインデックスを判別する段階と、
前記ローインデックス及び前記カラムインデックスを利用して前記大きいハッシュテーブル及び前記小さいハッシュテーブルの中の1つのデータにアクセスする段階と、を含む。
説明28.本発明の実施形態は、説明27にしたがう記録媒体を含み、前記ローインデックス及び前記カラムインデックスを利用して前記大きいハッシュテーブル及び前記小さいハッシュテーブルの中の1つのデータにアクセスする段階は、前記小さいハッシュテーブルの前記ローインデックス及び前記カラムインデックスで前記データが発見されない場合、前記小さいハッシュテーブルの付近のエントリを検索する段階を含む。
説明29.本発明の実施形態は、説明23にしたがう記録媒体を含み、前記物理アドレスを利用して前記メモリ内のデータにアクセスする段階は、前記物理アドレスを利用して前記オーバーフロー領域のデータにアクセスする段階を含む。
説明30.本発明の実施形態は、説明23にしたがう記録媒体を含み、前記方法は、
前記小さいハッシュテーブルが収容容量に近づいていることを判別する段階と、
前記オーバーフロー領域のサイズを減少させる一方、前記小さいハッシュテーブルのサイズを増加させる段階と、をさらに含む。
説明31.本発明の実施形態は、説明30にしたがう記録媒体を含み、
前記小さいハッシュテーブルのサイズを増加させる段階は、
前記小さいハッシュテーブルのサイズを2倍に増加させる段階と、
前記オーバーフロー領域のサイズを減少させる段階と、を含む。
説明32.本発明の実施形態は、説明30にしたがう記録媒体を含み、前記小さいハッシュテーブルのサイズを増加させる段階は、前記小さいハッシュテーブルのカラムに相当するウェイの数を増加させる段階を含む。
説明33.本発明の実施形態は、説明23にしたがう記録媒体を含み、
前記物理アドレスを利用して前記メモリ内のデータにアクセスする段階は、前記メモリに前記データを書き込む段階を含み、
変換テーブルを使用して、前記論理アドレスを領域識別子及び物理アドレスを含むPLIDにマッピングする段階は、前記変換テーブルを使用して前記データを書込みために、前記大きいハッシュテーブル、前記小さいハッシュテーブル、及び前記オーバーフロー領域の中の1つを選択する段階を含む。
説明34.本発明の実施形態は、説明33にしたがう記録媒体を含み、前記領域識別子を利用して、メモリ内の大きいハッシュテーブル、小さいハッシュテーブル、又はオーバーフロー領域に前記物理アドレスがあるか否かを判別する段階は、
シグネチャーを生産するために前記データにハッシュ関数を適用する段階と、
前記シグネチャーに対するシグネチャーテーブルを確認する段階と、
前記シグネチャーが前記シグネチャーテーブルにある場合、前記データを前記オーバーフロー領域に書き込む段階と、を含む。
説明35.本発明の実施形態は、説明34にしたがう記録媒体を含み、前記シグネチャーに対するシグネチャーテーブルを確認する段階は、前記物理アドレスのローでの前記シグネチャーに対するシグネチャーテーブルを確認する段階を含む。
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 物理アドレス

Claims (16)

  1. データを格納するメモリと、
    前記メモリに格納され、所定数のバケット及び第1の数のウェイを含み、2の1乗である第1数のバイトを含む前記メモリの第1部分を含む大きいハッシュテーブルと、
    前記メモリに格納され、所定数のバケット及び第2の数のウェイを含み、2の2乗である第2数のバイトを含む前記メモリの第2部分を含む小さいハッシュテーブルと、
    前記メモリに格納され、前記メモリの第3部分を含むオーバーフロー領域と、
    論理アドレスを領域識別子及び物理アドレスを含むPLID(Physical Line Identifier)にマッピングする変換テーブルと、を備えることを特徴とするメモリシステム。
  2. 前記領域識別子は、前記PLIDが前記大きいハッシュテーブルのデータを識別することを示す第1ビットを含むことを特徴とする請求項1に記載のメモリシステム。
  3. 前記物理アドレスは、ローインデックス及びカラムインデックスを含むことを特徴とする請求項2に記載のメモリシステム。
  4. 前記第1ビットは、前記PLIDが前記大きいハッシュテーブルのデータを識別しないことを示し、
    前記領域識別子は、前記PLIDが前記小さいハッシュテーブル内にあるか又は前記オーバーフロー領域内にあるかを示す第2ビットを含むことを特徴とする請求項2に記載のメモリシステム。
  5. 前記小さいハッシュテーブルは、動的に大きくなることを特徴とする請求項1に記載のメモリシステム。
  6. 前記メモリシステムに対する第1の効果的な最小の重複除去比率は、前記小さいハッシュテーブル無しで前記大きいハッシュテーブルに対する第2の効果的な最小の重複除去比率よりも小さいことを特徴とする請求項1に記載のメモリシステム。
  7. 前記メモリに格納され、前記大きいハッシュテーブル及び前記小さいハッシュテーブルに格納された複数のデータのシグネチャーを格納するシグネチャーテーブルをさらに含み、
    前記シグネチャーテーブルは、共通シグネチャーがある多数のデータを前記大きいハッシュテーブル又は前記小さいハッシュテーブルのローに格納することを防止することを特徴とする請求項1に記載のメモリシステム。
  8. プロセッサから論理アドレスを受信する段階と、
    変換テーブルを使用して、前記論理アドレスを領域識別子及び物理アドレスを含むPLID(Physical Line Identifier)にマッピングする段階と、
    前記領域識別子を利用して、メモリ内の大きいハッシュテーブル、小さいハッシュテーブル、又はオーバーフロー領域に前記物理アドレスがあるか否かを判別する段階と、
    前記物理アドレスを利用して前記メモリ内のデータにアクセスする段階と、を有することを特徴とする方法。
  9. 前記領域識別子を利用して、メモリ内の大きいハッシュテーブル、小さいハッシュテーブル、又はオーバーフロー領域に前記物理アドレスがあるか否かを判別する段階は、前記領域識別子の第1ビットが設定されない場合、前記物理アドレスが前記大きいハッシュテーブルにあると判別する段階を含むことを特徴とする請求項8に記載の方法。
  10. 前記領域識別子を利用して、メモリ内の大きいハッシュテーブル、小さいハッシュテーブル、又はオーバーフロー領域に前記物理アドレスがあるか否かを判別する段階は、前記領域識別子の第1ビットが設定されて前記領域識別子の第2ビットが設定されない場合、前記物理アドレスが前記小さいハッシュテーブルにあると判別する段階を含むことを特徴とする請求項8に記載の方法。
  11. 前記領域識別子を利用して、メモリ内の大きいハッシュテーブル、小さいハッシュテーブル、又はオーバーフロー領域に前記物理アドレスがあるか否かを判別する段階は、前記領域識別子の第1ビットが設定されて前記領域識別子の第2ビットが設定された場合、前記物理アドレスが前記オーバーフロー領域にあると判別する段階を含むことを特徴とする請求項8に記載の方法。
  12. 前記物理アドレスを利用して前記メモリ内のデータにアクセスする段階は、
    前記物理アドレスからローインデックス及びカラムインデックスを判別する段階と、
    前記ローインデックス及び前記カラムインデックスを利用して前記大きいハッシュテーブル及び前記小さいハッシュテーブルの中の1つのデータにアクセスする段階と、を含むことを特徴とする請求項8に記載の方法。
  13. 前記ローインデックス及び前記カラムインデックスを利用して前記大きいハッシュテーブル及び前記小さいハッシュテーブルの中の1つのデータにアクセスする段階は、前記小さいハッシュテーブルの前記ローインデックス及び前記カラムインデックスで前記データが発見されない場合、前記小さいハッシュテーブルの近くのエントリを検索する段階を含むことを特徴とする請求項12に記載の方法。
  14. 前記小さいハッシュテーブルが収容容量に近づいていることを判別する段階と、
    オーバーフロー領域のサイズを減少させる一方、前記小さいハッシュテーブルのサイズを増加させる段階と、をさらに含むことを特徴とする請求項8に記載の方法。
  15. 前記小さいハッシュテーブルのサイズを増加させる段階は、前記小さいハッシュテーブルのカラムに相当するウェイの数を増加させる段階を含むことを特徴とする請求項14に記載の方法。
  16. コンピュータに請求項8乃至12のいずれか一項に記載の方法を実行させるためのプログラムを記録したコンピュータ読み取り可能な記録媒体。

JP2018010614A 2017-01-25 2018-01-25 最大化された重複除去メモリのためのシステム及び方法 Active JP7058132B2 (ja)

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 2017-03-31
US15/476,757 US10678704B2 (en) 2016-03-29 2017-03-31 Method and apparatus for enabling larger memory capacity than physical memory size
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 US10437785B2 (en) 2016-03-29 2017-11-27 Method and apparatus for maximized dedupable memory
US15/823,549 2017-11-27

Publications (2)

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

Family

ID=62961185

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018010614A Active JP7058132B2 (ja) 2017-01-25 2018-01-25 最大化された重複除去メモリのためのシステム及び方法

Country Status (4)

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

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2020030822A (ja) * 2018-08-21 2020-02-27 三星電子株式会社Samsung Electronics Co.,Ltd. インメモリコンピューティングのための大容量メモリシステム
CN112286966A (zh) * 2020-09-23 2021-01-29 清华大学 一种数据流处理、恢复方法以及设备和存储介质
CN116991855A (zh) * 2023-09-27 2023-11-03 深圳大普微电子股份有限公司 哈希表处理方法、装置、设备、介质、控制器及固态硬盘

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109189349A (zh) * 2018-10-16 2019-01-11 深圳忆联信息系统有限公司 一种提升固态硬盘复写性能的方法及其系统
CN112257368B (zh) * 2019-07-02 2023-08-01 上海复旦微电子集团股份有限公司 时钟布局方法、装置、eda工具及计算机可读存储介质
CN113595816A (zh) * 2021-07-16 2021-11-02 清华大学 一种数据流测算方法、设备和存储介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009087021A (ja) * 2007-09-28 2009-04-23 Hitachi Ltd ストレージ装置及びデータ重複排除方法
JP2014513345A (ja) * 2011-04-08 2014-05-29 マイクロン テクノロジー, インク. データ重複排除

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4060847B2 (ja) * 2004-12-22 2008-03-12 株式会社東芝 メモリ管理装置、コンピュータシステム及びメモリ管理方法
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 (zh) * 2011-02-23 2013-11-13 运软网络科技(上海)有限公司 一种在虚拟化环境中管理资源的系统及其实现方法
US9501421B1 (en) 2011-07-05 2016-11-22 Intel Corporation Memory sharing and page deduplication using indirect lines
KR20130064518A (ko) * 2011-12-08 2013-06-18 삼성전자주식회사 저장 장치 및 그것의 동작 방법
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 (zh) 2013-03-08 2018-08-14 英特尔公司 硬件支持的存储日志记录
KR20140114515A (ko) * 2013-03-15 2014-09-29 삼성전자주식회사 불휘발성 메모리 장치 및 그것의 중복 데이터 제거 방법
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 (ja) * 2007-09-28 2009-04-23 Hitachi Ltd ストレージ装置及びデータ重複排除方法
JP2014513345A (ja) * 2011-04-08 2014-05-29 マイクロン テクノロジー, インク. データ重複排除

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2020030822A (ja) * 2018-08-21 2020-02-27 三星電子株式会社Samsung Electronics Co.,Ltd. インメモリコンピューティングのための大容量メモリシステム
CN110851076A (zh) * 2018-08-21 2020-02-28 三星电子株式会社 存储器系统和删除重复存储器系统
JP7517799B2 (ja) 2018-08-21 2024-07-17 三星電子株式会社 インメモリコンピューティングのための大容量メモリシステム
US12099736B2 (en) 2018-08-21 2024-09-24 Samsung Electronics Co., Ltd. Scalable architecture enabling large memory system for in-memory computations
CN112286966A (zh) * 2020-09-23 2021-01-29 清华大学 一种数据流处理、恢复方法以及设备和存储介质
CN116991855A (zh) * 2023-09-27 2023-11-03 深圳大普微电子股份有限公司 哈希表处理方法、装置、设备、介质、控制器及固态硬盘
CN116991855B (zh) * 2023-09-27 2024-01-12 深圳大普微电子股份有限公司 哈希表处理方法、装置、设备、介质、控制器及固态硬盘

Also Published As

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

Similar Documents

Publication Publication Date Title
JP2018120594A (ja) 最大化された重複除去メモリのためのシステム及び方法
US11874815B2 (en) Key-value storage device and method of operating the same
JP6542909B2 (ja) ファイル操作方法及び装置
US11120081B2 (en) Key-value storage device and method of operating key-value storage device
US11270734B2 (en) Method for accessing shingled magnetic recording SMR disk, and server
KR102535828B1 (ko) 메모리 컨트롤러 및 상기 메모리 컨트롤러의 동작 방법
US20150113230A1 (en) Directory storage method and query method, and node controller
US11675709B2 (en) Reading sequential data from memory using a pivot table
CN104020961A (zh) 分布式数据存储方法、装置及系统
JP2017073129A (ja) Nvdimmを含む装置及びそのアクセス方法
CN107665095B (zh) 存储器空间管理的设备、方法及可读存储介质
US11269811B2 (en) Method and apparatus for maximized dedupable memory
US11662932B2 (en) Tiered storage system with defragmentation based on weighted flash fragmentation factor
CN108628761B (zh) 原子命令执行方法与装置
US20150121033A1 (en) Information processing apparatus and data transfer control method
US11907586B2 (en) Storage device configured to support multi-streams and operation method thereof
CN111104435B (zh) 一种元数据组织方法、装置、设备及计算机可读存储介质
KR102623061B1 (ko) 데이터베이스에서 이터레이터 연산을 수행하기 위한 장치
US20230113460A1 (en) Systems and Methods for Key-based Indexing in Storage Devices
CN114968357A (zh) 生成用于多种存储设备版本的操作命令的方法与设备
CN117009279A (zh) 存储器装置的操作方法、计算系统及其操作方法

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