(57)【要約】      （修正有）【課題】プログラム可能である重複除去比率制御メカニズムを提供することができるメモリ重複除去を遂行するメモリモジュール及びその動作方法を提供する。【解決手段】メモリモジュールは、メモリモジュールにおいて、プログラミング（ｐｒｏｇｒａｍｍｉｎｇ）レジスター、重複除去比率（ｄｅｄｕｐｌｉｃａｔｉｏｎ  ｒａｔｉｏ）コントロールロジック３２２、及び重複除去エンジン３２５を含むロジック３２０と、ホストコンピュータへのホストインターフェイスと、を有する。プログラミングレジスターは、メモリモジュールの最大重複除去比率を格納し、重複除去比率コントロールロジックは、最大重複除去比率にしたがってメモリモジュールの重複除去比率を制御するように構成される。重複除去比率は、ホストコンピュータによってプログラム可能である。【選択図】図３
2018022487.tif 000002
【特許請求の範囲】
【請求項１】
メモリモジュールにおいて、
プログラミング（ｐｒｏｇｒａｍｍｉｎｇ）レジスター、重複除去比率（ｄｅｄｕｐｌｉｃａｔｉｏｎ  ｒａｔｉｏ）コントロールロジック、及び重複除去エンジンを含むロジックと、
ホストコンピュータへのホストインターフェイスと、を有し、
前記プログラミングレジスターは、前記メモリモジュールの最大重複除去比率を格納し、
前記重複除去比率コントロールロジックは、前記最大重複除去比率にしたがって前記メモリモジュールの重複除去比率を制御するように構成され、
前記重複除去比率は、前記ホストコンピュータによってプログラム可能であることを特徴とするメモリモジュール。
【請求項２】
前記重複除去比率コントロールロジックは、前記ホストインターフェイスを通じて前記ホストコンピュータに前記メモリモジュールの前記重複除去比率を伝達するように構成されることを特徴とする請求項１に記載のメモリモジュール。
【請求項３】
前記メモリモジュールの前記重複除去比率は、前記メモリモジュールの製造時にプログラムされることを特徴とする請求項１に記載のメモリモジュール。
【請求項４】
前記メモリモジュールの前記重複除去比率は、システムブート時間にプログラムされることを特徴とする請求項１に記載のメモリモジュール。
【請求項５】
ハッシュテーブルメモリをさらに有し、
前記ハッシュテーブルメモリは、アドレスルックアップテーブル（ａｄｄｒｅｓｓ  Ｌｏｏｋｕｐ  Ｔａｂｌｅ）、ハッシュテーブル、及びバッファメモリを含むことを特徴とする請求項１に記載のメモリモジュール。
【請求項６】
前記重複除去比率コントロールロジックは、前記プログラミングレジスター内に格納された前記プログラムされた重複除去比率にしたがって、前記メモリモジュールの仮想容量を制限するよう前記アドレスルックアップテーブルのテーブルの大きさを調節するように構成されることを特徴とする請求項５に記載のメモリモジュール。
【請求項７】
前記ホストインターフェイスは、ＤＤＲ（Ｄｏｕｂｌｅ  Ｄａｔａ  Ｒａｔｅ）インターフェイスであることを特徴とする請求項１に記載のメモリモジュール。
【請求項８】
前記ホストインターフェイスは、ＰＣＩｅ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ  ｅｘｐｒｅｓｓ）インターフェイスであることを特徴とする請求項１に記載のメモリモジュール。
【請求項９】
プログラミングレジスターと、重複除去比率コントロールロジックと、重複除去エンジンとを含むロジックをメモリモジュール内に具現する段階と、
前記プログラミングレジスター内に前記メモリモジュールの最大重複除去比率を格納する段階と、
ホストコンピュータによって重複除去比率をプログラミングする段階と、
前記最大重複除去比率にしたがって、前記メモリモジュールの前記重複除去比率を調節する段階と、を有することを特徴とするメモリモジュールの動作方法。
【請求項１０】
ホストインターフェイスを通じて前記ホストコンピュータに前記メモリモジュールの前記重複除去比率を伝達する段階をさらに有することを特徴とする請求項９に記載のメモリモジュールの動作方法。
【請求項１１】
前記メモリモジュールの前記重複除去比率は、前記メモリモジュールの製造の時にプログラムされることを特徴とする請求項９に記載のメモリモジュールの動作方法。
【請求項１２】
前記メモリモジュールの前記重複除去比率は、システムブート時間にプログラムされることを特徴とする請求項９に記載のメモリモジュールの動作方法。
【請求項１３】
ハッシュテーブルメモリを提供する段階をさらに有し、
前記ハッシュテーブルメモリは、アドレスルックアップテーブル（ＬＵＴ）と、ハッシュテーブルと、バッファメモリとを含むことを特徴とする請求項９に記載のメモリモジュールの動作方法。
【請求項１４】
前記プログラミングレジスター内に格納された前記プログラムされた重複除去比率にしたがって、前記メモリモジュールの仮想容量を制限するよう前記アドレスルックアップテーブルのテーブルのサイズを調節する段階をさらに有することを特徴とする請求項１３に記載のメモリモジュールの動作方法。
【請求項１５】
前記ホストインターフェイスは、ＤＤＲインターフェイスであることを特徴とする請求項１０に記載のメモリモジュールの動作方法。
【請求項１６】
前記ホストインターフェイスは、ＰＣＩｅインターフェイスであることを特徴とする請求項１０に記載のメモリモジュールの動作方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はメモリシステムに関し、特に、メモリ重複除去を遂行するメモリモジュール及びその動作方法に関する。
【背景技術】
【０００２】
メモリシステムと関連して、重複除去（ｄｅｄｕｐｌｉｃａｔｉｏｎ）は、重複されたデータを除去してストレージ要求を減少させるための技術を指す。
ただ１つの固有（ｕｎｉｑｕｅ）のデータのインスタンス（ｉｎｓｔａｎｃｅ）のみが実際にＳＳＤ（Ｓｏｌｉｄ−Ｓｔａｔｅ  Ｄｒｉｖｅ）及びＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）のようなストレージ媒体上に維持される。
重複データは該当データの唯一のインスタンスに対するポインタで交替される。
【０００３】
重複除去されたメモリに対するインラインメモリ重複除去スキームは重複除去されないメモリと比較してビット当たり費用（ｃｏｓｔ−ｐｅｒ−ｂｉｔ）を減少させると共に容量面での長所を提供することができる。
一般的なメモリ重複除去スキームは、重複除去エンジンがホストコンピュータのＣＰＵ及び／又はメモリコントローラ（ＭＣ：Ｍｅｍｏｒｙ  Ｃｏｎｔｒｏｌｌｅｒ）と共に集積されたＣＰＵ中心のアプローチを採択する。
【０００４】
このような重複除去スキームは、重複除去アルゴリズム（ａｌｇｏｒｉｔｈｍ）を具現するための単純な多重方向（ｍｕｌｔｉｐｌｅ−ｗａｙ）ハッシュ（ｈａｓｈ）アレイをしばしば使用する。
【０００５】
しかしながら、ハッシュアレイが満たされると、データは重複除去されないオーバーフロー領域内に配置されて重複除去レベルを減少させてしまう。
また追加的には、高い重複除去比率は、重複除去されたメモリシステムのメモリ構成要素の消費を潜在的に減少させることができる。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】米国特許第８，９１８，６０５号明細書
【特許文献２】米国特許第８，８２５，６１７号明細書
【特許文献３】米国特許第８，６８８，６５１号明細書
【特許文献４】米国特許第９，０２６，５０３号明細書
【特許文献５】米国特許第８，９３０，６１２号明細書
【特許文献６】米国特許第８，９２４，６６３号明細書
【特許文献７】米国特許第９，１２２，４０７号明細書
【特許文献８】米国特許第９，０７５，７１０号明細書
【特許文献９】米国特許出願公開第２０１４／００２８１３６１号明細書
【特許文献１０】米国特許出願公開第２０１５／００３９５７１号明細書
【特許文献１１】米国特許出願公開第２０１４／０２４４５９９号明細書
【非特許文献】
【０００７】
【非特許文献１】Ｊｏｈｎ  Ｐｅｔｅｒ  Ｓｔｅｖｅｎｓｏｎ、“Ｆｉｎｅ−Ｇｒａｉｎ  Ｉｎ−Ｍｅｍｏｒｙ  Ｄｅｄｕｐｌｉｃａｔｉｏｎ  ｆｏｒ  Ｌａｒｇｅ−Ｓｃａｌｅ  Ｗｏｒｋｌｏａｄｓ”、Ｓｔａｎｆｏｒｄ  Ｕｎｉｖｅｒｓｉｔｙ、Ｄｅｃｅｍｂｅｒ  ２０１３
【発明の概要】
【発明が解決しようとする課題】
【０００８】
本発明は上記従来のメモリ重複除去スキームにおける課題点に鑑みてなされたものであって、本発明の目的は、プログラム可能である重複除去比率制御メカニズムを提供することができるメモリ重複除去を遂行するメモリモジュール及びその動作方法を提供することにある。
【課題を解決するための手段】
【０００９】
上記目的を達成するためになされた本発明によるメモリモジュールは、メモリモジュールにおいて、プログラミング（ｐｒｏｇｒａｍｍｉｎｇ）レジスター、重複除去比率（ｄｅｄｕｐｌｉｃａｔｉｏｎ  ｒａｔｉｏ）コントロールロジック、及び重複除去エンジンを含むロジックと、ホストコンピュータへのホストインターフェイスと、を有し、前記プログラミングレジスターは、前記メモリモジュールの最大重複除去比率を格納し、前記重複除去比率コントロールロジックは、前記最大重複除去比率にしたがって前記メモリモジュールの重複除去比率を制御するように構成され、前記重複除去比率は、前記ホストコンピュータによってプログラム可能であることを特徴とする。
【００１０】
上記目的を達成するためになされた本発明によるメモリモジュールの動作方法は、プログラミングレジスターと、重複除去比率コントロールロジックと、重複除去エンジンとを含むロジックをメモリモジュール内に具現する段階と、前記プログラミングレジスター内に前記メモリモジュールの最大重複除去比率を格納する段階と、ホストコンピュータによって重複除去比率をプログラミングする段階と、前記最大重複除去比率にしたがって、前記メモリモジュールの前記重複除去比率を調節する段階と、を有することを特徴とする。
【発明の効果】
【００１１】
本発明に係るメモリモジュール及びその動作方法によれば、重複除去メモリシステムのためのプログラム可能である重複除去比率制御メカニズムを提供することができる。
また、本発明の重複除去比率制御メカニズムはターゲットアプリケーションにしたがって多様な重複除去比率をプログラムすることができる。
したがって、重複除去メモリシステムのメモリ容量を最大化することができるという効果がある。
【図面の簡単な説明】
【００１２】
【図１】従来の重複除去システムを詳細に示すブロック図である。
【図２】図１の重複除去システム内で使用されるハッシュテーブルを例示的に示す図である。
【図３】本発明の実施形態に係る重複除去メモリシステムの例示的な基本設計概念を示す図である。
【図４】本発明の実施形態に係る重複除去メモリシステムを例示的に示すブロック図である。
【図５】本発明の実施形態に係る例示的なハッシュテーブルメモリを示す図である。
【図６】本発明の実施形態に係る例示的な重複除去書込み工程を説明するためのフローチャートである。
【図７】本発明の実施形態に係る重複除去メモリシステムの書込み工程に対する例示的なフローチャートである。
【図８】本発明の実施形態に係る重複除去メモリシステムの読出し工程に対する例示的なフローチャートである。
【発明を実施するための形態】
【００１３】
次に、本発明に係るメモリモジュール及びその動作方法を実施するための形態の具体例を図面を参照しながら説明する。
【００１４】
本明細書で開示した特徴及び教示の各々は、メモリシステムに対するプログラム可能な（ｐｒｏｇｒａｍｍａｂｌｅ）重複除去比率を制御するためのシステム及び方法を提供するための他の特徴及び教示と共に又は分離されて使用することができる。
このような追加的な特徴及び教示が分離されるか、或いは結合されて利用される代表的な例は添付された図面を参照して詳細に説明する。
図面は必ずしも一定な比率で図示されなく、一般的に、類似の構造や機能の要素は図面にわたって例示的な目的のために類似の参照番号で表示する。図面は本明細書で記述される多様な実施形態の説明を容易にするためのものである。図面は本明細書に開示された教示のすべての様相を記述しなく、請求項の保護範囲を制限しない。
【００１５】
このような詳細な説明は単なる本教示の側面を実施するための技術分野で詳細な知識を有する者を教示するためのものであり、請求項の範囲を制限しない。したがって、詳細な説明に上述された特徴の組み合わせは広い意味で教示を実施する必要がなくともよく、代わりに本教示、特に代表的な実施形態を説明するために単なる教示する。
以下の説明で、説明の目的のみに、特定名称が本発明の完全な理解を提供するために説明する。
しかし、このような特定細部事項は本発明の思想を実施するために必要ではないことは当業者に理解されることができる。
【００１６】
詳細な説明の幾つかの部分は、アルゴリズム及びコンピュータメモリ内データビットに対する動作のシンボル表現の側面で提供される。
これらのアルゴリズム説明及び表現は、他の分野の当業者に作業の実体を効果的に伝達するために、データ処理分野の当業者によって使用される。
ここで、アルゴリズムは、一般的に所望する結果に至る段階に対する一貫性ある順序である。
段階は、物理的量の物理的操作が必要であるものである。一般的に、必須的ではないが、このような量は格納、伝達、結合、比較、及び異なって操作されることができる電気又は磁気信号の形態を取る。
このような信号をビット、値、要素、シンボル、特徴、用語、数等として指称することが主に共通的な使用の理由でしばしば便利であることが立証された。
しかし、これら及び類似の用語の全ては適切な物理量と関連され、単なるこのような量に適用される便利なラベルであることを留意しなければならない。
【００１７】
具体的には以下の説明から明確であるように、説明で、このような“処理”、“コンピューティング”、“計算”、“決定”、“表示”等のような用語を使用する論議はコンピュータシステム又はコンピュータレジスター及びメモリ内で物理的（電気的）量として現れるデータをコンピュータシステムメモリ又はレジスター又は他の情報ストレージ、伝送又は表示装置内で物理的量として現れる類似な他のデータに操作及び変形する類似な電子コンピューティング装置の活動及び工程を示すものと理解される。
【００１８】
本明細書で説明するアルゴリズムは、本質的に任意の特定コンピュータ又は他の装置と関連されるものではない。
多様な一般的な目的のシステム、コンピュータサーバー、又は個人用コンピュータは、本明細書の教示にしたがうプログラムと共に使用されるか、或いは要求された方法段階を遂行するためのより特殊化された装置を構成することが便利である。
このような多様なシステムのために要求される構造は以下の説明で示す。
多様なプログラミング言語が本明細書で記載されたように発明の教示を具現するのに使用されてもよいことを理解すべきである。
【００１９】
また、代表的な例に対する多様な特徴及び従属項は本発明の教示に対する有用な追加的な実施形態を提供するために明示的ではない、そして列挙されない方式に結合されることもあり得る。
また、すべての値の範囲又は独立体のグループの暗示はすべての可能な中間値又は当該発明を制限する目的のみならず、本来の開示目的のための中間独立体を開示することが言及される。
また、明示的な基準及び図面に図示された構成要素の形状は本明細書で実施される方式を理解できる設計されるが、寸法及び実施形態に示した形状に限定されないことを留意する。
【００２０】
図１は、従来の重複除去システムを詳細に示すブロック図である。
細密なインメモリ重複除去を具現するための詳細な事項は、非特許文献１に開示されている。
【００２１】
重複除去システム１００は、ホストコンピュータ１６０及び複数のＤＤＲメモリモジュール（１５０＿０〜１５０＿（ｎ−１））を含む。
ホストコンピュータ１６０はマルチコア（１１０＿０〜１１０＿（ｎ−１））を有するＣＰＵ、データキャッシュ（Ｌ１Ｄ）１１２、及び命令語（ｉｎｓｔｒｕｃｔｉｏｎ）キャッシュ（Ｌ１Ｉ）１１３を含むレベル１キャッシュ（Ｌ１）１１１、レベル２キャッシュ（Ｌ２）１１４、ＤＴＢ（Ｄｉｒｅｃｔ  Ｔｒａｎｓｌａｔｉｏｎ  Ｂｕｆｆｅｒ）１１０、重複除去されたキャッシュ（ＤＤＣ：Ｄｅｄｕｐｌｉｃａｔｅｄ  Ｃａｃｈｅ）１２０、及びメモリコントローラ１３０を含む。
重複除去システム１００は複数のコアを有するＣＰＵを含むシステム内に具現することができる。
【００２２】
ＤＤＣ１２０は、重複除去されたメモリのキャッシュされたバーションを示す。
ＤＤＣ１２０は、一般的なＬＬＣ（Ｌａｓｔ  Ｌｅｖｅｌ  Ｃａｃｈｅ）と同一のインターフェイスを露呈（ｅｘｐｏｓｅ）する。
しかし、ＤＤＣ１２０は、変換（ｔｒａｎｓｌａｔｉｏｎ）ライン、データライン、及び参照カウントを明示的にキャッシュする。
ＤＤＣ１２０は、複数のＤＤＲメモリモジュール（１５０＿０〜１５０＿（ｎ−１））へのメモリアクセスの数を減少させる。
ＬＬＣ（Ｌａｓｔ  Ｌｅｖｅｌ  Ｃａｃｈｅ）内にキャッシュされた特定データとメモリモジュールとに書き込まれた値が古い場合、読出し要請がＬ１又はＬ２キャッシュから提供され、該当Ｌ１又はＬ２キャッシュは、最も最近に書込みを遂行したＣＰＵコアに属する。
【００２３】
図２は、図１の重複除去システム内で使用されるハッシュテーブルを例示的に示す図である。
ハッシュテーブル２００は“ｍ”個のハッシュバケット（ｂｕｃｋｅｔ）を含むハッシュアレイを含む。
ハッシュバケットの各々は“ｎ”個のウェイ（ｗａｙ）又はスロット（ｓｌｏｔ）を含む。ここで、「ウェイ」及び「スロット」という用語は相互交換可能である。
【００２４】
ハッシュ関数“ｈ”はハッシュバケットに物理ラインＩＤ（ＰＬＩＤ：Ｐｈｙｓｉｃａｌ  Ｌｉｎｅ  ＩＤ）をインデックス（ｉｎｄｅｘ）するために「（ｌｏｇ  ｍ）ビット」のハッシュを生成する。
ライン“Ｃ”をハッシュアレイに挿入するために、ｈ（“Ｃ”）の値が計算され、ハッシュテーブル内のｈ（“Ｃ”）の“Ｔ”列（ｒｏｗ）はウェイがライン“Ｃ”を挿入可能であるか否かを確認する。
【００２５】
図２に示すように、ハッシュテーブル２００の総容量は、「“ｍ”（ハッシュバケット）×“ｎ”（データライン）」である。
署名（ｓｉｇｎａｔｕｒｅ）及び参照カウントラインの各々は、ハッシュバケットの１つのウェイを占めることができる。
全体的に、“ｍ”ハッシュバケツの署名ライン及び参照カウントラインの各々は、ハッシュアレイのカラム全体を占めることができる。
署名及び参照カウントは、各々のライン内に様々な数量（ｑｕａｎｔｉｔｙ）をパック（ｐａｃｋ）するのに十分に小さい。
【００２６】
例えば、ハッシュアレイは、６４ウェイを含み、署名は８ビットのラインに合わせるための８ビットである。
この場合、ハッシュアレイのラインは６４バイト（６４ｘ８ビット）である。
他の例として、署名はＸビットであり、参照カウントはＹビットであり、ハッシュアレイの物理ラインは６４バイトである。
ウェイの数が“ｎ”である場合、総物理ライン“ｎ／（（６４ｘ８）／Ｘ）”がｎ−ウェイバケットの署名カウントの各々に対して必要である。
【００２７】
同様に、物理ライン“ｎ／（（６４ｘ８）／Ｙ）”はｎ−ウェイバケットの参照カウントの各々に対して必要である。
総合して、ハッシュアレイは“ｎｘ｛１＋１／（（６４ｘ８）／Ｘ）＋１／（（６４ｘ８）／Ｙ）｝”ウェイを含む。
これはすべての参照カウント及び署名ラインがハッシュバケットに対して１つのラインにパックになるように提供されたハッシュテーブル内のカラムに対応する。
【００２８】
従来の重複除去されたメモリで、ＣＰＵは物理メモリに対する直接アクセスを有しない。
代わりに、ホストコンピュータのメモリコントローラは、本例では６４バイトのメモリラインのアレイのような物理メモリを管理することができる。
物理ラインの各々は、各々の物理ラインＩＤ（ＰＬＩＤ）によって識別することができる。
ＰＬＩＤは、変換（ｔｒａｎｓｌａｔｉｏｎ）アレイ、ハッシュアレイ、及びオーバーフローの３つの領域に分けられる。
ＰＬＩＤは、ハッシュ関数“ｈ”を利用してハッシュアレイにインデックスする。
例えば、ＰＬＩＤは次の具現例を有することができる。
ＰＬＩＤ＝ｏｖｅｒｆｌｏｗ  ｆｌａｇ  ｜ｈａｓｈ  ｂｉｔｓ｜  ｗａｙ  ｂｉｔｓ
【００２９】
ハッシュビットは、ハッシュバケットがハッシュアレイにインデックスするようにすることができる。
ウェイビットは、ウェイインデックスに与えられる。
ポイントされているデータがハッシュテーブル２００内にある場合、オーバーフローフラッグ（ｏｖｅｒｆｌｏｗｆｌａｇ）は「０」に設定される。オーバーフローフラッグが「１」に設定される場合、ＰＬＩＤ内に残るビットはオーバーフローアレイに対するインデックスとして使用される。
【００３０】
ＰＬＩＤの幅（ｗｉｄｔｈ）は、ハッシュテーブル２００のサイズによって決定される。
図２に示したハッシュテーブル２００で、ハッシュビット及びウェイビットに対して“ｌｏｇ２ｍ＋ｌｏｇ２ｎ”ビットが必要である。オーバーフローフラッグに対する追加的なビットと共に、ＰＬＩＤの幅は次のように計算される。
｜ＰＬＩＤ｜＝１＋ｌｏｇ２ｍ＋ｌｏｇ２ｎ
【００３１】
本明細書は重複除去メモリシステムのためのプログラム可能な重複除去比率制御メカニズムを提供するシステム及び方法を提供する。
重複除去メモリシステムのメモリ容量を最大化するための変更可能な（ｃｏｎｆｉｇｕｒａｂｌｅ）重複除去アルゴリズムを使用して、重複除去比率制御メカニズムは一般的な重複除去メモリシステムのＣＰＵ中心の接近とは対照的にメモリ中心の接近を採択する。
本発明の重複除去比率制御メカニズムは、多様な重複除去メモリ製品（例えば、在庫管理単位（ＳＫＵｓ：Ｓｔｏｃｋ  Ｋｅｅｐｉｎｇ  Ｕｎｉｔｓ））に対する最大重複除去比率を制限することができ、プログラムされた重複除去比率にしたがって重複除去メモリ製品を構成することができる。
重複除去メモリシステムに対する意図されたターゲットアプリケーション（例えば、データベース）にしたがって、多様な重複除去比率が同一の製品にプログラムすることができる。
【００３２】
図３は、本発明の実施形態に係る重複除去メモリシステムの例示的な基本設計概念を示す図である。
重複除去メモリシステム３００は、ホストコンピュータ３６０及び重複除去メモリ３１０を含む。
重複除去メモリ３１０は、重複除去比率レジスター３２１、重複除去比率コントロールロジック３２２、及び集積された重複除去エンジン３２５を含むＳｏＣ（Ｓｙｓｔｅｍ−ｏｎ−Ｃｈｉｐ）ロジック３２０を含む。
【００３３】
重複除去比率レジスター３２１は、ホストコンピュータによってプログラム可能であり、重複除去メモリ３１０の最大重複除去比率を格納する。
重複除去比率レジスター３２１は、恒久的な（ｐｅｒｍａｎｅｎｔ）ハードウェアプログラミング（例えば、ヒューズ設定）、及びＥＥＰＲＯＭに書き込み及びＥＥＰＲＯＭから読み出すことを含む何らかのプログラミング方法によってもプログラムされる。
但し、本発明はこれに制限されない。
重複除去比率レジスター３２１は、重複除去メモリ３１０の製造の中にプログラムされるか、或いはシステム管理要求事項にしたがう製造の後（ｐｏｓｔ−ｐｒｏｄｕｃｔｉｏｎ）の時間（例えば、システムブート時間）にプログラムされ得る。
【００３４】
重複除去比率レジスター３２１に格納されたプログラムされた最大重複除去比率にしたがって重複除去メモリ３１０の仮想容量を制限するために、重複除去比率コントロールロジック３２２は、アドレス（ａｄｄｒｅｓｓ）ＬＵＴ（Ｌｏｏｋｕｐ  Ｔａｂｌｅ）のテーブルの大きさを調節する。
重複除去比率コントロールロジック３２２は、プログラムされた最大重複除去比率及び／又は重複除去メモリ３１０の仮想容量を外部要請者（ｒｅｑｕｅｓｔｏｒ）のみでなく、内部重複除去エンジン３２５に提供する。
一実施形態として、最大重複除去比率は、重複除去メモリ３１０の物理容量に重複除去比率を乗じて計算される。
重複除去メモリ３１０の最大仮想容量に基づいて、重複除去エンジン３２５は重複除去メモリ３１０への読み出し／書き込み要請を管理する。
【００３５】
一実施形態によれば、重複除去メモリ３１０は、ハッシュテーブルメモリ３５０を含む。
ハッシュテーブルメモリ３５０は、アドレスＬＵＴメモリ（ＡＬＵＴＭ：Ａｄｄｒｅｓｓ  ＬＵＴ  Ｍｅｍｏｒｙ）３５１、ハッシュテーブルメモリ（ＨＴＭ：Ｈａｓｈ  Ｔａｂｌｅ  Ｍｅｍｏｒｙ）３５２、及びバッファメモリ（ＢＭ：Ｂｕｆｆｅｒ  Ｍｅｍｏｒｙ）３５３を含む。
アドレスＬＵＴメモリ３５１は、装置アドレスとルックアップアドレスとの間のマッピング情報を格納する。
ハッシュテーブルメモリ３５２は、ハッシュテーブル内に値を格納する。
バッファメモリ３５３は、ＳｏＣメモリバッファ／キャッシュと仮想密度オーバープロビジョン（ｏｖｅｒ−ｐｒｏｖｉｓｉｏｎ）管理（ＨＴＭオーバーフロー）を提供するための予約されたメモリ領域である。
【００３６】
図４は、本発明の実施形態に係る重複除去メモリシステムを例示的に示すブロック図である。
重複除去メモリシステム４００は、メモリ容量を最大化するための変更可能な（ｃｏｎｆｉｇｕｒａｂｌｅ）重複除去アルゴリズムを使用するメモリ中心のデータ重複除去を提供する。
本実施形態では、重複除去メモリシステム４００は、ホストコンピュータ４１０、ＤＲＡＭ  ＤＩＭＭ（Ｄｕａｌ  Ｉｎ−ｌｉｎｅ  Ｍｅｍｏｒｙ  Ｍｏｄｕｌｅ）４２０、及び重複除去メモリモジュール４３０を含む。
【００３７】
ホストコンピュータ４１０は、オペレーティングシステム（ＯＳ：Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）４１１（例えば、Ｌｉｎｕｘ（登録商標））を実行し、そしてカーネルモジュール４１１を使用するユーザーアプリケーションを実行するように構成されたプロセッサ４１３を含む。
追加的に、ホストコンピュータ４１０は、１つ以上のメモリとインターフェイスコントローラ（総合して、メモリ／インターフェイスコントローラ４１４と表記する。）を含む。
メモリ／インターフェイスコントローラ４１４は、ＤＲＡＭ  ＤＩＭＭ４２０及び重複除去メモリモジュール４３０への多重メモリインターフェイスに対する支援を提供する。
本実施形態では、１つのＤＲＡＭ  ＤＩＭＭ４２０と１つの重複除去メモリモジュール４３０とを示す。
但し、本発明の範囲を逸脱しなく、重複除去メモリシステム４００は任意の数のＤＲＡＭ  ＤＩＭＭ及び／又は重複除去メモリモジュールも含むことは容易に理解されるべきである。
【００３８】
ＤＲＡＭ  ＤＩＭＭ４２０及び重複除去メモリモジュール４３０の各々は、指定されたインターフェイスを通じてホストコンピュータ４１０と接続される。
例えば、ＤＲＡＭ  ＤＩＭＭ４２０は、ＤＤＲ（Ｄｏｕｂｌｅ  Ｄａｔａ  Ｒａｔｅ）（例えば、ＤＤＲ４）メモリインターフェイスを通じてホストコンピュータ４１０と接続される。
重複除去メモリモジュール４３０は、ＤＤＲ４メモリインターフェイス又は他の非メモリインターフェイスを通じてホストコンピュータ４１０と接続される。
【００３９】
例えば、非メモリインターフェイスは、ＰＣＩｅ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ  ｅｘｐｒｅｓｓ）インターフェイス、ＮＶＭｅ（Ｎｏｎ−Ｖｏｌａｔｉｌｅ  Ｍｅｍｏｒｙ  ｅｘｐｒｅｓｓ）、及びＮＶＭｆ（ＮＶＭ  ｏｖｅｒ  ｆａｂｒｉｃｓ）等を含む。
一実施形態で、重複除去メモリモジュール４３０は、１つ以上の不揮発性メモリ装置（例えば、フラッシュメモリ）を含むＮＶＤＩＭＭ（Ｎｏｎ−Ｖｏｌａｔｉｌｅ  Ｄｕａｌ  Ｉｎ−Ｌｉｎｅ  Ｍｅｍｏｒｙ  Ｍｏｄｕｌｅ）であるか、或いは少なくとも１つ以上の不揮発性メモリ装置と１つ以上のＤＲＡＭ装置を含むＮＶＤＩＭＭである。
【００４０】
一実施形態で、ホストコンピュータ４１０は、指定されたインターフェイス（例えば、ＤＤＲ４、ＰＣＩｅ等）を通じた重複除去メモリモジュール４３０へのキャッシュラインアクセスを含む。
ＳｏＣは、重複除去メモリモジュール４３０のオーバープロビジョンされた（ｏｖｅｒｐｒｏｖｉｓｉｏｎｅｄ）メモリ容量（例えば、仮想メモリ容量）をホストコンピュータに提供する。
重複除去メモリモジュール４３０に格納された重複除去されたデータによって、重複除去メモリモジュール４３０の仮想メモリ容量はその物理的メモリ容量よりさらに大きい。
重複除去メモリモジュール４３０のＳｏＣ４３１は、インテリジェント特徴（ｉｎｔｅｌｌｉｇｅｎｔ  ｆｅａｔｕｒｅｓ）をホストコンピュータ４１０に提供する。
【００４１】
例えば、インテリジェント特徴は、データ重複除去、アドレス指定可能な（ａｄｄｒｅｓｓａｂｌｅ）データ、セキュリティ（ｓｅｃｕｒｉｔｙ）、ＰＩＭ（Ｐｒｏｃｅｓｓｉｎｇ−Ｉｎ−Ｍｅｍｏｒｙ）、及びＲＡＳ（Ｒａｓｔｅｒｉｚａｔｉｏｎ  Ｐｒｏｃｅｓｓｉｎｇ）等を含む。
追加的に、ＳｏＣ４３１は、ＤＲＡＭインターフェイス（例えば、ＤＤＲ４）のみならず、仮想密度管理及び効果的なデータ配置を提供する。
重複除去メモリモジュール４３０は、ＤＩＭＭ、２．５インチハードドライブ、ＦＨＨＬ（Ｆｕｌｌ  Ｈｅｉｇｈｔ  Ｈａｌｆ  Ｌｅｎｇｔｈ）、ＨＨＨＬ（Ｈａｌｆ  Ｈｅｉｇｈｔ  Ｈａｌｆ  Ｌｅｎｇｔｈ）、及びＦＨＦＬ（Ｆｕｌｌ  Ｈｅｉｇｈｔ  Ｆｕｌｌ  Ｌｅｎｇｔｈ）を含む多様な形態の要素を含む。
但し、本発明はこれに制限されるものではない。
【００４２】
図５は、本発明の実施形態に係る例示的なハッシュテーブルメモリを示す図である。
ハッシュテーブルメモリ（ＨＴＭ：Ｈａｓｈ  Ｔａｂｌｅ  Ｍｅｍｏｒｙ）５００は、“ｍ”ハッシュバケット、“ｎ”ハッシュ関数、及びハッシュ関数の各々に対する“ｄ”ウェイを含む３Ｄデータを含む。
仮想バケット（ＶＢ：Ｖｉｒｔｕａｌ  Ｂｕｃｋｅｔ）は、近い位置のハッシュバケット（例えば、ハッシュバケットのＶＢの高さ“ｈ”内のハッシュバケット）内にデータを配置できるようにする。
【００４３】
ハッシュバケットの各々に対して、ハッシュバケットにデータをインデックスするように（ｌｏｇ２（ｍ））ビットハッシュを生成する１つの関連したハッシュ関数ｈ（ｘ）がある。
例えば、ハッシュテーブルが８個のハッシュバケットを含む場合、該当ハッシュテーブルのハッシュ関数は、３ビットのハッシュを生成する。
即ち、ハッシュ関数ｈ（ｘ）は、相対的に大量の入力データ（例えば、メモリ内に格納される入力データファイル）がハッシュ関数ｈ（ｘ）に入力されるよう許容する。
そして、実質的に、他のさらに小さい量の出力データ（例えば、ハッシュ値）がハッシュ関数ｈ（ｘ）によって生成され、出力されてハッシュテーブル内に格納される。
したがって、異なるデータセットが時には同一のハッシュ値にハッシュすることがあるので、ハッシュ関数ｈ（ｘ）は圧縮を可能にする。
【００４４】
図６は、本発明の実施形態に係る例示的な重複除去書込み工程を説明するためのフローチャートである。
まず、重複除去メモリの重複除去エンジンは、非適応形（ｎｏｎ−ａｄａｐｔｉｖｅ）重複除去アルゴリズム又は適応形重複除去アルゴリズムを適用する必要があるかを決定する（ステップＳ６０１）。
【００４５】
非適応形重複除去アルゴリズムに対しては、ホストコンピュータ上で実行されているソフトウェアは重複除去アルゴリズムを定義する。
適応形重複除去アルゴリズムに対しては、重複除去メモリの重複除去エンジンは多様なパラメーターに基づいて重複除去アルゴリズムを定義する。
例えば、パラメーターは、アプリケーション履歴（ｈｉｓｔｏｒｙ）、選択方針（ｓｅｌｅｃｔｉｏｎ  ｐｏｌｉｃｙ）等を含む。
【００４６】
非適応形重複除去アルゴリズムが選択される場合、ホストＯＳのカーネル内にロードされた重複除去メモリに対するドライバーは重複除去ラインのサイズ、ハッシュテーブルの数、ハッシュバケットの数、ウェイの数、仮想バケット高さ等を設定する（ステップＳ６１１）。
ＳｏＣは、図３に示したハッシュテーブルメモリ、アドレスＬＵＴメモリ、及びバッファメモリの領域を生成する（ステップＳ６１２）。
ドライバーは、前処理（ｐｒｅ−ｐｒｏｃｅｓｓｉｎｇ）アルゴリズムを選択する（ステップＳ６１３）。
ドライバーは、ハッシュアルゴリズムを選択する（ステップＳ６１４）。
重複除去メモリのＳｏＣは、重複除去書込みアルゴリズムを生成する（ステップＳ６１５）。
【００４７】
適応形重複除去アルゴリズムが選択される場合、重複除去メモリのＳｏＣは、適応形重複除去アルゴリズムをオンラインで選択する（ステップＳ６２２）。
適応形重複除去アルゴリズムを選択する場合、ＳｏＣは多様なパラメーター（例えば、アプリケーションパターン履歴プール（ｐｏｏｌ）、重複除去アルゴリズムプール、重複除去選択方針（ｐｏｌｉｃｙ）等）を参照する（ステップＳ６２１）。
ＳｏＣは、異なる重複除去書込みアルゴリズム（Ｓ６３１Ａ、Ｓ６３１Ｂ、〜Ｓ６３１Ｘ）を適用する。
異なるアルゴリズムは、異なるメモリ領域に対するブートタイム時にＳｏＣによって選択することができる。
選択されたアルゴリズムは、次のブートタイムまで変更することができる。
【００４８】
図７は、本発明の実施形態に係る重複除去メモリシステムの書込み工程に対する例示的なフローチャートである。
書込み要請は、指定されたインターフェイス（例えば、ＤＤＲ４及びＰＣＩｅ）を通じて重複除去メモリに到着する（ステップＳ７１１）。
【００４９】
例えば、書込み要請は、装置アドレス「０ｘ２」にデータ「０ｘ３４５６７８９Ａ」を書き込む要請である。
重複除去メモリのＳｏＣ内に具現された重複除去エンジンは、書込み要請から書き込まれるデータをハッシュする。
該当実施形態で、ハッシュされたデータはＬＵ（ＬｏｏｋＵｐ）アドレス「０ｘ５」及びキー「０ｘ３」を含む。
【００５０】
重複除去エンジンは、ハッシュされたＬＵアドレス「０ｘ５」及びキー「０ｘ３」をハッシュテーブルメモリ７２２内に格納されたキー及び値と比較する（ステップＳ７１２）。
マッチング値がハッシュテーブルメモリ７２２内で発見される場合、重複除去エンジンはマッチングエントリに対する頻度数カウントを“１”から“２”に増加させる。
頻度数カウントは、アドレスルックアップ変換アレイ内のいくつのＰＬＩＤが特定ラインを指しているかを示す参照カウントである。
【００５１】
重複除去エンジンは、元のＬＵアドレス（例えば、「０ｘ５」）を得、アドレスＬＵＴメモリ７２３内にＬＵアドレスをアップデートする（ステップＳ７１３）。
重複除去エンジンは、ハッシュテーブルメモリ７２２内の元のＬＵアドレス（例えば、「０ｘ５」）の頻度数カウントをアップデートする（ステップＳ７１４）。
ハッシュテーブルメモリ７２２内にマッチング（ｍａｔｃｈｉｎｇ）されるエントリ（ｅｎｔｒｙ）が発見されなければ、重複除去エンジンはハッシュテーブルメモリ７２２及びアドレスＬＵＴメモリ７２３の全てに頻度数“１”と共に新しいエントリを追加する。
重複除去エンジンは、書込み要請が完了されたことをホストメモリコントローラに報告する（ステップＳ７５１）。
【００５２】
図８は、本発明の実施形態に係る重複除去メモリシステムの読出し工程に対する例示的なフローチャートである。
読出し要請が指定されたインターフェイス（例えば、ＤＤＲ４及びＰＣＩｅ）を通じて重複除去メモリに到着する（ステップＳ８１１）。
【００５３】
例えば、読出し要請は、装置アドレス「０ｘ２」に対するものである。
装置アドレスは、読み出されるデータのアドレスを指し、ＬＵアドレスはハッシュテーブルメモリ（８２３）内に格納されたデータの実際位置を指す。
重複除去エンジンは、読出しアドレスＬＵＴメモリ８２２からＬＵアドレスを得る（ステップＳ８１２）。
重複除去エンジンは、読出しハッシュテーブルメモリ８２３からＬＵアドレス「０ｘ４」に対応する値「０ｘ１２３４５６７８）を得る（ステップＳ８１３）。
重複除去エンジンは、読出し要請を完了するために読出されたデータをホストメモリコントローラに伝送する（ステップＳ８５１）。
【００５４】
一実施形態によれば、メモリモジュールは、ロジックを含む。ロジックはプログラミングレジスター、重複除去比率コントロールロジック、及び重複除去エンジンを含む。プログラミングレジスターはメモリモジュールの最大重複除去比率を格納する。重複除去比率コントロールロジックは、最大重複除去比率にしたがって、メモリモジュールの重複除去比率を制御するように構成される。重複除去比率はホストコンピュータによってプログラム可能である。
【００５５】
重複除去比率コントロールロジックは、ホストインターフェイスを通じてホストコンピュータに重複除去比率を伝送するように構成されることが好ましい。
メモリモジュールの前記重複除去比率はメモリモジュールの製造の時にプログラムされることが好ましい。
メモリモジュールの重複除去比率はシステムブート時にプログラムされることがが好ましい。
メモリモジュールはハッシュテーブルメモリをさらに含むことが好ましい。
ハッシュテーブルメモリはアドレスルックアップテーブル（Ｌｏｏｋｕｐ  Ｔａｂｌｅ）、ハッシュテーブル、及びバッファメモリを含むことが好ましい。
重複除去比率コントロールロジックは、重複除去比率レジスター内に格納されたプログラムされた重複除去比率にしたがって、重複除去メモリモジュールの仮想容量を制限するようアドレスルックアップテーブルのテーブルの大きさを制御するよう構成されることが好ましい。
ホストインターフェイスはＤＤＲ（Ｄｏｕｂｌｅ  Ｄａｔａ  Ｒａｔｅ）インターフェイスであることが好ましい。
ホストインターフェイスはＰＣＩｅ（Ｐｅｒｉｐｈｅｒａｌ  ＣｏｍｐｏｎｅｎｔＩｎｔｅｒｃｏｎｎｅｃｔ  ｅｘｐｒｅｓｓ）であることが好ましい。
【００５６】
他の実施形態によれば、メモリモジュールの動作方法は、メモリモジュール内にプログラミングレジスター、重複除去比率コントロールロジック、及び重複除去エンジンを含む、ロジックを具現する段階と、プログラミングレジスター内にメモリモジュールの最大重複除去比率を格納する段階と、ホストコンピュータによって重複除去比率をプログラミングする段階と、最大重複除去比率にしたがってメモリモジュールの重複除去比率を調節する段階と、を有する。
【００５７】
メモリモジュールの動作方法は、ホストインターフェイスを通じてホストコンピュータにメモリモジュールの重複除去比率を伝送する段階をさらに有することが好ましい。
メモリモジュールの重複除去比率はメモリモジュールの製造の時にプログラムされることが好ましい。
メモリモジュールの重複除去比率はシステムブートの時にプログラムされることが好ましい。
メモリモジュールの動作方法はハッシュテーブルメモリを提供する段階をさらに有し、ハッシュテーブルメモリはアドレスルックアップテーブル、ハッシュテーブル、及びバッファメモリを含むことが好ましい。
メモリモジュールの動作方法は、重複除去比率レジスター内に格納されたプログラムされた重複除去比率にしたがって、重複除去メモリモジュールの仮想容量を制限するようアドレスルックアップテーブルのテーブルの大きさを調節する段階をさらに有することが好ましい。
ホストインターフェイスはＤＤＲ（Ｄｏｕｂｌｅ  Ｄａｔａ  Ｒａｔｅ）インターフェイスであることが好ましい。
ホストインターフェイスはＰＣＩｅ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ  ｅｘｐｒｅｓｓ）であることが好ましい。
【００５８】
尚、本発明は、上述の実施形態に限られるものではない。本発明の技術的範囲から逸脱しない範囲内で多様に変更実施することが可能である。
【符号の説明】
【００５９】
１００    重複除去システム
１１０    ＤＴＢ（Ｄｉｒｅｃｔ  Ｔｒａｎｓｌａｔｉｏｎ  Ｂｕｆｆｅｒ）
１１０＿０〜１１０＿（ｎ−１）    マルチコア
１１１    レベル１キャッシュ
１１２    データキャッシュ
１１３    命令語キャッシュ
１１４    レベル２キャッシュ
１２０    重複除去されたキャッシュ（ＤＤＣ）
１３０    メモリコントローラ
１５０＿０〜１５０＿（ｎ−１）    ＤＤＲメモリモジュール
１６０、３６０、４１０    ホストコンピュータ
２００    ハッシュテーブル
３００、４００    重複除去メモリシステム
３１０    重複除去メモリ
３２０、４３１    ＳｏＣ（ロジック）
３２１    重複除去比率レジスター
３２２    重複除去比率コントロールロジック
３２５    重複除去エンジン
３５１、７２３、８２２    アドレスルックアップメモリ
３５０、３５２、５００、７２２、８２３    ハッシュテーブルメモリ（ＨＴＭ）
３５３    バッファメモリ
４１１    オペレーティングシステム
４１２    カーネルモジュール
４１３    プロセッサ
４１４    メモリ／インターフェイスコントローラ
４２０    ＤＲＡＭ  ＤＩＭＭ
４３０    重複除去メモリモジュール
【図１】
2018022487.tif 000003
【図２】
2018022487.tif 000004
【図３】
2018022487.tif 000005
【図４】
2018022487.tif 000006
【図５】
2018022487.tif 000007
【図６】
2018022487.tif 000008
【図７】
2018022487.tif 000009
【図８】
2018022487.tif 000010