特開2017-188094(P2017-188094A)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 三星電子株式会社の特許一覧

特開2017-188094メモリモジュールの重複メモリ除去方法、及びそのためのメモリモジュール
<>
  • 特開2017188094-メモリモジュールの重複メモリ除去方法、及びそのためのメモリモジュール 図000003
  • 特開2017188094-メモリモジュールの重複メモリ除去方法、及びそのためのメモリモジュール 図000004
  • 特開2017188094-メモリモジュールの重複メモリ除去方法、及びそのためのメモリモジュール 図000005
  • 特開2017188094-メモリモジュールの重複メモリ除去方法、及びそのためのメモリモジュール 図000006
  • 特開2017188094-メモリモジュールの重複メモリ除去方法、及びそのためのメモリモジュール 図000007
  • 特開2017188094-メモリモジュールの重複メモリ除去方法、及びそのためのメモリモジュール 図000008
  • 特開2017188094-メモリモジュールの重複メモリ除去方法、及びそのためのメモリモジュール 図000009
  • 特開2017188094-メモリモジュールの重複メモリ除去方法、及びそのためのメモリモジュール 図000010
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】特開2017-188094(P2017-188094A)
(43)【公開日】2017年10月12日
(54)【発明の名称】メモリモジュールの重複メモリ除去方法、及びそのためのメモリモジュール
(51)【国際特許分類】
   G06F 12/02 20060101AFI20170919BHJP
【FI】
   G06F12/02 530E
【審査請求】未請求
【請求項の数】20
【出願形態】OL
【全頁数】27
(21)【出願番号】特願2017-48554(P2017-48554)
(22)【出願日】2017年3月14日
(31)【優先権主張番号】62/316397
(32)【優先日】2016年3月31日
(33)【優先権主張国】US
(31)【優先権主張番号】15/162517
(32)【優先日】2016年5月23日
(33)【優先権主張国】US
(71)【出願人】
【識別番号】390019839
【氏名又は名称】三星電子株式会社
【氏名又は名称原語表記】Samsung Electronics Co.,Ltd.
(74)【代理人】
【識別番号】110000051
【氏名又は名称】特許業務法人共生国際特許事務所
(72)【発明者】
【氏名】サラ,フレデリック
(72)【発明者】
【氏名】胡, 潮 紅
(72)【発明者】
【氏名】ズン, 宏 忠
(72)【発明者】
【氏名】牛, ディ 民
【テーマコード(参考)】
5B060
【Fターム(参考)】
5B060AA09
5B060AA14
5B060MM18
(57)【要約】
【課題】重複除去アプリケーションを直ちに処理する仮想バケットによる複数のハッシュテーブルを提供する。
【解決手段】重複メモリ除去方法は、ハッシュテーブルアレイを識別する段階、複数の仮想バケットを識別する段階、ハッシュ値を生成するためにデータラインをハッシングする段階、物理的なハッシュバケットの中の意図された物理的なハッシュバケットがデータブロックのための使用可能な空間を有するかを決定する段階、及び物理的なハッシュバケットの隣接位置の物理的なハッシュバケットは、意図された物理的なハッシュバケットとして仮想バケットの中の1つと同一であり、隣接位置の物理的なハッシュバケットの中の1つが意図された物理的なハッシュバケットが使用可能な空間を有さない場合、データブロックのための使用可能な空間を有するかを決定する段階を含む。
【選択図】図1
【特許請求の範囲】
【請求項1】
複数のハッシュテーブル(Hash table)の各々は、ハッシュ関数に対応し、物理的なハッシュバケット(Hash bucket)を含み、各物理的なハッシュバケットはウェイ(Ways)を含み、前記複数のハッシュテーブルの各々は、データを格納するように構成された前記複数のハッシュテーブルから構成されるハッシュテーブルアレイを識別する段階と、
複数の仮想バケット(Virtual bucket)の各々は、いくつかの前記物理的なハッシュバケットを含み、前記複数の仮想バケットの中の他の仮想バケットと少なくとも1つの前記物理的なハッシュバケットを共有し、前記複数の仮想バケットを識別する段階と、
ハッシュ値(Hash value)を生成するためにハッシュ関数の中の該当ハッシュ関数にしたがってデータライン(Data line)をハッシング(Hashing)する段階と、
前記物理的なハッシュバケットの中の意図された物理的なハッシュバケットが前記ハッシュ値にしたがってデータブロックのための使用可能な空間を有するかを決定する段階と、
前記物理的なハッシュバケットの隣接位置の物理的なハッシュバケットは、前記意図された物理的なハッシュバケットとして前記仮想バケットの中の1つと同一であり、前記意図された物理的なハッシュバケットが使用可能な空間を有さない場合、前記隣接位置の物理的なハッシュバケットの中の1つが前記データブロックのための使用可能な空間を有するかを決定する段階と、を含むことを特徴とするメモリモジュールの重複メモリ除去方法。
【請求項2】
前記意図された物理的なハッシュバケットが使用可能な空間を有する場合、前記意図された物理的なハッシュバケットに前記データブロックを格納する段階をさらに含むことを特徴とする請求項1に記載のメモリモジュールの重複メモリ除去方法。
【請求項3】
前記隣接位置の物理的なハッシュバケットの中の1つが使用可能な空間を有し、前記意図された物理的なハッシュバケットが使用可能な空間を有さない場合、前記隣接位置の物理的なハッシュバケットの中の前記1つに前記データブロックを格納する段階をさらに含むことを特徴とする請求項1に記載のメモリモジュールの重複メモリ除去方法。
【請求項4】
前記ハッシュ関数の中の該当ハッシュ関数と連関される前記複数のハッシュテーブルの前記物理的なハッシュバケットがいっぱいに満たされている場合、ハッシュテーブルアレイの前記複数のハッシュテーブルの他のハッシュテーブルに対応するハッシュ関数の中の他のハッシュ関数にしたがって前記データブロックをハッシングする段階と、
前記複数のハッシュテーブルの中の他のハッシュテーブルに前記データブロックを格納する段階と、をさらに含むことを特徴とする請求項1に記載のメモリモジュールの重複メモリ除去方法。
【請求項5】
前記ハッシュテーブルの前記物理的なハッシュバケットの全部がいっぱいに満たされている場合、バッファメモリに前記データブロックを格納する段階をさらに含むことを特徴とする請求項1に記載のメモリモジュールの重複メモリ除去方法。
【請求項6】
仮想バケットインデックス(index)により構成される物理的なラインID(Physical line ID)を利用して前記物理的なハッシュバケットの該当グループに前記複数の仮想バケットの各々を連関させる段階をさらに含むことを特徴とする請求項1に記載のメモリモジュールの重複メモリ除去方法。
【請求項7】
前記データブロックに対応する書込み要請を受信する段階と、
前記データブロックが前記意図された物理的なハッシュバケットを有する前記仮想バケットの中の1つに格納される時、前記書込み要請を捨てる段階と、
前記ハッシュテーブルの参照カウントラインをアップデートする段階と、をさらに含むことを特徴とする請求項1に記載のメモリモジュールの重複メモリ除去方法。
【請求項8】
ハッシュテーブルアレイ内の複数のハッシュテーブルと、
プロセッサと、
メモリと、を含み、
前記複数のハッシュテーブルの各々は、物理的なハッシュバケット及び複数の仮想バケットを含み、前記物理的なハッシュバケットの各々は、データを格納するためにウェイを含み、前記複数の仮想バケットの各々は、いくつかの前記物理的なハッシュバケットを含み、前記メモリは、前記格納されたデータを検索するためのメモリインターフェイスとインターフェイスし、前記メモリインターフェイスに前記検索されたデータを伝送することを特徴とする重複メモリ除去のためのメモリモジュール。
【請求項9】
重複メモリ除去のためのメモリモジュールであって、DRAM(Dynamic random access memory)を含むことを特徴とする請求項8に記載の重複メモリ除去のためのメモリモジュール。
【請求項10】
前記ハッシュテーブルアレイにデータブロックを格納するために前記メモリインターフェイスから書込み要請を受信し、
前記物理的なハッシュバケットの意図された物理的なハッシュバケットを決定するために前記データブロックにハッシュ関数を遂行し、
前記意図された物理的なハッシュバケット、又は前記意図された物理的なハッシュバケットが属する前記仮想バケットの中の任意の仮想バケットに位置する前記物理的なハッシュバケットの隣接位置の物理的なハッシュバケットの中のいずれか1つに前記データブロックが事前に格納されたかを決定し、
前記データブロックが事前に格納されない時、そして前記意図された物理的なハッシュバケット又は前記隣接位置の物理的なハッシュバケットの中のいずれか1つが使用可能な空間を有する時、前記データブロックを前記意図された物理的なハッシュバケット又は前記隣接位置の物理的なハッシュバケットの中のいずれか1つに格納することを特徴とする請求項8に記載の重複メモリ除去のためのメモリモジュール。
【請求項11】
隣接位置の物理的なハッシュバケット及び前記意図された物理的なハッシュバケットが全ていっぱいに満たされている場合にデータを格納するためのバッファメモリをさらに含むことを特徴とする請求項10に記載の重複メモリ除去のためのメモリモジュール。
【請求項12】
前記隣接位置の物理的なハッシュバケット及び前記意図された物理的なハッシュバケットがいっぱいに満たされているかを決定し、
前記隣接位置の物理的なハッシュバケット及び前記意図された物理的なハッシュバケットがいっぱいに満たされている場合に、前記意図された物理的なハッシュバケットではない前記複数のハッシュテーブルの中の他の1つの物理的なハッシュバケットを意図された物理的なハッシュバケットと決定するために前記データブロックに他のハッシュ関数を遂行することを特徴とする請求項10に記載の重複メモリ除去のためのメモリモジュール。
【請求項13】
前記ハッシュテーブルアレイの前記複数のハッシュテーブルの全部の前記物理的なハッシュバケットがいっぱいに満たされている場合にデータを格納するためのバッファメモリをさらに含むことを特徴とする請求項12に記載の重複メモリ除去のためのメモリモジュール。
【請求項14】
複数のハッシュテーブルの各々は、複数の物理的なハッシュバケットを含み、前記複数の物理的なハッシュバケットの各々は、複数のウェイを含み、前記複数の物理的なハッシュバケットの各々は、いくつかの前記複数の物理的なハッシュバケットを含む複数の仮想バケットと連関され、前記複数のハッシュテーブルにより構成されるハッシュテーブルアレイにデータブロックを格納するための前記データブロックに対応する書込み要請を受信する段階と、
ハッシュ値を生成するために該当ハッシュ関数にしたがって前記データブロックをハッシングする段階と、
前記ハッシュ値に基づいて前記複数の物理的なハッシュバケットの中の意図された物理的なハッシュバケットを決定する段階と、
前記意図された物理的なハッシュバケット内に同一のデータブロックが格納されているかを決定する段階と、
前記同一のデータブロックが前記意図された物理的なハッシュバケットに格納されていない場合、前記意図された物理的なハッシュバケットとして前記複数の仮想バケットの中の同一の仮想バケットの他の物理的なハッシュバケットの中の1つに前記同一のデータブロックが格納されるかを決定する段階と、を含むことを特徴とするメモリモジュールの重複メモリ除去方法。
【請求項15】
前記意図された物理的なハッシュバケットとして前記複数の仮想バケットの中の前記同一の仮想バケットの他の物理的なハッシュバケットの中の任意の物理的なハッシュバケットに前記同一のデータブロックが格納されない場合、前記意図された物理的なハッシュバケットがいっぱいに満たされているかを決定する段階と、
前記意図された物理的なハッシュバケットがいっぱいに満たされていない場合、前記意図された物理的なハッシュバケットに前記データブロックを格納する段階と、をさらに含むことを特徴とする請求項14に記載のメモリモジュールの重複メモリ除去方法。
【請求項16】
前記意図された物理的なハッシュバケットがいっぱいに満たされている場合、前記意図された物理的なハッシュバケットとして前記複数の仮想バケットの中の前記同一の仮想バケットの他の物理的なハッシュバケットの全部がいっぱいに満たされているかを決定する段階と、
前記他の物理的なハッシュバケットの中の1つがいっぱいに満たされていない場合、前記物理的なハッシュバケットの中の1つに前記データブロックを格納する段階と、をさらに含むことを特徴とする請求項15に記載のメモリモジュールの重複メモリ除去方法。
【請求項17】
前記意図された物理的なハッシュバケットとして前記仮想バケットの中の同一の仮想バケットの前記他の物理的なハッシュバケットがいっぱいに満たされている場合、前記データブロックをバッファメモリに格納する段階をさらに含むことを特徴とする請求項16に記載のメモリモジュールの重複メモリ除去方法。
【請求項18】
前記他の物理的なハッシュバケットの全部がいっぱいに満たされている場合、前記複数のハッシュテーブルの中の他のハッシュテーブルの他の物理的なハッシュバケットの全部がいっぱいに満たされているかを決定する段階と、
前記複数のハッシュテーブルの中の前記他のハッシュテーブルの前記他の物理的なハッシュバケットの全部がいっぱいに満たされている場合、前記ハッシュテーブルアレイの前記複数のハッシュテーブルの中の前記他のハッシュテーブルが使用可能な空間を有するかを決定する段階と、
前記複数のハッシュテーブルの中の前記他のハッシュテーブルが使用可能な空間を有する場合、前記複数のハッシュテーブルの中の前記他のハッシュテーブルに対応する他のハッシュ関数にしたがってデータブロックをハッシングする段階と、
前記複数のハッシュテーブルの中の前記他のハッシュテーブルに前記データブロックを格納する段階と、をさらに含むことを特徴とする請求項16に記載のメモリモジュールの重複メモリ除去方法。
【請求項19】
前記ハッシュテーブルアレイの前記複数のハッシュテーブルの中に使用可能な空間を有する他のハッシュテーブルが無い場合、前記データブロックをバッファメモリに格納する段階をさらに含むことを特徴とする請求項18に記載のメモリモジュールの重複メモリ除去方法。
【請求項20】
前記同一のデータブロックが格納されない場合、前記意図された物理的なハッシュバケットを含む前記仮想バケットの中の1つの物理的なハッシュバケットの中の1つに前記データブロックを格納する段階と、
前記データブロックが格納される前記物理的なハッシュバケットの中の1つに対応する物理的なラインID(PLID)を生成する段階と、
アドレス検索テーブルに前記PLIDを格納する段階と、をさらに含むことを特徴とする請求項14に記載のメモリモジュールの重複メモリ除去方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明はメモリモジュールの重複メモリ除去方法、及びそのためのメモリモジュールに係り、より詳しくは、重複除去アプリケーションを直ちに処理する効率的なメモリモジュールの重複メモリ除去方法、及びそのためのメモリモジュールに関する。
【背景技術】
【0002】
データ重複除去はメモリ装置の容量費用を減らすために、メモリ装置において不必要なデータを減らすことを意味する。データ重複除去において、データ対象/項目(例えば、データファイル)は1つ又はそれ以上のデータライン/チャンク/ブロックに分けられる。同一のデータにより構成された複数のデータブロックを1つの格納されたデータブロックに連関させることによって、データブロックの重複コピーはコンピュータメモリにおいて減少されるか、或いは除去され、メモリ装置のデータ重複ブロックの全体量は減少する。データの不必要なコピーの減少は読出し速度及びメモリ帯域幅を増加させ、潛在的に電力節減をもたらす。
【0003】
したがって、仮に重複したデータコピーが1つに減少されれば、物理的な資源の量は同様であっても、メモリ装置の全体使用可能な容量は増加する。その結果としてメモリ装置の経済的な使用はデータの再書込み(Rewrite)回数の減少を可能にし、メモリに既に格納された重複したデータブロックに対する書込み要請はなくなるので、データ重複除去が適用されたメモリ装置の寿命は、効果的に書込み耐久性を増加させて長くなる。
【0004】
一般的なデータ重複除去方法はCPU中心のアプローチとして重複除去エンジンがCPU又はメモリコントローラ(Memory Controller、MC)に集積されるメモリ内の重複除去(in−memory deduplication)技術を使用する。このような方法は重複をCPUプロセッサが認識でき、そしてメモリコントローラの制御にしたがって重複除去メモリ動作(例えば、コンテンツ検索(Content lookups)、参照カウントアップデート(Reference Count Updates)、等)を提供するようにメモリコントローラと動作する重複除去キャッシュ(Deduplicated Cache、DDC)を具現する。重複除去の方法はまた、重要な経路から変換パッチ(Patch)を除去してデータ読出しを増加させるために変換ラインをキャッシング(Caching)するキャッシュであり、索引バッファ(Lookaside Buffer)と類似である直接変換バッファ(Direct Translation Buffer、DTB)を具現する。
【0005】
重複除去は普通ハードドライブのために使用される。しかし、DRAM(Dynamic Random Access Memory)のような揮発性メモリの領域において、微細な重複除去を提供するのに関心が持たれている。
【0006】
このような背景技術として前述した情報は単なる発明の理解を助けるためであり、従来の技術を構成しない情報を含む。
【発明の概要】
【発明が解決しようとする課題】
【0007】
本発明は上述した技術的課題を解決するためになされたものであって、その目的とするところは重複除去アプリケーションを直ちに処理する効率的なメモリのための仮想バケットによる複数のハッシュテーブルを提供することにある。
【課題を解決するための手段】
【0008】
本発明の実施形態の側面はDRAM(Dynamic random access memory)システムにおけるメモリ重複除去に係る。
【0009】
本発明の実施形態に係るメモリモジュールの重複除去メモリの方法が提供され、この方法において、複数のハッシュテーブルの各々はハッシュ関数に対応し、物理的なハッシュバケットを含み、各物理的なハッシュバケットはウェイ(Ways)を含み、複数のハッシュテーブルの各々は、データを格納するように構成された複数のハッシュテーブルから構成されるハッシュテーブルアレイを識別する段階、複数の仮想バケットの各々はいくつかの前記物理的なハッシュバケットを含み、前記複数の仮想バケットの中の他の仮想バケットと少なくとも1つの前記物理的なハッシュバケットを共有し、複数の仮想バケットを識別する段階、ハッシュ値を生成するためにハッシュ関数の中の該当ハッシュ関数にしたがってデータラインをハッシングする段階、前記物理的なハッシュバケットの中の意図された物理的なハッシュバケットが前記ハッシュ値にしたがって前記データブロックのための使用可能な空間を有するかを決定する段階、及び前記物理的なハッシュバケットの隣接位置の物理的なハッシュバケットは、前記意図された物理的なハッシュバケットとして前記仮想バケットの中の1つと同一であり、前記意図された物理的なハッシュバケットが使用可能な空間を有さない場合、前記隣接位置の物理的なハッシュバケットの中の1つが前記データブロックのための使用可能な空間を有するかを決定する段階を含む。
【0010】
本発明の方法は、前記意図された物理的なハッシュバケットが使用可能な空間を有する場合、前記意図された物理的なハッシュバケットに前記データブロックを格納する段階をさらに含む。
【0011】
本発明の方法は、前記隣接位置の物理的なハッシュバケットの中の1つが使用可能な空間を有し、そして前記意図された物理的なハッシュバケットが使用可能な空間を有さない場合、前記隣接位置の物理的なハッシュバケットの中の前記1つにデータブロックを格納する段階をさらに含む。
【0012】
本発明の方法は、前記ハッシュ関数の中の該当ハッシュ関数と連関される前記複数のハッシュテーブルの前記物理的なハッシュバケットがいっぱいに満たされている場合、前記ハッシュテーブルアレイの前記複数のハッシュテーブルの他のハッシュテーブルに対応するハッシュ関数の中の他のハッシュ関数にしたがって前記データブロックをハッシングする段階、及び前記複数のハッシュテーブルの中の他のハッシュテーブルに前記データブロックを格納する段階をさらに含む。
【0013】
本発明の方法は、前記ハッシュテーブルの前記物理的なハッシュバケットの全部がいっぱいに満たされている場合、バッファメモリに前記データブロックを格納する段階をさらに含む。
【0014】
本発明の方法は、仮想バケットインデックスにより構成される物理的なラインID(Physical line ID)を利用して前記物理的なハッシュバケットの該当グループに前記複数の仮想バケットの各々を連関させる段階をさらに含む。
【0015】
本発明の方法は、前記データブロックに対応する書込み要請を受信する段階、前記データブロックが前記意図された物理的なハッシュバケットを有する前記仮想バケットの中の1つに格納される時、前記書込み要請を捨てる段階、及び前記ハッシュテーブルの参照カウントラインをアップデートする段階をさらに含む。
【0016】
本発明の実施形態に係るメモリの重複除去のためのメモリモジュールが提供され、メモリモジュールはハッシュテーブルアレイ内の複数のハッシュテーブル、プロセッサ、及びメモリを含み、前記複数のハッシュテーブルの各々は物理的なハッシュバケット及び複数の仮想バケットを含み、前記物理的なハッシュバケットの各々はデータを格納するためにウェイを含み、前記複数の仮想バケットの各々はいくつかの前記物理的なハッシュバケットを含み、前記メモリは、前記格納されたデータを検索するためのメモリインターフェイスとインターフェイスし、前記メモリインターフェイスに前記検索されたデータを伝送する。
【0017】
メモリモジュールはDRAM(Dynamic random access memory)を含む。
【0018】
メモリモジュールは、前記ハッシュテーブルアレイにデータブロックを格納するために前記メモリインターフェイスから書込み要請を受信し、前記物理的なハッシュバケットの意図された物理的なハッシュバケットを決定するために前記データブロックにハッシュ関数を遂行し、前記意図された物理的なハッシュバケット、又は前記意図された物理的なハッシュバケットが属する前記仮想バケットの中の任意の仮想バケットに位置する前記物理的なハッシュバケットの隣接位置の物理的なハッシュバケットの中のいずれか1つに前記データブロックが事前に格納されたかを決定し、そして前記データブロックが事前に格納されない時、そして前記意図された物理的なハッシュバケット又は前記隣接位置の物理的なハッシュバケットの中のいずれか1つが使用可能な空間を有する時、前記データブロックを前記意図された物理的なハッシュバケット又は前記隣接位置の物理的なハッシュバケットの中のいずれか1つに格納する。
【0019】
メモリモジュールは、隣接位置の物理的なハッシュバケット及び前記意図された物理的なハッシュバケットが全ていっぱいに満たされている場合にデータを格納するためのバッファメモリをさらに含む。
【0020】
メモリモジュールは、前記隣接位置の物理的なハッシュバケット及び前記意図された物理的なハッシュバケットがいっぱいに満たされているかを決定し、そして前記隣接位置の物理的なハッシュバケット及び前記意図された物理的なハッシュバケットがいっぱいに満たされている場合に、前記意図された物理的なハッシュバケットではない前記複数のハッシュテーブルの中の他の1つの意図された物理的なハッシュバケットを決定するために前記データブロックに他のハッシュ関数を遂行する。
【0021】
メモリモジュールは、前記ハッシュテーブルアレイの前記複数のハッシュテーブルの全部の前記物理的なハッシュバケットがいっぱいに満たされている場合にデータを格納するためのバッファメモリをさらに含む。
【0022】
本発明の実施形態に係るメモリモジュールのメモリ重複除去方法は、複数のハッシュテーブルの各々は複数の物理的なハッシュバケットを含み、前記複数の物理的なハッシュバケットの各々は複数のウェイを含み、前記複数の物理的なハッシュバケットの各々はいくつかの前記複数の物理的なハッシュバケットを含む仮想バケットと連関され、前記複数のハッシュテーブルにより構成されるハッシュテーブルアレイにデータブロックを格納するための前記データブロックに対応する書込み要請を受信する段階、ハッシュ値を生成するために該当ハッシュ関数にしたがって前記データブロックをハッシングする段階、前記ハッシュ値に基づいて前記複数の物理的なハッシュバケットの中の意図された物理的なハッシュバケットを決定する段階、前記意図された物理的なハッシュバケット内に同一のデータブロックが格納されているかを決定する段階、及び前記同一のデータブロックが前記意図された物理的なハッシュバケットに格納されていない場合、前記意図された物理的なハッシュバケットとして前記複数の仮想バケットの中の同一の仮想バケットの他の物理的なハッシュバケットの中の1つに前記同一のデータブロックが格納されるかを決定する段階を含む。
【0023】
本発明の方法は、前記意図された物理的なハッシュバケットとして前記複数の仮想バケットの中の前記同一の仮想バケットの他の物理的なハッシュバケットの中の任意の物理的なハッシュバケットに前記同一のデータブロックが格納されない場合、前記意図された物理的ハッシュバケットがいっぱいに満たされているかを決定する段階、及び前記意図された物理的なハッシュバケットがいっぱいに満たされていない場合、前記意図された物理的なハッシュバケットに前記データブロックを格納する段階をさらに含む。
【0024】
本発明の方法は、前記意図された物理的なハッシュバケットがいっぱいに満たされている場合、前記意図された物理的なハッシュバケットとして前記複数の仮想バケットの中の前記同一の仮想バケットの他の物理的なハッシュバケットの全部がいっぱいに満たされているかを決定する段階、前記他の物理的なハッシュバケットの中の1つがいっぱいに満たされていなない場合、前記物理的なハッシュバケットの中の1つに前記データブロックを格納する段階をさらに含む。
【0025】
本発明の方法は、前記意図された物理的なハッシュバケットとして前記仮想バケットの中の同一の仮想バケットの前記他の物理的なハッシュバケットがいっぱいに満たされている場合、前記データブロックをバッファメモリに格納する段階をさらに含む。
【0026】
本発明の方法は、前記他の物理的なハッシュバケットの全部がいっぱいに満たされている場合、前記複数のハッシュテーブルの中の他のハッシュテーブルの他の物理的なハッシュバケットの全部がいっぱいに満たされているかを決定する段階、前記複数のハッシュテーブルの中の前記他のハッシュテーブルの前記他の物理的なハッシュバケットの全部がいっぱいに満たされている場合、前記ハッシュテーブルアレイの前記複数のハッシュテーブルの中の他のハッシュテーブルが使用可能な空間を有するかを決定する段階、前記複数のハッシュテーブルの中の前記他のハッシュテーブルが使用可能な空間を有する場合、前記複数のハッシュテーブルの中の前記他のハッシュテーブルに対応する他のハッシュ関数にしたがってデータブロックをハッシングする段階、及び前記複数のハッシュテーブルの中の前記他のハッシュテーブルに前記データブロックを格納する段階をさらに含む。
【0027】
本発明の方法は、前記ハッシュテーブルアレイの前記複数のハッシュテーブルの中に使用可能な空間を有する他のハッシュテーブルが無い場合、前記データブロックをバッファメモリに格納する段階をさらに含む。
【0028】
本発明の方法は前記同一のデータブロックが格納されない場合、前記意図された物理的なハッシュバケットを含む前記仮想バケットの中の1つの物理的なハッシュバケットの中の1つに前記データブロックを格納する段階、前記データブロックが格納される前記物理的なハッシュバケットの中の1つに対応する物理的なラインID(PLID)を生成する段階、及びアドレス検索テーブルに前記PLIDを格納する段階をさらに含む。
【発明の効果】
【0029】
本発明の実施形態による重複除去DRAMメモリモジュールによれば、メモリアクセスは減少でき、DRAMシステムの寿命を延長できる。
【図面の簡単な説明】
【0030】
本発明のこれら及び他の側面は明細書、請求の範囲、そして添付した図面を参照して理解できる。
図1】本発明の実施形態による重複除去DRAMシステムアーキテクチャのブロック図である。
図2図1の実施形態の重複除去メモリモジュール内メモリ形態のブロック図である。
図3図2の実施形態のハッシュテーブルメモリのハッシュテーブルのブロック図である。
図4】本発明の実施形態による複数のハッシュテーブルアレイのブロック図である。
図5】本発明の実施形態に係る仮想バケットと特定物理的なハッシュバケットを連関させるためのホップワード(Hopwords)を生成するための2次元のアレイを示す図である。
図6】本発明の実施形態によるハッシュテーブルメモリのデータブロックのアドレッシングのための物理的なラインID(PLID)のブロック図である。
図7】本発明の実施形態による、ホップスコッチ方法を使用するメモリモジュールの複数のハッシュテーブルアレイにデータを書き込む過程を示す順序図である。
図8】本発明の実施形態による、メモリモジュールの複数のハッシュテーブルアレイからデータを読み出す過程を示す順序図である。
【発明を実施するための形態】
【0031】
本発明の特徴、及びそれを達成する方法は実施形態の詳細な説明及び添付した図面を参照すれば、明確になる。以下、例示的な実施形態を類似な参照番号は類似な構成要素を指称する添付図面を参照して詳細に説明する。しかし、本発明は様々な多様な形態に具現でき、本明細書において単に例示した実施形態に限定されない。むしろ、このような実施形態はこの開示が徹底して、完全になるための例として提供され、当業者に本発明の特徴及び機能を完全に伝達する。したがって、本発明の技術分野における通常の知識を有する者が本発明の特徴及び機能を完璧に理解するために必要としないプロセス、要素、及び技術は説明しない。特別に言及しない限り、類似な参照番号は添付した図面及び記述した説明により類似な構成要素を示し、したがって、それに対する説明は反複しない。図面において、構成要素、層、及び領域の相対的な大きさは明確性のために誇張される。
【0032】
ここで第1、第2、第3等の用語は多様な要素、成分、領域、層、及び/又はセクションを説明するために使用するが、このような要素、成分、領域、層、及び/又はセクションはこのような用語によって制限されないと理解されるべきである。このような用語は他の要素、成分、領域、層、又はセクションから1つの要素、構成、領域、層又はセクションを区別するために使用する。したがって、後述する第1構成要素、成分、領域、層、又はセクションは本発明の思想及び範囲を逸脱せずに、第2構成要素、成分、領域、層、又はセクションを指称できる。
【0033】
1つの要素又は図面に示した他の構成要素又は特徴との特徴的な関係を説明するための説明を容易にするために「下の」、「下」、「低い」、「特定部分の下」、「上に」、「上部」などの空間的であり、相対的な用語をここで使用する。空間的に相対的な用語は図面に示した方向に加えて使用又は動作において装置の他の方向を含むように意図したと理解されるべきである。例えば、仮に図面の装置を裏返したら、他の構成要素又は特徴の「下」又は「下の」又は「特定部分の下」として説明した構成要素は他の構成要素又は特徴の「上に」合わせられるようになる。したがって、「下の」又は「特定部分の下」の例示的な用語は上又は下方向の全てを含む。これとは異なり装置は配置され(例えば、90°は他の方向に回転され)、そして空間的に相対的な技術語はそれにしたがって解釈されなければならない。
【0034】
要素、層、領域、又は成分が他の要素、層、領域又は成分「に」、「に結合された」、「に連結された」と言及する時、それは他の要素、層、領域、又は成分「に直接的に」、「に直接的に結合された」、「に直接的に連結された」であるか、或いは1つ又はそれ以上の間の要素、層、領域、又は成分が存在する。また、要素又は層が2つの要素又は層の間として言及される時、それは単なる要素又は層が2つの要素又は層間にあるか、又は1つ又はそれ以上の間の要素又は層がまた存在する。
【0035】
次に、x軸、y軸、及びz軸は直角座標システムの3つの軸に限定されず、広い意味に解釈される。例えば、x軸、y軸、及びz軸は互いに直交するか、又は互いに直交しない他の方向を示す。
【0036】
本明細書において使用する用語は単なる特定な実施形態を説明するためであり、本発明を制限しない。本明細書において、文脈上に特に明確に記述しない限り、単数形態の「1つ」は複数の形態も含む。「構成される」、「構成されている」、「含む」、及び「含んでいる」の用語を本明細書において使用する時、このような用語は定められた特徴、整数、段階、動作、要素、及び/又は成分が存在を明示するが、1つ又はそれ以上の他の特徴、整数、段階、動作、要素、成分、及び/又はそれらのグループの追加又は存在は不可能ではない。本明細書において使用する「及び/又は」の用語は1つ又はそれ以上の列挙された項目と連関した任意のそしてすべての組合を含む。「少なくとも1つ」のような表現は要素の全体リストを修正し、そしてリストの個別要素を修正しない。
【0037】
本明細書において使用する「大体に」、「約」の用語及びこれと類似な用語は近似値の用語として使用し、程度の用語として使用せず、本発明の当業者によって識別される測定された又は計算された値の固有な変動を考慮するためである。また、本発明の実施形態を記述する時「することができる」の使用は「本発明の1つ以上の実施形態」を意味する。本明細書において使用されたように、「使用」、「使用される」、そして「使用された」の用語は「利用」、「利用される」、そして「利用された」の用語の同義語として各々看做される。また、「例示」の用語は例又は図面を意味する。
【0038】
特定の実施形態が別に具現される場合、特定プロセス順序は説明する順序と異なって遂行できる。例えば、説明された連続的な2つのプロセッサは同時に概ね遂行されるか、或いは説明する順序と反対順序に遂行もできる。
【0039】
本明細書において記述する本発明の実施形態による電子又は電気装置及び/又は他の任意の関連した装置又は要素は任意の適合なハードウェア、ファームウェア(例えば、Application Specific Integrated Circuit、ASIC)、ソフトウェア、又はソフトウェア、ファームウェア、及びハードウェアの組合せを利用して具現される。例えば、このような装置の多様な要素は1つの集積回路(Integrated Circuit、IC)チップ又は分離されたICチップにより形成される。また、このような装置の多様な要素は柔軟な印刷回路フィルム(Flexible Printed Circuit Film)、TCP(Tape Carrier Package)、印刷回路基板(Printed Circuit Board、PCB)上に具現されるか、或いは1つの基板上に形成される。また、このような装置の多様な要素はコンピュータプログラム命令を実行し、本明細書において説明する多様な機能を遂行するための他のシステム要素と相互作用する1つ以上のコンピューティング装置により、又は1つ以上のプロセッサにより遂行されるプロセス又はスレッド(Thread)である。
【0040】
コンピュータプログラム命令は、例えばRAM(Random Access Memory)のような標準メモリ装置を利用するコンピューティング装置により具現されるメモリ内に格納される。コンピュータプログラム命令はまた、例えばCD−ROM、フラッシュドライブ(Flash Drive)、又はそのような他の一時的ではないコンピュータ読出し可能なメディア(Non−transitory Computer Readable Media)に格納されることもあり得る。また、本発明の当業者は本発明の例示的な実施形態の思想及び範囲を逸脱せずに、多様なコンピューティング装置の機能は単一コンピューティング装置に統合されるか、或いは集積され、特定コンピューティング装置の機能が1つ又はそれ以上の他のコンピューティング装置に分散されることを認識しなければならない。
【0041】
特に定義しない限り、本明細書において使用するすべての用語(技術的そして科学的用語を含む)は本発明が属する技術分野における当業者によって一般的に理解される同一の意味を有する。一般的に使用される事前に定義されたこのような用語は本明細書及び/又は関連技術の文脈においてそれらの意味と一致する意味を有すると解釈されるべきであり、本明細書において明確に定義されない限り、理想化されるか、或いは過度に形式的なことと解釈されてはならない。
【0042】
図1は本発明の実施形態による重複除去DRAMシステムアーキテクチャのブロック図である。
【0043】
図1を参照すれば、コンピュータメモリとして機能するために、重複除去メモリは、原本データのコンテンツ及び重複除去された固有のメモリブロックのセット(Set、集合)の間の関係を記録するための「変換(Translation)」として公知された機能を遂行し、記録された関係は圧縮された形態により記録される。例えば、原本データのアドレスは検索テーブル(Lookup Table)に格納される。
【0044】
一般的に、CPUのプロセッサ(Processor)110は物理的なメモリ(例えば、重複除去DRAMメモリモジュール130)に直接的なアクセスが難しく、上述したアクセスはメモリライン(Memory Lines)のアレイ(Array)としてのメモリコントローラ120によって代わりに管理される。CPU中心の重複除去システムはデータがメモリシステムに到達する前にCPU内部のデータをキャッシュすることを探索(Seek)する。
【0045】
本発明の実施形態による重複除去DRAMシステムアーキテクチャ(Deduplication DRAM System Architecture)100は従来のCPU中心の重複除去ではないメモリ中心の重複除去を使用し、重複除去DRAMメモリモジュール130はプロセッサ110からの命令が無い場合においてもメモリ重複除去を遂行することを意味する。重複除去DRAMシステムアーキテクチャ100はまたメモリの容量利得を増加させ、高容量メモリソリューションを提供するために、重複除去DRAMメモリモジュール130に格納された設定可能な重複除去アルゴリズムを使用する。即ち、CPU中心の重複除去と異なり、本発明の実施形態による重複除去DRAMシステムアーキテクチャ100はRAMモジュール(例えば、重複除去DRAMメモリモジュール130)内に含まれたすべての重複除去知能(Intelligence)を有する。したがって、重複除去はオペレーティングシステム140内カーネルモジュール(Kernel Module)が分からない間に重複除去DRAMメモリモジュール130内における遂行が可能であり、これによって重複除去DRAMメモリモジュール130の容量が増加する。即ち、重複除去は微細なブロック単位(fine grain)に対して行われ、そして揮発性メモリ(例えば、重複除去DRAMメモリモジュール130)内において動作するので、本発明の実施形態によるすべての重複除去情報は重複除去DRAMメモリモジュール130の自体内において発生し、オペレーティングシステム140内カーネルモジュールは重複除去DRAMメモリモジュール130内において遂行される重複除去動作の細部事項に気づかない(Unware)。
【0046】
本発明の実施形態は重複除去DRAMメモリモジュール130としてDRAMを使用して説明したが、他の種類のメモリが本発明の他の実施形態に使用できることが理解されなければならない。また、本発明の実施形態による重複除去DRAMシステムアーキテクチャ100は多様な種類のメモリとインターフェイシング(Interfacing)のが可能である。即ち、本発明の実施形態による重複除去DRAMメモリモジュール130はメモリコントローラ120を通じて多様な他の種類のメモリインターフェイスと連関される(例えば、DDR4(Double Data Rate Fourth−Generation Synchronous Dynamic Random−Access Memory)、コンピュータと1つ以上の周辺装置とを連結するための直列拡張バス標準であるPCIe(Peripheral Component Interconnect Express)、DDR−T、及びKTI)。したがって、重複除去DRAMシステムアーキテクチャ100に重複除去DRAMメモリモジュール130を集積するために他のアーキテクチャが使用されることに注目しなければならない。
【0047】
また、本発明の実施形態を具現するために、既存DRAMメモリモジュールに若干の変化(例えば、ドライバーアップグレード(Driver Upgrade))が必要であるが、ソフトウェア具現はオペレーティングシステム140(Operating System、OS)/CPUモジュール又はプロセッサ110の物理的な変化無しに本発明の実施形態による重複除去DRAMシステムアーキテクチャ100を使用できる。
【0048】
重複除去、コンテンツアドレス付与(Content Addressability)、保安(Security)、メモリ内処理(Processor−in−memory、PIM)、連関されたアドレスが列アドレスであり、DRAM内データビットが列アドレス及び行アドレスの交差点に位置するセルに格納される行アドレスであること等をDRAMに通知するためにDRAMに伝送される信号であるRAS(Row Address Strobe)のようなDRAMの知能的なプロトコルのために、本発明の実施形態による重複除去DRAMシステムアーキテクチャ100は、重複除去DRAMメモリモジュール130にSoC(System on Chip)を具現する。
【0049】
重複除去DRAMシステムアーキテクチャ100はまたプロセッサ110がメモリコントローラ120と関連された仮想密度管理(Virtual Density Management)、スマートデータ配置(Smart Data Placement)、そしてDRAMに詳しいAPIs(Application Programming Interfaces)、等を可能にするスマートシステムソフトウェア(Smart System Software)を有する。
【0050】
重複除去DRAMメモリモジュール130は多様なフォームファクタ(form factors、例えばDIMM(Dual In−line Memory Module)、2.5In、FHHL(Full Height Half Length)、HHHL(Half Height Half Length)、FHFL(Full Height Full Length)、等)の高容量DRAMメモリモジュールのような3DS DRAM構成要素をさらに有する。
【0051】
したがって、本発明の実施形態による重複除去DRAMシステムアーキテクチャ100を使用するメモリ中心の重複除去システムの提供によって、重複除去書込みプロセス(Deduplicate Write Process)はメモリインターフェイスにより直接的に遂行され、重複除去DRAMメモリモジュール130の容量が増加する。
【0052】
図2図1の実施形態の重複除去DRAMメモリモジュール内メモリ形態のブロック図であり、図3図2の実施形態のハッシュテーブルメモリのハッシュテーブルのブロック図である。
【0053】
図2を参照すれば、本発明の実施形態による重複除去DRAMメモリモジュール130は重複除去アルゴリズムアーキテクチャを有し、ここで重複除去メモリDRAMモジュール130の内部のメモリ領域は3つの領域に分類される。3つの領域は重複除去されたデータブロック(Blocks of data)が格納される位置を示すためのアドレス検索テーブルメモリ(Address Lookup Table Memory、以下、ALUTM)210、重複除去されたデータブロックを格納するためのハッシュテーブルメモリ(Hash Table Memory)220、及びハッシュテーブルメモリのハッシュテーブルのハッシュウェイ(Hash ways)がいっぱいに満たされている時にデータを格納するための超過/バッファメモリ(Overflow/Buffer Memory)230を含む。
【0054】
データブロックが重複除去DRAMメモリモジュール130に入力される時、重複除去アルゴリズムはデータブロックが新しいものであるか、以前に格納されていないALUTM210内に任意の対応するアドレスが無いデータブロックであるかを決定するために動作する。このような動作を遂行するために、重複除去アルゴリズムはALUTM210にアクセスする。同一のデータブロックは1つの項目により格納されることを保障するために、ALUTM210内ポインター(例えば、後述する図5において説明する物理的なラインID(Physical Line ID、PLID))はハッシュテーブルメモリ220のデータブロック格納位置を示す。即ち、ALUTM210はハッシュテーブル内において検索アドレスマッピングポインター(Lookup Address Mapping Pointer、例えばPLID)と連関される位置(例えば、アドレス)のための格納装置である。したがって、データブロックがハッシュテーブルメモリ220に以前に格納されている場合、ALUTM210内ポインターは同一のデータブロックが格納されたハッシュテーブルメモリ220のアドレスを示すことが可能であり、これによってデータブロックの重複コピーを格納する必要を除去し、重複除去DRAMメモリモジュール130の容量は増加する。
【0055】
図3を参照すれば、メモリ重複除去は高い水準の重複除去、そしてそれに対応する、重複除去DRAMメモリモジュール130の大きなメモリ容量を保障するために、相対的に効率的であるが簡単な、多重ウェイハッシュテーブル/ハッシュアレイ(Multiple−way Hash Table/Hash Array)380(以下ハッシュテーブル380という)を使用する。本発明の実施形態による重複除去DRAMメモリモジュール130のハッシュテーブルメモリ220には1つ以上のハッシュテーブル380があり、データブロックが唯一であるか否かの決定において、使用される。ハッシュテーブル380はハッシュバケット(Hash Buckets、行)310及びハッシュウェイ(Hash Ways、列)320により構成される2次元アレイとして考慮される。即ち、本発明の実施形態によるハッシュテーブル380はハッシュバケット310のm個の行を含み、各ハッシュバケット310はハッシュバケット310の容量を示すデータライン/スロット/項目/ハッシュウェイ320のn個の列を含む(m及びnは整数)。
【0056】
ハッシュテーブルメモリ220のハッシュウェイ320にデータブロックが格納され、ALUTM210のアドレスポインターは特定データブロックと連関された特定のハッシュバケット310及び特定のハッシュウェイ320を示す値を格納する。したがって、アドレス(例えば、64−ビットアドレス)はALUTM210に索引され、それから、アドレスに対応するデータブロックを格納するハッシュテーブル380のハッシュバケット310の連関されたハッシュウェイ320が決定される。
【0057】
したがって、書込みプロセス(例えば、64−バイト(64−byte)のデータ書込み)の間に、書込み要請(即ち、1つ以上のデータブロックにより構成されるインカミング(Incoming)データを記録するための要請)を受信した後、ハッシュ値が該当ハッシュバケット310及びハッシュウェイ320の決定のためにハッシュ関数/ハッシュアルゴリズム(即ち、インカミングデータが「ハッシュされる」)を利用してインカミングデータに対して計算される。したがって、ハッシュ値はデータブロックが何処に配置されたかを示すか、又は、データブロック(例えば、64バイトのデータブロック)が重複である場合、ハッシュ値はデータブロックがハッシュテーブルメモリ220に既に格納された位置を示す。メモリにデータコンテンツが追加されることによって、m個のハッシュバケット310の中の一部は先ず飽和状態に到達する。したがって、重複除去DRAMメモリモジュール130はハッシュテーブルメモリ220に入らないデータブロックを格納するためのバッファメモリ230を使用する超過予備(Overflow Provision)を含む。その後、原本検索アドレス(Original Lookup Address)は検索され、ALUTM210はインカミングデータのハッシング(Hashing)から計算された検索アドレスにしたがってアップデートされる。
【0058】
書込みプロセスの間に、ハッシュウェイ320の全てがいっぱいに満たされていると判断される時、バッファメモリ230が使用される。即ち、ハッシュテーブル380がいっぱいに満たされておれば、データはバッファメモリ230の重複除去されない超過領域(non−deduplicated overflow region)に配置され、これによって重複除去水準が減少する。したがって、バッファメモリ230は根本的に予約された、標準の、簡単な超過メモリ領域であり、仮想密度過剰予備管理超過(virtual density over−provision management overflow)を具現するためのSOCメモリバッファ/キャッシュとして提供される。データがバッファメモリ230に一旦配置されれば、それ以上ハッシュされず、そしてそれ以上重複除去されない。
【0059】
コンピュータアプリケーションが数回に亘ってメモリに同一のシークェンスの値を格納するよう要求すると、ALUTM210に格納された変換アレイの多重項目はハッシュテーブルメモリ220に格納されたデータブロックの同一のアドレスを参照し、ALUTM210の項目は原本の固有なデータブロックより小さく、効率的な圧縮が達成される。
【0060】
m個のハッシュバケット310の各々はハッシュバケット310の該当ハッシュウェイ320を示すための固有な識別子を含む参照/頻度カウントライン340、及び署名ライン(Signature Line)330をさらに含む。各ハッシュバケット310のための、該当署名ライン330は空いているライン(Free Line)を示すための0、又はコンテンツ検索最適化のための0ではない2次的なハッシュ値の中のいずれか1つを含む。したがって、コンテンツ検索のために、一般的に署名ラインの0項目に基づき空いているラインが割当されるように要請する署名一致がないか、或いは、後続のデータライン読出し及びコンテンツ比較が重複の存在を確認するようにする1つの署名一致が存在する。m個のハッシュバケット310の各々は後述の図5により説明するホップワードライン(Hopword Line)をさらに含む。
【0061】
物理的なラインID(PLID)350はデータをハッシュテーブル380に索引するために使用される。PLID350はALUTM210、ハッシュテーブルメモリ220、又はバッファメモリ230の中のいずれか1つに区別されるメモリラインを職別するために使用される。各メモリラインはハッシュテーブル380に固有のコンテンツを格納するためのデータライン、又は各々のPLID350を格納し、プロセッサバスアドレス(Processor Bus Address)からハッシュテーブル380の重複除去されたデータブロックへのマッピングを提供するための変換ライン(Translation Line)の中のいずれか1つに関連される。即ち、バスアドレスは変換ラインを識別し、順に特定データラインを指定する関連あるPLID350が含まれた変換ライン内項目をさらに識別する。したがって、PLID350は超過タッグ(Overflow Tag)を含むように具現され、特定該当ハッシュテーブル380、該当ハッシュバケットビット、及びPLID350に対応するデータブロックの位置を示す該当ウェイビット(Way Bits)を示すためのデータを含む。
【0062】
各ハッシュバケット310には、ハッシュバケット310にデータを索引するために使用されるlog2(m)−ビットハッシュを生成するアルゴリズムであるハッシュ関数/ハッシュアルゴリズム「h(x)」と連関される(例えば、ハッシュテーブル380が8個のハッシュバケット310を有すれば、ハッシュテーブル380のハッシュ関数は3ビットハッシュを生成する)。即ち、ハッシュ関数h(x)は相対的に大きな入力データ量(例えば、メモリに格納される入力データファイル)をハッシュ関数h(x)に入力することを可能にし、出力データ(例えば、ハッシュ値)の実質的に異なる小さな量がハッシュテーブル380に格納されるようハッシュ関数h(x)によって生成され、出力される。したがって、互いに異なるデータセットは時々同じハッシュ値にハッシュされるので、ハッシュ関数h(x)は圧縮を可能にする。
【0063】
重複除去されたメモリへの書込みにおいて、データファイルに対応する書込み要請を受信した後、重複除去されたメモリは最初に同一/重複データブロックが既にハッシュテーブル380に格納されているか否かを決定するために重複検索を遂行する。そうすると、重複除去されたメモリはALUTM210及びハッシュテーブルメモリ220の項目をアップデートする。例えば、参照/頻度カウントライン340はハッシュテーブルメモリ220内の原本検索アドレス(即ち、1ずつ減少される)の頻度カウントをアップデートし、参照カウントが0に到達すれば、該当データブロックは削除される。それだけでなく、新しいPLID350がALUTM210により生成される。
【0064】
コンテンツ検索と称される重複検索の間に、重複除去DRAMメモリモジュール130は書き込まれるよう意図されるデータファイル又はその一部の既存のインスタンス(Pre−existing instances)を探す。ハッシュテーブルメモリ220に格納されたデータの既存のインスタンスがある場合、重複検索は該当データラインを示すPLID350を返す。データの既存のインスタンスが見つからない場合は、該当データブロックのための新しいデータラインをハッシュテーブル380の空間に割当し、そこにコンテンツを書き込み、そして新しいPLID350を返すことによって生成される。コンテンツはバスアドレスによって決定されたオフセットによりALUTM210にPLID350を格納することによって記録される。
【0065】
ハッシュテーブル380にデータライン「C」を挿入するために、Cの該当ハッシュ関数「h(C)」は数学的演算により計算される。データラインCのためにハッシュ関数が計算されれば、ハッシュテーブルT(h(C))の行はデータラインCの挿入を許容するために使用可能な充分な空間があるか否かを知るための(又はハッシュテーブル380に重複されるデータラインCが既にあるか否かを知るための)コンテンツ検索動作によってチェックされる。
【0066】
前述したように、ハッシュテーブル380の各ハッシュバケット310は追加的に署名ライン330及び参照/頻度カウントライン340をさらに含み、署名ライン330の署名332及び参照/頻度カウントライン340の参照カウント342が様々な数量を各ハッシュバケット310に満たすのに充分に小さく設計される事実によって署名ライン330及び参照/頻度カウントライン340の各々は1つのハッシュウェイ320を占有する。即ち、ハッシュテーブル380において、ハッシュテーブル380の1つの全体列は各々ハッシュバケット310に属する署名ライン330に割当され、1つの全体列は各々ハッシュバケット310に属する参照/頻度カウントライン340に割当される。
【0067】
データライン「C」のような実際データブロックをハッシュテーブル380に加えながら、ハッシュテーブル380にはALUTM210に格納された該当PLID350を各個別的な重複除去されたデータラインのハッシュテーブル380内アドレスにマッチングすることによって後にアクセスされるデータが満たされる。ハッシュテーブル380内アドレスはデータが位置する特定ハッシュバケット310及び特定ハッシュウェイ320を識別すること(例えば、ハッシュテーブル380の行及び列を識別すること)によって識別される。したがって、ハッシュテーブル380に格納される各データブロックのために、データブロックの位置を示すALUTM210に格納される該当PLID350によって識別される1つ以上の該当アドレスがある。ハッシュテーブル380がデータによりいっぱいに満たされれば、新しく導入されるデータは重複除去されない超過領域/バッファメモリ230に配置され、これによって重複水準が減少する。
【0068】
重複除去されたメモリからの読出しにおいて、重複除去されたメモリはハッシュテーブルメモリ220からのデータライン又はバッファメモリ230からの超過ラインの中のいずれか1つのコピーを返す。例えば、格納されたデータが読み出される時、読出し要請を受信した後、ハッシュテーブル380の該当アドレスがALUTM210に格納されたPLID350を利用して検索される。そうすると、各アドレスに対応するブロックが検索され、再組立される。
【0069】
図4は本発明の実施形態による複数のハッシュテーブルアレイのブロック図である。
【0070】
図4を参照すれば、本発明の実施形態による重複除去DRAMシステムアーキテクチャは複数のハッシュテーブル(Multiple Hash Tables、MHT)480により構成されるハッシュテーブルアレイ400を使用し、各々の複数のハッシュテーブル480はm個のハッシュバケット410を含み、各ハッシュバケット410はn個のハッシュウェイ420を含む。本発明の実施形態においてはハッシュテーブル480及びハッシュバケット410をそれらの大きさが一定であると説明したが(例えば、m及びnの整数として説明した)、他の実施形態において、同一の複数のハッシュテーブルアレイ内における他のハッシュテーブルは異なる数のハッシュバケットを有し、そして同様に、複数のハッシュテーブルアレイ内に他のハッシュバケット、又は同一のハッシュテーブル内に異なる数のハッシュウェイを有する。それだけでなく、複数のハッシュテーブル480が集合的に利用され、互いに他のハッシュテーブル480は互いに独立である(例えば、互いに異なるハッシュテーブル480は各々の互いに異なるハッシュ関数を有するか、或いは共通のハッシュ関数を有する。)
【0071】
ハッシュテーブルアレイ400がk個の並列ハッシュテーブル(T1、T2、…、Tk、kは整数)を含み、各ハッシュテーブル480は分離され、独立的なハッシュ関数(h1(x)、h2(x)、…、hk(x))を各々使用する場合、各々のハッシュテーブル(T1、T2、…、Tk)はm個のハッシュバケット410を含むので、ハッシュ関数(h1(x)、h2(x)、…、hk(x))は相変わらず、log2(m)−ビットのハッシュを生成し、そして各ハッシュバケット410はn個のハッシュウェイ420を含むので、3次元(3D)のハッシュテーブルアレイ(例えば、複数のハッシュテーブルアレイ)の容量はmxnxkである。
【0072】
各ハッシュテーブル480はどのようにしてデータが索引されるかを決定する1つのハッシュ関数に対応する。書き込まれるためのインカミングデータをハッシングすることによって、結果計算(例えば、検索アドレス及びキーを含むハッシュ値)はキー及び値が比較され、そして値が一致する場合、該当ハッシュバケット410の参照/頻度カウントライン340は増加され、これによってALUTM210の追加的なPLID350は特定ラインを示す。
【0073】
従来のハッシュテーブルと異なり、本発明の実施形態による複数のハッシュテーブル480は複数の仮想バケット/仮想バケット(Virtual Bucket、VB)460を含み、仮想バケット460は複数の物理的なハッシュバケット/物理的なハッシュバケット410により構成される。以下において「物理的なハッシュバケット」は前述したハッシュバケット310を示し、仮想バケット460を前述したハッシュバケット310から区別するために使用される。
【0074】
各仮想バケット460は該当ハッシュテーブル480のm個の物理的なハッシュバケット410のH個を含み、Hはmより小さい整数である。しかし、同一のハッシュテーブル480において仮想バケット460の中の他の仮想バケットは1つ以上の物理的なハッシュバケット410を共有できることに注目しなければならない。後述するように、本発明の実施形態による仮想バケット460の使用によって、第4次元が3次元のハッシュテーブルアレイに加えられる。したがって、データを配置し、整列するにおいて大きな柔軟性が提供され、これによって重複除去DRAMシステムアーキテクチャの効率及び圧縮比率が高くなる。
【0075】
本発明の実施形態は、データ配置の柔軟性の水準を高くするために仮想バケット460を使用するが、他の仮想バケット460によって共有される他の物理的なハッシュバケット410を自由にするために、ハッシュテーブル480の中のいずれか1つに格納されたデータブロックは該当仮想バケット460内に、又は他の物理的なハッシュバケット410に移動される。ハッシュテーブル480内において空間を自由にすることによって、重複除去は、使い道がない/重複されたデータを除去することによって達成される。即ち、本発明の実施形態による仮想バケット460の使用によって、制限された該当位置へのハッシュ関数を利用してデータラインをハッシングすることによって生じる厳格な制限はなく、データは隣接/「近い位置」の物理的なハッシュバケット410への配置が可能であり、これは初期の意図された(しかし、占有された)物理的なハッシュバケット410を含む同一の仮想バケット460内に存在する物理的なハッシュバケット410を示す。
【0076】
1つの例として、コンテンツ(例えば、データラインC)はk個のハッシュテーブル(T1(h1(C))、T2(h2(C))、…、Tk(hk(C)))の中のいずれか1つの物理的なハッシュバケット410のいずれか1つに配置される。仮にデータラインCがT1(h1(C))に配置されようとすれば、データラインCがT1(h1(C))により表示される物理的なハッシュバケット410に配置されるための要請をする代わりに、本発明の実施形態は1つの物理的なハッシュバケット410よりさらに大きく、そしてT1(h1(C))により表示される物理的なハッシュバケット410のみならず、H個の物理的な仮想バケット460を含む仮想バケット460を許容する。即ち、仮想バケット460はT1(h1(C))、T1(h1(C)+1)、T1(h1(C)+2)、…、T1(h1(C)+H−1)を含むハッシュテーブル480内において整列された近接しているか、或いは隣接するH個の物理的なハッシュバケット410を含む。
【0077】
したがって、仮想バケット460はデータブロックがハッシュテーブル480内において移動されるか、或いは未来の書込み動作のために空間を自由にすることを可能にする。以前にハッシュテーブル480(ハッシュテーブル480の物理的なハッシュバケット410を含む仮想バケット460内)に入ったデータブロックの移動を可能にする本発明の実施形態の動作はホップスコッチ(Hopscotch)により示される。メモリ重複除去のための複数のハッシュテーブル480を使用するホップスコッチ動作は後述するように改善できる。
【0078】
最初に、重複除去DRAMモジュール130はハッシュテーブル480のハッシュ関数の結果としてハッシュテーブル480にデータラインCを挿入しようとする。しかし、しばしば他のデータラインが同一のハッシュ関数の結果として以前にハッシュテーブル480に入っていることもある。即ち、他のデータラインは、それが異なるにも拘らず、ハッシュ関数の結果としてハッシュテーブル480内の同一の位置に送られる。データラインCが何処に挿入されるか決定するために、動作は先ずT(h(C))として表現される物理的なハッシュバケット410の中において(又は後続の)最初に使用可能な物理的なハッシュバケット410を探す。
【0079】
したがって、データラインCを何処に書き込むかの決定において、T(h(C))として表現される初期に意図された物理的なハッシュバケット410は占有される可能性があるので、最初に使用可能な物理的なバケット410(即ち、データラインが挿入される第1番目の空いた空間)はT(h(C)+f)として表現され、ここで、fは0以上である。T(h(C))として表現される物理的なハッシュバケット410が該当仮想バケット460のH個の物理的なハッシュバケット410の第1番目の物理的なハッシュバケット410であると仮定すれば、仮にfがHより小さければ(即ち、仮に同一仮想バケット460内に占有されない物理的なハッシュバケット410が存在すれば)、データラインCは該当仮想バケット460に配置される。同様に、T(h(C))として表現される物理的なハッシュバケット410が該当仮想バケット460の第2番目の物理的なハッシュバケットであり、fがH−1より小さければ、データラインCは該当仮想バケット460に配置される。
【0080】
しかし、該当仮想バケット460の第1番目の物理的なハッシュバケット410が意図された物理的なハッシュバケット410であると仮定し、仮にfがHより大きいか、或いは同一であれば(即ち、仮想バケット460の物理的なハッシュバケット410にデータラインCが入る可能性がない場合)、たとえデータラインCがその仮想バケット460に当てはまらなくても、動作は次のような方式により仮想バケット460内の空いた空間を作る。例えば、本発明の実施形態による重複除去DRAMメモリモジュール130はT(h(C)+f−1)により表現される物理的なハッシュバケット410がその内に含まれたデータを有するか否かを決定する時までT(h(C)+f−H)により表現される物理的なハッシュバケット410において開始して物理的なハッシュバケット410を探し、その次にT(h(C)+f−H+1)により表現される物理的なハッシュバケット410、及びその他を探す(例えば、仮想バケット460の最初から最後までスキャンする)。その次に、重複除去DRAMメモリモジュール130はT(h(C)+f−H)からT(h(C)+f−1)までの物理的なハッシュバケット410内に入っている任意のデータ対象が空いた空間T(h(C)+f)に配置される可能性あるか否かを決定する。即ち、重複除去DRAMメモリモジュール130はT(h(C)+f−H)からT(h(C)+f−1)までの物理的なハッシュバケットの中のどれが物理的なハッシュバケットT(h(C)+f)を有する共通の仮想バケット460内にいるか否かを決定し、これによってその内に入っているデータを移動させる。その次に、重複除去DRAMメモリモジュール130は発見された最も初期のそのようなデータ対象を空いた空間内に配置し、これによってT(h(C)+e、eはfより小さい整数)により表現される物理的なハッシュバケット410内の新しい空いた空間を作る。このような過程はeがHより小さくなる時まで反複され(例えば、データは連続的な方式(Cascading Fashion)によりハッシュテーブル内において移動される))、これによって該当仮想バケット460内にデータラインCの配置をするために必要である空間を確保する。
【0081】
例えば、図5(b)を参照すれば、本発明の実施形態において、物理的なハッシュバケットPB2を意図された物理的なハッシュバケット410に割当する。意図された物理的なハッシュバケットPB2は仮想バケットVB1と連関されて占有されたので、仮想バケットVB2は最初から最後までスキャンされる(例えば、物理的なハッシュバケットPB2から物理的なハッシュバケットPB5まで)。物理的なハッシュバケットPB3、PB4、及びPB5もまた占有されたので、最初に使用可能な物理的なハッシュバケット410は物理的なハッシュバケットPB6である((即ち、fが4と同一であり、そしてfがHと同一であるか、或いはHより大きく、そして最初に使用可能な物理的なハッシュバケット410は該当仮想バケットVB2に存在しない)。したがって、物理的なハッシュバケットPB5内データは物理的なハッシュバケットPB6に移動され、これによって仮想バケットVB2内空間を確保し、データラインCは該当仮想バケットVB2内(物理的なハッシュバケットPB5内)に配置される。しかし、意図された物理的なハッシュバケットがPB1であれば(即ち、該当仮想バケット460はVB1)、処理過程は物理的なハッシュバケットPB4内のデータが仮想バケットVB1から隣接仮想バケットVB2に、即ち、物理的なハッシュバケットPB5の新しく確保された空間に移動されるように反複される。その後に、データラインCは意図された物理的なハッシュバケットPB1に該当する仮想バケットVB1の物理的なハッシュバケットPB4に書き込まれる。
【0082】
したがって、他の仮想バケット460の重複と看做される他の仮想バケット460による特定物理的なハッシュバケット410の共通所有によって、データは1つの仮想バケット460において他の仮想バケット460に移動され、これによって初期ハッシュバケット410のための空間を作る。
【0083】
他の実施形態において、書込み過程の間に、データブロックをハッシュテーブルアレイ400に書き込む要請を受信した後、重複除去DRAMメモリモジュール130は既存の項目が既にハッシュテーブル480の中の1つにあるか否かをチェックするために、各ハッシュテーブルのデータの価値の全体仮想バケット460を検索する。仮に最初に意図されたハッシュテーブル480がいっぱいに満たされている場合、そしてデータブロックが最初に意図されたハッシュテーブル480により探せない場合(即ち、各物理的なハッシュバケット410の各ハッシュウェイ420が他のデータブロックによって占有された場合)、重複除去DRAMメモリモジュール130はバッファメモリ230にデータを入力することを追求するか、或いはハッシュテーブルアレイ400の他のハッシュテーブル480にデータを入力するかのいずれか1つを追求する。しかし、複数のハッシュテーブルアレイ400のハッシュテーブル480の全部がいっぱいに満たされている場合、データブロックはバッファメモリ230にこぼれる(Spill over)。このような実施形態において、ハッシュテーブルアレイ400内におけるデータ移動は重複除去DRAMメモリモジュール130によって許容されない。したがって、ハッシュテーブルアレイ400内に事前に格納されたデータの移動を許容しないことによって、現在実施形態は(以前に説明した実施形態と異なり)書込み機能に関連したレイテンシ(Latency)を増加させる。
【0084】
即ち、書込み要請を受信した後、本発明の実施形態の重複除去DRAMメモリモジュール130はデータブロックをハッシュし、意図された物理的なブロック(データブロックをハッシングすることによって生成されたハッシュ値によって決定される)、又は同一の仮想バケット460内の任意の他の隣接の物理的なハッシュバケット410が既に格納されたデータブロックを有するかを決定する。仮にデータブロックがそこに格納されていなければ、重複除去DRAMメモリモジュール130はデータブロックを格納するために同一仮想バケット460内に任意の空間が存在するか否かを決定する。仮に空間がなければ、重複除去DRAMメモリモジュール130は簡単にデータブロックをバッファメモリ230に格納するか、又はそうでなければ、バッファメモリ230にデータブロックを格納する前にハッシュテーブルアレイ400の他のところに任意の空間が存在するかを決定する。意図された仮想バケット460に空間を確保するために仮想バケットの間において他のデータブロックの移動に対する動作が遂行されないので、現在実施形態の重複除去DRAMメモリモジュール130と連関されたテールレイテンシ(Tail Latency)は以前に説明した実施形態を超えて向上する。
【0085】
図5(a)、図5(b)、及び図5(c)は本発明の実施形態に係る仮想バケットと特定物理的なハッシュバケットを連関させるためのホップワード(Hopwords)を生成するための2次元のアレイを示す図である。
【0086】
図5(a)、図5(b)、及び図5(c)を参照すれば、本発明の実施形態に係る、多様な仮想バケット460はホップワード値591又はホップワードベクトル592の内のいずれか1つを利用し、データの移動を効果的に追跡するために仮想バケット利用値を利用してそれらの該当物理的なハッシュバケット410と連関される。各占有された物理的なハッシュバケット410は1つの仮想バケット460に該当するので、ホップワード値591又はホップワードベクトル592はどの仮想バケット460が占有された物理的なハッシュバケット410に該当するかを追跡するために使用される。
【0087】
本発明の例において、4個の仮想バケットVB0、VB1、VB2、及びVB3の各々は物理的なハッシュバケットPB0、PB1、PB2、PB3、PB4、PB5、及びPB6のグループから4個の隣接する物理的なハッシュバケットの他のセットを有する(即ち、Hは4)。
【0088】
例えば、図5(a)及び図5(b)を参照すれば、物理的なハッシュバケット位置及び仮想バケット位置(例えば、類似アドレス(quasi−addresses))により構成される2次元アレイを作る。例として該当物理的なハッシュバケット410に該当する任意の例には1があることを示す各仮想バケット460のためのデータを含む各物理的なハッシュバケット410に1(例えば、2進表示子)を配置することによってホップワードベクトル592は、決定される。したがって、ホップワードベクトル592は各仮想バケット460のための物理的なハッシュバケット使用を追跡するために使用できる1又は0のアレイを含む。本発明の例において、物理的なハッシュバケットPB0、PB1、及びPB3は第1番目の仮想バケットVB0のために占有され、物理的なハッシュバケットPB2及びPB4は第2番目の仮想バケットVB1のために占有され、物理的なハッシュバケットPB5は第3番目の仮想バケットVB2のために占有され、そして第4番目の仮想バケットVB3は占有されない。
【0089】
同様に、図5(c)を参照すれば、いずれかの仮想バケット460が占有される物理的なハッシュバケットに該当するかを知ることによって占有される物理的なハッシュバケット410に基づいてホップワード値591を作る。ホップワード値591はlog2(H)長さのビットになる(Hは仮想バケット460毎に物理的なハッシュバケット410の数)。
【0090】
ホップワードベクトル592又はホップワード値591の情報は各ハッシュバケット410のホップワードラインに格納され、物理的なハッシュバケット410及び仮想バケット460の間の関係はメモリに索引される。
【0091】
図6は本発明の実施形態によるハッシュテーブルメモリのデータブロックのアドレッシングのための物理的なラインID(PLID)650のブロック図である。
図6を参照すれば、本発明の実施形態に係る、修正されたPLID650が提供される。本発明の実施形態によるPLID650はアドレス、オフセット、テーブルの索引、ハッシュ、そしてスロット/ウェイ(Way)、及び仮想バケット460の間への移動する項目を追跡するための特定仮想バケット460と対をなすキー651の各々を示す複数のビットを含む。したがって、仮にキー651が特定仮想バケット460と一致すれば、その特定仮想バケット460はそこに書き込まれたデータ項目を含む。
【0092】
しかし、他の実施形態において、PLID650はキー651をlog2(H)ビットにより構成される仮想バケット利用値フィールド652(例えば、仮想バケット索引)に代替する(例えば、16個の物理的なハッシュバケットの高さを有する仮想バケットはPLID650の4ビット仮想バケット利用値フィールド652に対応される)。仮想バケット利用値フィールド652は各占有された物理的なハッシュバケット410にいずれかの仮想バケット460が対応するか否かを示す。したがって、データ項目を仮想バケット460に書き込む時、仮想バケット460に既に存在する項目の数は計算され、そして仮想バケットに既に存在するアイテムの数に1を加えたのと同一のP値が仮想バケット利用値フィールド652として書き込まれる。PLID650の仮想バケット利用値フィールド652を利用することによって、PLID650のストレージ(Storage)過負荷は減少する。
【0093】
図7は本発明の実施形態による、ホップスコッチ方法を使用するメモリモジュールの複数のハッシュテーブルアレイにデータを書き込む過程を示す順序図である。
【0094】
図7を参照すれば、S701段階において、複数のハッシュテーブルは職別され、ハッシュテーブルの各々はハッシュ関数に対応され、そして各々は物理的なハッシュバケット410を含み、各物理的なハッシュバケット410はハッシュウェイを含み、データを格納するように構成される(例えば、重複除去DRAMメモリモジュール130はk個のハッシュテーブル480を職別し、各々はハッシュ関数h(x)に対応され、各々はm個の物理的なハッシュバケット410を含み、各物理的なハッシュバケットはn個のハッシュウェイ420を含む)。
【0095】
S702段階において、複数の仮想バケット460が職別され、仮想バケット460の各々はいくつかの物理的なハッシュバケット410を含み、そして各々は他の仮想バケットと少なくとも1つの物理的なハッシュバケット410を共有する(例えば、重複除去DRAMメモリモジュール130は複数の仮想バケット460を職別し、仮想バケット460の各々はm個の物理的なハッシュバケット410のH個を含み、そして図4に図示したように、各仮想バケット460は他の仮想バケット460と少なくとも1つの物理的なハッシュバケット410を共有する)。S702a段階において、複数の仮想バケット460はlog2(h)ビットの仮想バケット利用値フィールド、そして仮想バケットの中の対応する1つの仮想バケットにおけるデータブロックの数と同一の値を含む物理的なラインID(PLID)650にハッシュテーブルを索引し仮想バケットの中の対応する1つの仮想バケットに項目が書き込まれる時に仮想バケット利用値フィールドを1増加させることによって職別される(例えば、図6に示したように、仮想バケット460は仮想バケット利用値フィールド652、及び仮想バケット460の中の対応する1つの仮想バケット460におけるデータブロックの数と同一の値を含む物理的なラインID(PLID)650にハッシュテーブル480を索引することによって職別され、仮想バケット利用値フィールド652は仮想バケット460の中の対応する1つの仮想バケットに項目又はデータブロックが書き込まれる時に1が増加される)。
【0096】
S703段階において、物理的なハッシュバケット410に格納されたデータを有する物理的なハッシュバケット410の各々は仮想バケット460の中の対応する1つの仮想バケット460に割当されて職別される(例えば、重複除去DRAMメモリモジュール130は図5(b)及び図5(c)に図示したようにPB0、PB1、PB2、PB3、PB4、及びPB5に格納されたデータを有する物理的なハッシュバケット410を仮想バケット460(VB0、VB1、及びVB2)の中の対応する1つの仮想バケット460に割当して職別する)。S703a段階において、データを含む物理的なハッシュバケット410の中の何れかが仮想バケット460の中のいずれかに対応するかを示すためのホップワードベクトル592又はホップワード値591を生成することによって職別される(例えば、図5(b)及び図5(c)に図示したように、重複除去DRAMメモリモジュール130はデータを含む物理的なハッシュバケット410の中のいずれかが仮想バケット460の中のいずれかに対応するかを示すためのホップワードベクトル592又はホップワード値591を生成する)。
【0097】
S704段階において、データラインはハッシュ値を生成するためにハッシュ関数の中の対応する1つのハッシュ関数にしたがってハッシュされる(例えば、重複除去DRAMメモリモジュール130はメモリコントローラ120からデータラインCに該当する書込み要請を受信し、そしてハッシュ値を生成するためにハッシュ関数h(x)の中の対応する1つのハッシュ関数にしたがってインカミング(incoming)データをハッシュする)。
【0098】
S705段階において、該当ハッシュテーブルの仮想バケット460の中の対応する1つの仮想バケット460がハッシュ値にしたがうデータブロックのための使用可能な空間を有するか否かが決定される(例えば、図5(b)及び図5(c)に図示したように、重複除去DRAMメモリモジュール130は仮想バケット460のVB3がデータブロックのための物理的なバケットPB6に空間を有するか決定する)。
【0099】
S706段階において、データは仮想バケット460の中の対応する1つの仮想バケット460がデータブロックのための空間を有する時まで仮想バケット460の中の対応する1つの仮想バケット460が使用可能な空間を有さない場合、仮想バケット460の中の対応する1つの仮想バケット460から隣接する1つの仮想バケット460に順次的に移動させる)。(例えば、図5(b)及び図5(c)に図示したように、重複除去DRAMメモリモジュール130は仮想バケットVB2がデータブロックのための空間を有する時まで仮想バケットVB2が任意の他の使用可能な物理的なハッシュバケットを有さない場合、仮想バケットVB2の物理的なハッシュバケットPB5から仮想バケットVB3にデータを順次的に移動させ、上述した過程は仮に仮想バケットVB1が仮想バケット460の中の対応する1つの仮想バケット460であれば、仮想バケットVB1の物理的なバケットPB4から仮想バケットVB2の物理的なバケットPB5にデータを移動させるために反複される)。S706a段階において、アドレス検索テーブルメモリは移動されたデータブロックに対応する1つ又はそれ以上の検索アドレスに変更するためにアップデートされる(例えば、重複除去DRAMメモリモジュール130はハッシュテーブルメモリ220の移動されたデータブロックの新しいアドレスが検索されるように移動されたデータブロックに対応する1つ又はそれ以上のアドレスポインターを変更するためにALUTM210をアップデートする)。
【0100】
S707段階において、データブロックは仮想バケット460の中の対応する1つの仮想バケットに格納される(例えば、図5(b)及び図5(c)に図示したように、重複除去DRAMメモリモジュール130は仮に仮想バケットVB1が意図された仮想バケット460であれば、データブロックを仮想バケットVB1の物理的なバケットPB4に格納する)。仮に、仮想バケットVB1を含むハッシュテーブル480がいっぱいに満たされていると決定されれば、データブロックはバッファメモリ230に格納される。
【0101】
図8は本発明の実施形態による、メモリモジュールの複数のハッシュテーブルアレイからデータを読み出す過程を示す順序図である。
【0102】
S801段階において、ハッシュテーブルアレイに格納された複数のデータブロックに対応する読出し要請が受信される(例えば、重複除去DRAMメモリモジュール130はメモリコントローラ120からデータラインCにより構成される複数のデータブロックに該当する読出し要請を受信し、複数のデータブロックはハッシュテーブルメモリ220のハッシュテーブルアレイ400に格納される)。
【0103】
S802段階において、複数のデータブロックに対応するポインターの中の該当するポインターはALUTM210から検索される(例えば、重複除去DRAMメモリモジュール130はALUTM210からデータラインCにより構成される複数のデータブロックに対応するアドレスポインターを検索する)。
【0104】
S803段階において、ポインターの中の該当するポインターに基づく複数のデータブロックはハッシュテーブルメモリ220によりアクセスされる(例えば、重複除去DRAMメモリモジュール130はハッシュテーブルメモリ220のハッシュテーブルアレイ400内の検索されたアドレスポインターに対応する異なるアドレスからデータブロックをアクセスし、検索する)。
【0105】
S804段階において、複数のデータブロックは再組立されたデータを生成するために再組立される(例えば、重複除去DRAMメモリモジュール130は受信された読出し要請に対応するデータラインCと同等である再組立されたデータを生成するためにハッシュテーブルメモリ220から検索されたデータブロックを再組立する)。
【0106】
S805段階において、再組立されたデータはメモリモジュールからメモリコントローラへ伝送される(例えば、重複除去DRAMメモリモジュール130はデータラインCをメモリコントローラ120に伝送する)。
【0107】
前述したように、データ重複除去は本発明の実施形態による重複除去DRAMメモリモジュール130を使用して遂行される。したがって、メモリアクセスは減少され、DRAMシステムの寿命は延長する。
【0108】
前述した内容は例示的な実施形態を示し、それによって限定されない。幾つかの例示的な実施形態を説明したが、当業者は例示的な実施形態により新規な教示及び例示的な実施形態の長所から逸脱せずに、多様な変形が可能なことを容易に理解できる。したがって、そのようなすべての変形は請求範囲に記載された例示的な実施形態の範囲内に含まれると意図される。請求範囲において、機能的な要素は引用した機能を遂行する構造及び構造的な均等物のみならず、同等な構造物も含むと意図される。したがって、前述した内容は開示した特定な実施形態に制限されず、開示した例示的な実施形態の変形のみならず、他の例示的な実施形態は添付した請求項の範囲内に含まれると理解されなければならない。本発明は請求項に含まれる請求項の均等内の範囲で、以下の請求範囲によって定義される。
【符号の説明】
【0109】
100 重複除去DRAMシステムアーキテクチャ
110 プロセッサ
120 メモリコントローラ
130 重複除去DRAMメモリモジュール
140 オペレーティングシステム
210 アドレス検索テーブルメモリ(ALUTM)
220 ハッシュテーブルメモリ
230 バッファメモリ
310、410 ハッシュバケット
320、420 ハッシュウェイ
330 署名ライン
332 署名
340 参照/頻度カウントライン
342 参照カウント
350、650 ラインID(PLID)
380、480 ハッシュテーブル
400 ハッシュテーブルアレイ
460 仮想バケット
591 ホップワード値
592 ホップワードベクトル
651 キー
652 仮想バケット利用値フィールド
図1
図2
図3
図4
図5
図6
図7
図8