(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-07-08
(45)【発行日】2024-07-17
(54)【発明の名称】インメモリコンピューティングのための大容量メモリシステム
(51)【国際特許分類】
G06F 12/10 20160101AFI20240709BHJP
G06F 12/00 20060101ALI20240709BHJP
G06F 12/02 20060101ALI20240709BHJP
G06F 3/06 20060101ALI20240709BHJP
G06F 3/08 20060101ALI20240709BHJP
G06F 13/12 20060101ALI20240709BHJP
G06F 13/14 20060101ALI20240709BHJP
【FI】
G06F12/10
G06F12/00 571A
G06F12/02 570A
G06F3/06 301W
G06F3/08 H
G06F13/12 340B
G06F13/14 320H
(21)【出願番号】P 2019148950
(22)【出願日】2019-08-14
【審査請求日】2022-07-13
(32)【優先日】2018-08-21
(33)【優先権主張国・地域又は機関】US
(32)【優先日】2018-11-04
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】390019839
【氏名又は名称】三星電子株式会社
【氏名又は名称原語表記】Samsung Electronics Co.,Ltd.
【住所又は居所原語表記】129,Samsung-ro,Yeongtong-gu,Suwon-si,Gyeonggi-do,Republic of Korea
(74)【代理人】
【識別番号】110000051
【氏名又は名称】弁理士法人共生国際特許事務所
(72)【発明者】
【氏名】姜 冬 岩
(72)【発明者】
【氏名】彭 強
(72)【発明者】
【氏名】チョン 宏 忠
【審査官】北村 学
(56)【参考文献】
【文献】特開2017-045452(JP,A)
【文献】特開2017-208096(JP,A)
【文献】特開2018-120594(JP,A)
【文献】米国特許出願公開第2018/0188971(US,A1)
【文献】米国特許出願公開第2016/0267011(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 12/10
G06F 12/00
G06F 12/02
G06F 3/06
G06F 3/08
G06F 13/12
G06F 13/14
(57)【特許請求の範囲】
【請求項1】
メモリシステムであって、
少なくとも1つのシステムパーティション(system partition)を含み、
前記少なくとも1つのシステムパーティションは、
第1所定サイズの物理メモリ空間を有する物理メモリと、
ホストシステムからデータライト(write)要請及び対応するデータを受信し、前記ホストシステムと前記物理メモリとの間で発生する未処理のライトトランザクションのリストを含むトランザクションテーブルを使用して、前記ホストシステムの仮想メモリ空間において順次的なメモリライトの完了を維持することにより、前記ホストシステムの仮想メモリ空間に対するデータ一貫性及びデータ整合性を維持する少なくとも1つのトランザクションマネージャーと、
少なくとも1つのコマンドキューを含み、
前記トランザクションマネージャーから前記データライト要請を受信し、前記データライト要請のそれぞれに対応するライトコマンドを前記少なくとも1つのコマンドキューのうちの選択されたコマンドキューに伝送し、ハッシュテーブルバケットナンバー及び未処理のライトコマンドの状態を追跡するために使用されるアウトスタンディングバケットナンバー(outstanding bucket number)
テーブルと前記
選択されたコマンドキューを使用して同一のハッシュバケットへのライトトランザクションが順番に実行されることを保証するように動作することにより、前記少なくとも1つのシステムパーティションの物理メモリ空間に対するデータ一貫性及びデータ整合性を維
持する少なくとも1つのライトデータエンジンマネージャーと、
前記少なくとも1つのコマンドキューにそれぞれ対応し、データライト要請に対応する前記データが前記ホストシステムの仮想メモリ空間に複製されていない場合、前記データを前記物理メモリのオーバーフローメモリ領域に格納することにより、前記対応するコマンドキューに格納されたライトコマンドに応じた処理を進行するか、又はデータライト要請に対応する前記データが前記ホストシステムの仮想メモリ空間に複製されている場合、前記データに内蔵されて前記仮想メモリ空間に複製される回数を指示する基準カウンタを増加させる1つ以上のライトデータエンジンと、を備えることを特徴とするメモリシステム。
【請求項2】
前記仮想メモリ空間は、前記物理メモリ空間の前記第1所定サイズ以上の第2所定サイズを含み、
前記メモリシステムは、前記仮想メモリ空間の前記第2所定サイズに対応する第1所定個数のビットからなるデータ幅を有し、前記物理メモリの前記第1所定サイズに対応する第2所定個数のビット、及びデータグラニュラリティ(data granularity)に対応する第3所定個数のビットを含む変換テーブルを含み、
前記第2所定個数のビット及び前記第3所定個数のビットは、前記第1所定個数のビットのデータ幅を有する前記変換テーブルのデータ行のサブセット(subset)であり、
前記変換テーブルは、前記少なくとも1つのシステムパーティションに含まれる変換テーブルメモリに格納されることを特徴とする請求項1に記載のメモリシステム。
【請求項3】
前記第1所定個数のビットは40ビットであり、前記第2所定個数のビットは32ビットであり、前記第3所定個数のビットは6ビットであることを特徴とする請求項2に記載のメモリシステム。
【請求項4】
前記トランザクションマネージャーは、データライト要請の受信に応答して、前記変換テーブルにアクセスし、前記データライト要請の仮想アドレスに対応する物理アドレスを判定することを特徴とする請求項2に記載のメモリシステム。
【請求項5】
前記トランザクションマネージャーは、前記トランザクションテーブルを使用して、前記ホストシステムから受信された複数のデータライト要請に対応した制御プロセスを実行することを特徴とする請求項1に記載のメモリシステム。
【請求項6】
前記トランザクションマネージャーは、前記トランザクションテーブルを使用してライトデータ要請の複数のスレッドに対応した制御プロセスを実行することを特徴とする請求項5に記載のメモリシステム。
【請求項7】
メモリシステムであって、
複数のシステムパーティションを含み、
前記複数のシステムパーティションのうちの少なくとも1つのシステムパーティションは、
複数のメモリ領域を含む第1所定サイズの物理メモリ空間を有する物理メモリと、
ホストシステムからデータライト(write)要請及び対応するデータを受信し、前記ホストシステムと前記物理メモリとの間で発生する未処理のライトトランザクションのリストを含むトランザクションテーブルを使用して、前記ホストシステムの仮想メモリ空間において順次的なメモリライトの完了を維持することにより、前記物理メモリ空間の前記第1所定サイズ以上の第2所定サイズを含む前記ホストシステムの仮想メモリ空間に対するデータ一貫性及びデータ整合性を維持し、前記物理メモリ空間内のデータの位置を追跡するために使用される変換テーブルを使用して、前記ホストシステムの前記仮想メモリ空間を、前記少なくとも1つのシステムパーティションの物理メモリ空間に変換する少なくとも1つのトランザクションマネージャーと、
少なくとも1つのコマンドキューを含み、
前記トランザクションマネージャーから前記データライト要請を受信し、前記データライト要請のそれぞれに対応するライトコマンドを前記少なくとも1つのコマンドキューのうちの選択されたコマンドキューに伝送し、ハッシュテーブルバケットナンバー及び未処理のライトコマンドの状態を追跡するために使用されるアウトスタンディングバケットナンバー(outstanding bucket number)
テーブルと前記
選択されたコマンドキューを使用して同一のハッシュバケットへのライトトランザクションが順番に実行されることを保証するように動作することにより、前記少なくとも1つのシステムパーティションの物理メモリ空間に対するデータ一貫性及びデータ整合性を維
持する少なくとも1つのライトデータエンジンマネージャーと、
前記少なくとも1つのコマンドキューにそれぞれ対応し、前記データライト要請に対応する前記データが前記ホストシステムの仮想メモリ空間に複製されていない場合、前記データを前記物理メモリのオーバーフロー領域に格納するか、又は前記データが前記ホストシステムの仮想メモリ空間に複製されている場合、前記データに内蔵されて前記仮想メモリ空間に複製される回数を指示する基準カウンタを増加させることによって、前記対応するコマンドキューに格納されたライトコマンドに応じた処理を進行する1つ以上のライトデータエンジンと、
前記物理メモリの各メモリ領域に対応し、前記各メモリ領域に格納されたデータに対する基準カウンタの
ために使用されるストレージ空間を含み、前記対応する各メモリ領域へのライトデータエンジンのアクセスを制御するメモリ領域マネージャーと、を備えることを特徴とするメモリシステム。
【請求項8】
前記変換テーブルは、前記仮想メモリ空間の前記第2所定サイズに対応する第1所定個数のビットからなるデータ幅を有し、前記物理メモリの前記第1所定サイズに対応する第2所定個数のビット、及びデータグラニュラリティに対応する第3所定個数のビットを含み、
前記第2所定個数のビット及び前記第3所定個数のビットは、前記第1所定個数のビットのデータ幅を有する前記変換テーブルのデータ行のサブセット(subset)であり、
前記変換テーブルは、前記少なくとも1つのシステムパーティションに含まれる変換テーブルメモリに格納されることを特徴とする請求項7に記載のメモリシステム。
【請求項9】
前記第1所定個数のビットは、40ビットを含み、前記第2所定個数のビットは、32ビットを含み、前記データグラニュラリティに対する前記第3所定個数のビットは、6ビットを含むことを特徴とする請求項8に記載のメモリシステム。
【請求項10】
前記トランザクションマネージャーは、データライト要請の受信に応答して、前記変換テーブルにアクセスし、前記データライト要請の仮想アドレスに対応する物理アドレスを判定することを特徴とする請求項7に記載のメモリシステム。
【請求項11】
前記トランザクションマネージャーは、前記トランザクションテーブルを使用して、前記ホストシステムから受信された複数のデータライト要請に対応した制御プロセスを実行することを特徴とする請求項7に記載のメモリシステム。
【請求項12】
前記トランザクションマネージャーは、前記トランザクションテーブルを使用してライトデータ要請の複数のスレッドに対応した制御プロセスを実行することを特徴とする請求項11に記載のメモリシステム。
【請求項13】
重複排除メモリシステムであって、
複数のシステムパーティションを含み、
前記複数のシステムパーティションのうちの少なくとも1つのシステムパーティションは、
第1所定サイズの物理メモリ空間を有する物理メモリと、
ホストシステムからデータライト要請及び対応するデータを受信し、前記ホストシステムと前記物理メモリとの間で発生する未処理のライトトランザクションのリストを含むトランザクションテーブルを使用して、前記ホストシステムの仮想メモリ空間において順次的なメモリライトの完了を維持することにより、前記物理メモリ空間の前記第1所定サイズ以上の第2所定サイズを含む前記ホストシステムの仮想メモリ空間に対するデータ一貫性及びデータ整合性を維持し、前記仮想メモリ空間の前記第2所定サイズに対応する第1所定個数のビットからなるデータ幅を有し、前記物理メモリの前記第1所定サイズに対応する第2所定個数のビット、及びデータグラニュラリティに対する第3所定個数のビットを含む変換テーブルを含み、前記第2所定個数のビット及び前記第3所定個数のビットは、前記第1所定個数のビットのデータ幅を有する前記変換テーブルのデータ行のサブセット(subset)である前記変換テーブルを使用して、前記ホストシステムの前記仮想メモリ空間を前記少なくとも1つのシステムパーティションの前記物理メモリ空間に変換する少なくとも1つのトランザクションマネージャーと、
少なくとも1つのコマンドキューを含み、
前記トランザクションマネージャーから前記データライト要請を受信し、前記データライト要請のそれぞれに対応するライトコマンドを前記少なくとも1つのコマンドキューのうちの選択されたコマンドキューに伝送し、ハッシュテーブルバケットナンバー及び未処理のライトコマンドの状態を追跡するために使用されるアウトスタンディングバケットナンバー(outstanding bucket number)
テーブルと前記
選択されたコマンドキューを使用して同一のハッシュバケットへのライトトランザクションが順番に実行されることを保証するように動作することにより、前記少なくとも1つのシステムパーティションの物理メモリ空間に対するデータ一貫性及びデータ整合性を維
持する少なくとも1つのライトデータエンジンマネージャーと、
各コマンドキューにそれぞれ対応し、前記データライト要請に対応する前記データが前記仮想メモリ空間に複製されていない場合、前記データを前記物理メモリのオーバーフロー領域に格納するか、又は前記データライト要請に対応する前記データが前記仮想メモリ空間に複製されている場合、前記データに内蔵されて前記仮想メモリ空間に複製される回数を指示する基準カウンタを増加させることによって、前記対応するコマンドキューに格納されたライトコマンドに応じた処理を進行する1つ以上のライトデータエンジンと、備え、
前記変換テーブルは、前記少なくとも1つのシステムパーティションに含まれる変換テーブルメモリに格納されることを特徴とする重複排除メモリシステム。
【請求項14】
前記物理メモリは、複数のメモリ領域を含み、
前記重複排除メモリシステムは、前記物理メモリの各メモリ領域に対応し、前記メモリ領域に格納されたデータに対する基準カウンタの
ために使用されるストレージ空間を含み、前記対応するメモリ領域へのライトデータエンジンのアクセスを制御するメモリ領域マネージャーと、をさらに含むことを特徴とする請求項13に記載の重複排除メモリシステム。
【請求項15】
前記第1所定個数のビットは、40ビットを含み、前記第2所定個数のビットは、32ビットを含み、前記データグラニュラリティに対する前記第3所定個数のビットは、6ビットを含むことを特徴とする請求項14に記載の重複排除メモリシステム。
【請求項16】
前記トランザクションマネージャーは、前記トランザクションテーブルを使用してライトデータ要請の複数のスレッドに対応した制御プロセスを実行することを特徴とする請求項15に記載の重複排除メモリシステム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、メモリシステムに関し、より詳しくは、ホストシステムの仮想メモリ空間に複製されたユーザーデータについて、当該システムの物理メモリ空間におけるユーザーデータの重複排除(deduplication)を提供するメモリシステムに関する。
【背景技術】
【0002】
人工知能(AI:Artificial Intelligence)、ビッグデータ、及びインメモリプロセシングは、ますます大きなメモリ容量を使用する。このような要求を満足させるために、インメモリ重複排除システム(dedupe-DRAM)が開発されている。不幸にも、従来の重複排除システムは、いくつかの問題点を有している。例えば、重複排除変換テーブル(deduplication translation table)は、仮想メモリサイズの増加につれて非線形的に増加する。さらに、重複排除動作は、通常、リード(read)及びライト(write)レイテンシーのいくらかの増加を引き起こす。つまり、単一の論理的なリード又はライトは、複数の物理的なリード又はライトを必要とし、これにより、パフォーマンスが低下する。
【先行技術文献】
【特許文献】
【0003】
【文献】米国特許第9355109号明細書
【文献】米国特許第9799017号明細書
【文献】米国特許出願公開第2016/0371295号明細書
【非特許文献】
【0004】
【文献】WANG,Longxiang et al.,“DOMe:A deduplication optimization method for the NewSQL database backups”,PLoS ONE 12(10):e0185189.https://doi.org/10.1371/journal.pone.0185189,Xi’an,Shaanxi,P.R.China
【発明の概要】
【発明が解決しようとする課題】
【0005】
本発明は、上記従来の問題点に鑑みてなされたものであって、本発明の目的は、向上された性能を有するインメモリコンピューティングのための大容量メモリシステムを可能にするスケーラブルアーキテクチャを提供することにある。
【課題を解決するための手段】
【0006】
上記目的を達成するためになされた本発明の一態様によるメモリシステムは、少なくとも1つのシステムパーティションを含み、前記少なくとも1つのシステムパーティションは、第1所定サイズの物理メモリ空間を有する物理メモリと、ホストシステムからデータライト(write)要請及び対応するデータを受信し、トランザクションテーブルを使用して、前記ホストシステムの仮想メモリ空間に対するデータ一貫性及びデータ整合性(data coherency and data consistency)を維持する少なくとも1つのトランザクションマネージャー(transaction manager)と、少なくとも1つのコマンドキューを含み、アウトスタンディングバケットナンバー(outstanding bucket number)及び前記少なくとも1つのコマンドキューを使用して前記物理メモリ空間に対するデータ一貫性及びデータ整合性を維持し、前記トランザクションマネージャーから前記データライト要請を受信し、前記データライト要請のそれぞれに対応するライトコマンドを前記少なくとも1つのコマンドキューのうちの選択されたコマンドキューに伝送する少なくとも1つのライトデータエンジンマネージャー(write data engine manger)と、前記少なくとも1つのコマンドキューのそれぞれに対応し、データライト要請に対応する前記データが前記仮想メモリ空間に複製されていない場合、前記データをオーバーフローメモリ領域に格納することにより、前記対応するコマンドキューに格納されたライトコマンドに応答するか、又はデータライト要請に対応する前記データが前記仮想メモリ空間に複製されている場合、前記データに対する基準カウンタを増加させるライトデータエンジン(write data engine)と、を備えることを特徴とする。
【0007】
前記仮想メモリ空間は、前記物理メモリ空間の前記第1所定サイズ以上の第2所定サイズを含み、前記メモリシステムは、前記仮想メモリ空間の前記第2所定サイズに対応する第1所定個数のビット、前記物理メモリの前記第1所定サイズに対応する第2所定個数のビット、及びデータグラニュラリティ(granularity)に対する第3所定個数のビットを含む変換テーブルを含み、前記第2所定個数のビット及び前記第3所定個数のビットは、前記第1所定個数のビットのサブセットであり得る。
【0008】
上記目的を達成するためになされた本発明の他の態様によるメモリシステムは、複数のシステムパーティションを含み、前記複数のシステムパーティションのうちの少なくとも1つのシステムパーティションは、複数のメモリ領域を含む第1所定サイズの物理メモリ空間を有する物理メモリと、ホストシステムからデータライト要請及び対応するデータを受信し、トランザクションテーブルを使用して、前記第1所定サイズの前記物理的サイズ以上の第2所定サイズを含む前記ホストシステムの仮想メモリ空間に対するデータ一貫性及びデータ整合性を維持し、変換テーブルを使用して、前記ホストシステムの前記仮想メモリ空間を、前記少なくとも1つのシステムパーティションの物理メモリ空間に変換する少なくとも1つのトランザクションマネージャー(transaction manager)と、少なくとも1つのコマンドキューを含み、アウトスタンディングバケットナンバー(outstanding bucket number)及び前記少なくとも1つのコマンドキューを使用して前記物理メモリ空間に対するデータ一貫性及びデータ整合性を維持し、前記トランザクションマネージャーから前記データライト要請を受信し、前記データライト要請のそれぞれに対応するライトコマンドを前記少なくとも1つのコマンドキューの中の選択されたコマンドキューに伝送する少なくとも1つのライトデータエンジンマネージャー(write data engine manager)と、前記少なくとも1つのコマンドキューのそれぞれに対応し、前記データライト要請に対応する前記データが前記仮想メモリ空間に複製されていない場合、前記データをオーバーフロー領域に格納するか、又は前記データが前記仮想メモリ空間に複製されている場合、前記データに対する基準カウンタを増加させることによって、前記対応するコマンドキューに格納されたライトコマンドに応答するライトデータエンジン(write data engine)と、前記物理メモリの各メモリ領域に対応し、前記各メモリ領域に格納されたデータに対する基準カウンターストレージ空間を含み、前記対応する各メモリ領域へのライトデータエンジンアクセスを制御するメモリ領域マネージャー(memory regional manager)と、を備えることを特徴とする。
【0009】
前記変換テーブルは、前記仮想メモリ空間の前記第2所定サイズに対応する第1所定個数のビット、前記物理メモリの前記第1所定サイズに対応する第2所定個数のビット、及びデータグラニュラリティ(granularity)に対する第3所定個数のビットを含み、前記第2所定個数のビット及び前記第3所定個数のビットは、前記第1所定個数のビットのサブセットであり得る。
【0010】
上記目的を達成するためになされた本発明の一態様による重複排除メモリシステムは、複数のシステムパーティションを含み、前記複数のシステムパーティションのうちの少なくとも1つのシステムパーティションは、第1所定サイズの物理メモリ空間を有する物理メモリと、ホストシステムからデータライト要請及び対応するデータを受信し、トランザクションテーブルを使用して、前記物理メモリ空間の前記第1所定サイズ以上の第2所定サイズを含む前記ホストシステムの仮想メモリ空間に対するデータ一貫性及びデータ整合性を維持し、前記仮想メモリ空間の前記第2所定サイズに対応する第1所定個数のビット、前記物理メモリの前記第1所定サイズに対応する第2所定個数のビット、及びデータグラニュラリティに対する第3所定個数のビットを含み、前記第2所定個数のビット及び前記第3所定個数のビットは、前記第1所定個数のビットのサブセットである変換テーブルを使用して、前記ホストシステムの前記仮想メモリ空間を前記少なくとも1つのシステムパーティションの前記物理メモリ空間に変換する少なくとも1つのトランザクションマネージャー(transaction manager)と、少なくとも1つのコマンドキューを含み、アウトスタンディングバケットナンバー(outstanding bucket number)及び前記少なくとも1つのコマンドキューを使用して前記物理メモリ空間に対するデータ一貫性及びデータ整合性を維持し、前記トランザクションマネージャから前記データ要請を受信し、前記データライト要請のそれぞれに対応するライトコマンドを前記少なくとも1つのコマンドキューの中の選択されたコマンドキューに伝送する少なくとも1つのライトデータエンジンマネージャー(write data engine manager)と、各コマンドキューに対応し、前記データライト要請に対応する前記データが前記仮想メモリ空間に複製されていない場合、前記データをオーバーフロー領域に格納するか、又は前記データライト要請に対応する前記データが前記仮想メモリ空間に複製されている場合、基準カウンタを増加させることによって、前記対応するコマンドキューに格納されたライトコマンドに応答するライトデータエンジン(write data engine)と、を備えることを特徴とする。
【発明の効果】
【0011】
本発明によれば、向上された性能を有するインメモリコンピューティングのための大容量メモリシステムを可能にするスケーラブルアーキテクチャが提供される。
【図面の簡単な説明】
【0012】
【
図1】本発明の一実施形態によるスケーラブル重複排除メモリシステムアーキテクチャの一例を示すブロック図である。
【
図2】
図1に示すシステムパーティションの一例を示すより詳細なブロック図である。
【
図3】本発明の一実施形態によるシステムパーティションのライトデータパスの他の構成例を示すブロック図である。
【
図4】本発明の一実施形態による、変換テーブルによって使用され、ホストシステムの仮想メモリ空間をシステムの仮想メモリ空間に変換する、
図1の重複排除メモリシステムに対する仮想メモリ空間と、物理メモリ空間との関係の一例を示す詳細図である。
【
図5】本発明の一実施形態による例示的な変換テーブルの変換テーブルエントリと、例示的なハッシュテーブルのハッシュテーブルエントリとの間の関係を示す図である。
【
図6】本発明の一実施形態によるトランザクションマネージャーによって提供される例示的な制御プロセスのフローチャートである。
【
図7】本発明の一実施形態によるライトデータエンジンマネージャーによって提供される例示的な制御プロセスのフローチャートである。
【
図8】本発明の一実施形態によるライトデータエンジンによって提供される例示的な制御プロセスのフローチャートである。
【
図9A】本発明の一実施形態による内蔵基準カウンタを有する復元フィールドを含む物理ラインの一例を示す図である。
【
図9B】本発明の一実施形態によるインジケータフラグを含む物理ラインの一例を示す図である。
【
図9C】復元フィールドのコンテンツが複製されたユーザーデータの拡張されたカウンタを含む拡張された基準カウンタテーブルへのインデックスを含む場合に、インジケータフラグが、ユーザーデータの複製回数が復元フィールド内の内蔵基準カウンタのサイズを超えることを指すように設定された状況を示す図である。
【発明を実施するための形態】
【0013】
以下の詳細な説明では、本発明の完全な理解を提供するために多様な実施形態が記載される。しかし、本発明の思想は、本明細書の詳細な説明なしに、当業者によって実施され得る。他の例では、周知の方法、手順、構成、及び回路は、本発明の実施形態を曖昧にしないために記載していない。さらに、記載された態様は、スマートフォン、ユーザー装置(User Equipment)、及び/又はラップトップコンピュータを含むが、これらに限定されないイメージング装置又はシステムで、低電力、3D深度測定を遂行するように具現され得る。
【0014】
本明細書の詳細な説明全体に亘る「一実施形態」の用語は、実施形態に関連付けられた特定の特徴(feature)、構造(structure)、又は特性(characteristic)が本明細書に記載された少なくとも1つの実施形態に含まれることを意味する。つまり、詳細な説明の多様な部分で「一実施形態で」又は「一実施形態により」の表現(又は類似の意味を有する他の表現)で記載されたものは、必ずしもすべて同じ実施形態を示すとは限らない。さらに、特定の特徴、構造、又は特性は、1つ以上の実施形態で、適切な方法で組み合わせられる。これに対し、本明細書で使用される「例示的」の言葉は、例(example)、事例(instance)、又は図示例(illustration)として提供すること」を意味する。「例示的」として本明細書に記載されたいくつかの実施形態は、他の実施形態よりも必ず好ましい、又は有利であると解釈されない。さらに、特定の特徴、構造、又は特性は、1つ以上の実施形態で適切な方法で組み合わせられる。また、本明細書に記載されたコンテキストに応じて、単数の用語は、対応する複数形を含み、複数の用語は、対応する単数形を含む。
【0015】
本明細書で説明される多様な図面(構成図面を含む)は、単に説明の便宜のために示される。参照番号は、対応する及び/又は類似の要素を示すために図面で繰り返される。
【0016】
本明細書で使用される用語は、いくつかの実施形態を説明するためのものであり、本発明はこれに限定されない。「含む」の用語は、本明細書で使用される場合、列挙された特徴(features)、整数(integers)、段階(steps)、動作(operations)、要素(elements)、及び/又は構成(components)の存在を明示するが、1つ以上の他の特徴、整数、段階、動作、要素、構成、及び/又はそれらのグループの存在や追加を否定しない。本明細書で使用される、「第1」、「第2」などの用語は、名詞に先立つラベルとして使用され、明示的に定義しない限り、特定のタイプの順序(例えば、空間的、時間的、論理的など)に限されない。さらに、同一の参照番号は、2つ以上の図面で使用され、同一又は類似の機能を有する部分、構成、ブロック、回路、ユニット、又はモジュールを指す。しかし、このような使用は、図面の簡潔性と説明の便宜のためのものであり、このような構成又はユニットの構成的又は構造的な細部が、すべての実施形態で同一又は共通に参照される部分/モジュールが、本明細書に記載されたいくつかの例示的な実施形態を具現する唯一の方法であることを限定しない。
【0017】
要素又は層が、他の要素又は層に連結されると記載される場合、それは、他の要素又は層に直接連結されるか、又は中間要素又は層が存在し得る。逆に、要素が、他の要素又は層に直接接続されていると記載される場合には、中間要素又は層が存在しない。本明細書で使用される、「及び/又は」の用語は、1つ以上の関連する列挙されたアイテムの任意の組み合わせを含む。
【0018】
特に定義しない限り、本明細書で使用されるすべての用語(技術的又は科学的な用語を含む)は、本発明が属する技術分野における通常の技術者によって一般的に理解される同じ意味を有する。一般辞典において定義される用語のような用語は、関連技術分野のコンテキストでのそれらの意味と同じ意味を有するものと解釈され、本明細書で明示的に定義されない限り、理想的であるか、又は過度に形式的な意味に解釈されない。
【0019】
本明細書で使用される「モジュール」の用語は、モジュールに関連付けられて本明細書で説明した機能を提供するように構成されたソフトウェア、ファームウェア、及び/又はハードウェアの任意の組み合わせを指す。ソフトウェアは、ソフトウェアパッケージ、コード、及び/又はコマンドセット若しくはコマンドで具現され、本明細書で記載された何らかの具現で使用されるような「ハードウェア」の用語は、例えば、ハードワイヤド回路、プログラム可能な回路、状態マシン回路、及び/又はプログラム可能な回路によって実行されるコマンドを格納するファームウェアのいずれか1つ又はそれらの組み合わせを含む。モジュールは、集積回路(IC)、システム・オン・チップ(SoC)などのような、しかしこれらに限定されない、より大きなシステムの一部を形成する回路として総合的に又は個別に具現される。本明細書に記載された多様な構成及び/又は機能ブロックは、多様な構成及び/又は機能ブロックに関連して本明細書に記載された機能を提供するソフトウェア、ファームウェア、及び/又はハードウェアを含むモジュールとして具現される。
【0020】
本明細書に記載された内容は、システムの仮想メモリサイズが増加してもサイズが非線形的に増加しない変換テーブルを有する大規模重複排除メモリシステムアーキテクチャ(large-scale deduplication memory system architecture)を提供する。一実施形態で、本明細書に記載されたメモリシステムのアーキテクチャは、複数のシステムパーティションを含み、各システムパーティション内の機能は、並列化され、高いスループットと低いレイテンシー(latency)を提供する。
【0021】
一実施形態で、システムパーティションは、後述するホストシステムの仮想メモリ空間を管理するように構成され、仮想メモリ空間の整合性(concurrency)及び一貫性(coherency)を提供する1つ以上のトランザクションマネージャー(transaction managers)を含む。さらに、各トランザクションマネージャーは、複数の未処理トランザクション(multiple outstanding transactions)をサポートし、それぞれが複数の未処理トランザクションを含む複数のスレッドをサポートし得る。
【0022】
システムパーティションは、システムパーティションの物理メモリ空間を管理するように構成された1つ以上のデータエンジンマネージャー(data engine manager)を含む。データエンジンマネージャーは、複数の並列データエンジンを管理するように構成される。複数のデータエンジンは、システムパーティションの複数の直交メモリ領域(orthogonal memory regions)に対するメモリアドレスのインターリービング(interleaving)を実行して、スループットを向上させ得る。複数のメモリ領域に対して本明細書で使用される「直交(orthogonal)」の用語は、どんなデータエンジンでも、システムパーティションの任意のメモリ領域にアクセスし得ることを意味する。例えば、ライトアクセスに対して、メモリライトの衝突(memory write conflict)は、データがライトデータエンジン(WDE:Write Data Engine)に到着する前に、ライトデータエンジンマネージャー(WDEM:Write Data Engine Manage)によって管理される。データがWDEに到着した後に、メモリアクセスの衝突は削除される。リードアクセスの場合、リードデータエンジン(RDE:Read Data Engine)は、メモリアクセスの衝突がなく、制限なしに任意のメモリ領域にアクセスし得る。メモリ領域マネージャー(Memory Regional Manager)は、異なる重複排除メモリ領域のような、アプリケーションに関連付けられているメモリ領域を管理する。つまり、物理メモリの衝突は、WDEMによって「直交的に(orthogonally)」削除される。
【0023】
また、本明細書に記載されたメモリシステムの構造(architecture)は、当該システムの物理メモリに格納されたユーザーデータに組み込まれて、メモリシステムによって使用されるメモリサイズ(メモリ量)を減らすことができる基準カウンタ(RC:reference counter)を提供する。一実施形態で、基準カウンタは、基準カウンタが内蔵されたユーザーデータが、メモリシステムの仮想メモリ空間に複製される回数の指示(indication)を提供する。一実施形態で、ユーザーデータに基準カウンタを内蔵させることは、64バイトのユーザーデータのグラニュラリティ(granularity)において、システムメモリ要件を約6%減少させる。他の実施形態で、ユーザーデータに基準カウンタを内蔵させることは、32バイトのユーザーデータのグラニュラリティにおいて、システムメモリ要件を約12%減少させる。
【0024】
ユーザーデータが、メモリシステムの仮想メモリ空間に複製される回数が所定の回数以上である他の実施形態で、基準カウンタに使用されるフィールドは、拡張された基準カウンタテーブル又は特定のデータパターンテーブルにインデックスを提供するフィールドに交替される。さらに別の実施形態では、メモリシステムによって使用される変換テーブルは、ユーザーデータがメモリシステムの仮想メモリ空間に複製される回数が所定の回数以上の場合、特定のデータパターンテーブルへのポインタ又はインデックスを有するエントリを含み、これにより、レイテンシーが減少して、スループットが向上する。変換テーブルにポインタ又はインデックスを配置することにより、変換テーブルがアクセスされるときに、仮想メモリ空間に頻繁に複製されるユーザーデータが自動的に検出される。さらに、このような頻繁に複製されるユーザーデータは、このような変換テーブルの構成によって提供される自動検出を使用して、より簡単に分析され得る。
【0025】
図1は、本発明の一実施形態によるスケーラブル重複排除メモリシステムアーキテクチャの一例を示すブロック図である。スケーラブル重複排除メモリシステムアーキテクチャ(以下、システムアーキテクチャ100という)は、1つ以上のホスト装置又はホストシステム101、ホストインターフェース102、フロントエンドスケジューラ(front-end scheduler)103、及び複数のシステムパーティション(200A~200K)を備える。ホストシステム101は、ホストインターフェース102と通信可能に連結され、ホストインターフェース102は、フロントエンドスケジューラ103と通信可能に連結される。ホストインターフェース102は、1つ以上の直接メモリアクセス(DMA:direct memory access)装置(DMA0~DMAH-1)を含む。フロントエンドスケジューラ103は、複数のシステムパーティション(200A~200K)のそれぞれと通信可能に連結される。ホストシステム101、ホストインターフェース102、及びフロントエンドスケジューラ103は、よく知られている方法で動作する。
【0026】
システムパーティション200は、ライトデータパス201及びリードデータパス202を具備する。ライトデータパス201は、トランザクションマネージャー(TM:transaction manager)203、ライトデータエンジン(WDE)マネージャー(WDEM:WDE MGR)204、1つ以上のメモリ領域マネージャー(MRM:memory regional manager)207、及び1つ以上のメモリ領域(MR:memory region)209を備える。一実施形態で、ライトデータパス201は、トランザクションマネージャー(TM)203を含む。一実施形態で、システムパーティション当たり1つのTM203及び1つのWDEM204が存在する。
図1に示すように、MR209は、メモリコントローラ(MEM CNTRLR)及びDIMM(dual in-line memory module)を含む。他の実施形態では、MR209に対する均等物を含む。MR209のメモリは、ダイナミックランダムアクセスメモリ(DRAM:dynamic random access memory)、スタティックランダムアクセスメモリ(SRAM:static random access memory)、揮発性メモリ、及び/又は不揮発性メモリを含み得るが、これに限定されない。
【0027】
ライトデータパス201と比較して、リードデータパス202は、リードデータパスに関連するデータ一貫性及びデータ整合性(data coherency or data consistency)の問題がないため、相対的に単純である。
図1及び
図2に示すように、リードデータパス202は、1つ以上のMR209、1つ以上のメモリ領域マネージャー(MRM)207(
図1)、リードデータエンジン(RDE)マネージャー(RDEM:RDE MGR)212、及び1つ以上のRDE213を含む。ホストシステム101から受信したデータのリード要請は、変換テーブル(
図4)を含み、データのリードアクセスに応答して、適切なメモリ領域にアクセスし、リードデータパス202を介して要請されたリードデータを提供する。
【0028】
図2は、
図1に示すシステムパーティションの一例を示すより詳細なブロック図である。システムパーティション200のアーキテクチャは、複数のトランザクション及び複数のスレッド(及びそれらの複数のトランザクション)が高いスループットを提供する方法で処理されるように並列化される。
【0029】
システムパーティション200のライトデータパス201は、トランザクションマネージャー(TM)203、ライトデータエンジンマネージャー(WDEM)204、1つ以上のWDE205(WDE0~WDEN-1)、メモリ領域アービタ206、MRM207(MRM0~MRMP-1)、インターコネクト208、及び1つ以上のメモリ領域209(MR0~MRP-1)を含む。システムパーティション200のリードデータパス202は、メモリ領域209、インターコネクト208、メモリ領域アービタ(memory region arbiter)206、リードデータエンジンマネージャー(RDEM)212、及び1つ以上のリードデータエンジン(RDE)213を含む。システムパーティション200は、変換テーブルマネージャー(TT MGR:translation table manager)210及びTTメモリ(TT MEM)211を含む。
図1に示すシステムパーティション(200A~200K)のそれぞれは、同様に構成される。
【0030】
メモリ領域アービタ206及びインターコネクト208のような構成要素は、よく知られている方法で動作し、ここでは詳細な説明を省略する。さらに、メモリ領域アービタ206は、
図2に点線で示すように、ライトデータパス201及びリードデータパス202の両方に位置する。しかし、それぞれのパスは、実際には、他のメモリ領域アービタと通信し、それと連携する個々のメモリ領域アービタを含み得る。
図1に示すように、リードデータパス202は、MRM207を通過するが、
図2では、そのように図示されていない。これは、リードデータエンジンマネージャー(RDEM)212は単に物理メモリ位置に対するPLIDを獲得するために変換テーブルをリードする必要があり、その後にRDE213がPLIDによってインデックスされたメモリ位置をリードするからである。さらに、
図1及び
図2に示す構成は、多様な構成及び/又は機能ブロックに関連付けられて本明細書に記載された機能を提供するソフトウェア、ファームウェア、及び/又はハードウェアを含むモジュールとして具現され得る。
【0031】
図3は、本発明の一実施形態によるシステムパーティションのライトデータパスの他の構成例を示すブロック図である。より詳細には、
図3に示すシステムパーティション200のライトデータパス201の構成要素は、TM203、WDEM204、WDE205、インターコネクト208、及びMR209を含む。さらに、ライトデータパス201は、ライトデータバッファコントローラ214を含む。
【0032】
図1~
図3を参照すると、TM203は、TMコントローラ(TM CTRL)215及び1つ以上のトランザクションテーブル(TM table)216を含む。トランザクションテーブル216は、ホストシステム101とメモリ領域209との間で発生する未処理のライトトランザクションを追跡するために使用される。WDEM204は、OBNテーブル(outstanding bucket number table)217、CMDディスパッチャ(command dispatcher)218、OVMIマネージャー(overflow memory invalidate manager)219、及び1つ以上のCQ(command queue)220(CQ0~CQN-1)を含む。WDE205は、1つ以上のWDE(WDE0~WDEN-1)を含む。ライトデータバッファコントローラ214は、1つ以上のライトデータバッファ221を含む。
【0033】
TM203は、ホストシステム101の仮想メモリ空間に対するデータ一貫性及びデータ整合性(data coherency and data consistency)を管理するように構成される。一実施形態で、TM203は、複数の未処理のライトトランザクション及び複数のスレッドをサポートし、高いデータスループットを提供する。一実施形態で、トランザクションテーブル216は、未処理のライトトランザクションのリストを含む。他の実施形態で、トランザクションテーブル216は、それぞれが複数の未処理のトランザクションを有する複数のスレッドのリストを含む。ホストシステム101からデータライト要請を受信した場合、TM203は、トランザクション識別番号(ID:identification number)をライトデータ要請に割り当て、トランザクションID及び他のメタデータは、選択されたトランザクションテーブル216に入力される。ライトデータ要請に関連付けられたデータは、ライトデータバッファ221に格納される。ライトデータバッファ221のデータに関連付けられたトランザクションID及び情報は、ライトデータパス201による追加処理のためにダウンストリームされる。TM203は、1つ以上のTMテーブル216を使用して、ホストシステム/仮想メモリ空間に順を追って掲示された順次的なメモリライトの完了を維持する。
【0034】
図4は、本発明の一実施形態によるシステムパーティションの物理メモリ空間内のデータの位置を追跡するために、TM203及びRDEM212によって使用される変換テーブルの一例を示す詳細図である。変換テーブル400の特定の例示的実施形態は、1TB(つまり、2
40バイト)の仮想メモリ空間に対応するものであり、VA_WIDTHと称される。重複排除グラニュラリティ(データグラニュラリティ)は、64ビット(つまり、2
6ビット)である。変換テーブル400の物理メモリ空間は、256GB(つまり、2
38バイト)であり、PHY SPACEと称される。
図4に示すシステムの変換テーブルのインデックス(TT_IDX)は34ビットを有する。システムパーティション200によって提供されるパーティショニング(partitioning)は、変換テーブルのインデックスを32ビット内に維持する結果となり、MR209に格納されたユーザーデータのサイズが増加するにつれて変換テーブルのサイズを極端に増大させないようにする。他の実施形態で、仮想メモリサイズ、物理メモリサイズ、及び重複排除グラニュラリティ(データグラニュラリティ)は、
図4に示すものとは異なり得る。
【0035】
図5は、本発明の一実施形態による例示的なハッシュテーブルのハッシュテーブルエントリと、例示的な変換テーブルの変換テーブルエントリとの間の関係を示す図である。
図2及び
図5を参照すると、一実施形態で、変換テーブル500は、TT MEM211に格納され、ハッシュテーブル501は、MR209のHTRC MEMに格納される。ホストシステム101から受信された論理アドレス502は、変換テーブルインデックス(
図4のTT_IDX)及びグラニュラリティ(granularity)を含む。変換テーブルインデックスは、変換テーブル500の物理ライン識別子(PLID:physical line identification)エントリに対するインデックスを提供する。PLIDエントリのフォーマット503は、ハッシュテーブル501に対する行(つまり、ハッシュバケット)インデックス(R_INDX)及び列インデックス(COL_INDX)を含む。ハッシュテーブル501の特定の行及び特定の列に含まれるコンテンツは、2
gのグラニュラリティを有する特定のユーザーデータであり得る物理ライン(PL:physical line)である。例えば、gが6である場合には、PLのグラニュラリティは64バイトである。
【0036】
一実施形態で、ハッシュテーブルインデックス(つまり、行インデックス及び列インデックスの両方)は、ユーザーデータに対して実行されるハッシュ関数hによって生成される。ハッシュテーブルエントリがユーザーデータCに対して実行されるハッシュ関数hによって生成されるため、ユーザーデータの一部C”だけがPLに格納される必要がある。言い換えると、Cがグラニュラリティ2gのユーザーデータを示し、C”がハッシュテーブルに格納される必要があるユーザーデータCの部分を示すと、C’は、ハッシュ関数hを使用してC”から復元できるユーザーデータCの部分を示す。
【0037】
【0038】
PLで、C’と対応される空間又はフィールドは、ユーザーデータCは、ホストシステム101の仮想メモリに、複製された回数に関連される基準カウンタ(RC:reference counter)情報を格納するような、他の目的のために使用される。PLで、C’と対応される空間又はフィールドは、復元フィールド(reconstructed field)と称される。
【0039】
図6は、本発明の一実施形態によるトランザクションマネージャーによって提供される例示的な制御プロセスのフローチャートである。制御プロセス600において、段階601で、TM203は、ホストシステム101からデータライトコマンドを受信するか、又はWEDM204から応答を受信するのを待っているアイドルループ(idle loop)にある。段階602で、ホストシステム101からデータライトコマンドが受信された場合、フローは、トランザクションテーブル216を検索する段階603に進む。段階604で、データライトコマンドは、トランザクションIDを割り当てられ、適切なトランザクションテーブル216に挿入される。段階605で、ライトデータは、ライトデータバッファ221に入力される。段階606で、古い物理ライン識別子(PLID)情報を取得するために、トランザクションテーブル216がリードされ、その後、段階601に戻る。
【0040】
段階602で、データライトコマンドが受信されない場合、フローは、WEDM204から応答が受信されたか否かが判定される段階607に進む。応答が受信されなければ、段階601に戻る。応答が受信されると、段階608に進んで、トランザクションテーブル216がアップデートされる。段階609で、TT MEM211に格納された変換テーブルがアップデートされる。その後、フローは、段階601に戻る。
【0041】
WDEM204は、WDE205を管理することで、パーティション200内の物理メモリ空間のデータ一貫性及びデータ整合性(data coherency and data consistency)を管理するように構成される。一実施形態で、WDEM204は、コマンド(CMD)ディスパッチャ218とコマンドキュー220(すなわち、CQ0~CQN-1)を使用して、他のWDE205への内部リード/ライトトランザクション(リード/ライトスレッド)及び複数の未処理のライトを維持する。WDEM204は、同一のハッシュバケットへのライトトランザクションを、同じコマンドキュー(CQ)に伝送することにより、同一のハッシュバケットへのライトトランザクションが順番に実行されることを保証するように動作する。WDEM204は、部分キャッシュラインライト(partial cache line write)をマージし、MR209のOV MEM(overflow memory)領域に対するメモリ管理を行う。
【0042】
WDEM204は、ハッシュテーブルバケットナンバー及び未処理のライトコマンドの状態を追跡するために使用されるOBN(outstanding bucket number)テーブル217を含む。コマンドディスパッチャ218は、ライトコマンドを選択されたCQ220に格納することによって、コマンドを他のWDE205に割り当てる。WDEM204は、OVM無効化テーブル(図示せず)をさらに含み得る。
【0043】
図7は、本発明の一実施形態によるWEDMによって提供される例示的な制御プロセスのフローチャートである。制御プロセス700は、段階701から始まる。段階702で、ライトデータコマンドがトランザクションマネージャ(TM)203からライトデータバッファID及び古いPLID情報とともに受信されたか否かが判定される。受信された場合、フローは、ライトデータテーブルがリードされる段階703に進む。段階704で、ライトデータバッファ221からリードされたライトデータが特定のデータパターンで表記された場合、フローは段階706に進み、トランザクションマネージャに応答を伝送する。もし、段階704で、ライトデータが特定のデータではない場合、フローは、OCB(outstanding command buffer)テーブルがアップデートされる段階705に進む。段階707で、オペコード(opcode)は、適切なコマンドキュー(CQ)220に追加され、段階708でプロセスは終了する。もし、段階709で、WDE205から応答が受信された場合には、フローは、OCB(outstanding command buffer)テーブルがアップデートされる段階710に進む。段階711で、アップデートされた状態がトランザクションマネージャ(TM)203に伝送され、段階708でプロセスは終了する。
【0044】
各WDE205は、WEDM204の対応するCQ220からコマンド(オペンコード)を受信する。 WDE205は、重複排除判定及びその他の関連する計算を遂行するように構成される。WDE205は、並列に動作してシステムパーティション200の全体のスループットを向上させ得る。各WDE205は、メモリアクセスをインターリービング(interleaving)するために、各メモリ領域のMRM207と調整される。
【0045】
図8は、本発明の一実施形態によるWDEによって提供される例示的な制御プロセスのフローチャートである。段階801で、WDE205は、WDEM204からコマンド(オペコード)を受信するのを待っているアイドルループ(idle loop)にある。段階802で、コマンドがユーザーデータの署名(signature)とハッシュバケットの他のユーザーのデータの署名とを比較するのか、又はコマンドが基準カウンタ(RC)を減少させるものか否かが判定される。もしコマンド(つまり、オペコード)が基準カウンタを減少させるものである場合には、フローは、ユーザーデータに対する基準カウンタを減少させる段階803に進む。その後、フローは、要請の状態がWDEM204に返還される段階804に進み、その後、段階801に戻る。
【0046】
段階802で、WDEM204から受信した要請がユーザーデータ(つまり、物理ライン)をライトするものである場合には、段階805に進行して、ユーザーデータの署名が他のユーザーデータの署名と比較され、ハッシュテーブルに既に格納されたユーザーデータと比較する。段階806で、マッチ(一致)がある場合には、フローは、ユーザーデータの基準カウンタを増加させる段階807に進行する。その後、段階804に進んで、要請の状態がWDEM204に再び報告(返還)される。もし段階806で、マッチがなければ、段階808に進行して、以前のユーザーデータが見つからない場合、HTRCマネージャーが、「1」であるRCカウンターとともにユーザーデータをハッシュテーブルに格納するように呼び出すか、又はハッシュバケットが満杯になるか若しくはハッシュ衝突が発生した場合、オーバーフロー領域にユーザーデータを格納するためにOVMマネージャーを呼び出す。その後、フローは、段階804に進行してWDEM204へ要請の状態を報告する。
【0047】
MRM207は、WDE205に対するMR209へのメモリアクセスを管理する。MRM207は、ハッシュテーブル/基準カウンターマネージャー(HTRC MGR:hash table/reference counter manager)222、オーバーフローマネージャー(OVM MGR:overflow memory manager)223、及び署名マネージャー(SIG MGR:signature manager)224を含む。各MRM207は、WDE205のそれぞれからHTRC MGR222(HR R/W)、OVM MGR223(OVM R/W)、及びSIG MGR224(SIG R/W)のための制御及びデータ情報を受信する。
【0048】
図9Aは、本発明の一実施形態による内蔵基準カウンタ(embedded RC:embedded reference counter)を有する復元フィールド901を含む物理ライン(PL)900の一例を示す図である。本実施形態で、ユーザーデータが仮想メモリ空間に複製される回数が小さいので、復元フィールド(reconstructed field)901は、相対的に小さなサイズを有する内蔵RCを含む。このようなシステム状況に対し、内蔵RCは、(r-1)ビットのサイズを有する基本RC(base RC)として構成される。
【0049】
ユーザーデータがホストシステムの仮想メモリ空間に複製される回数がPL900の復元フィールドの内蔵RCのサイズを超える他の実施形態において、復元フィールドは、拡張されたRCテーブルエントリへのインデックスを含む。別の実施形態で、PLの選択されたビットのようなインジケータフラグ(indicator flag)は、仮想メモリ空間でのユーザーデータの複製回数が内蔵RCのサイズを超えているか否かを示すために使用される。
【0050】
図9Bは、本発明の一実施形態によるインジケータフラグ911を含むPL910の一例を示す図である。
図9Bに示すように、インジケータフラグ911は、ユーザーデータの複製回数が復元フィールド912中の内蔵RCのサイズ以下であることを示すように設定される。したがって、復元フィールド912のコンテンツは、ホストシステム101の仮想メモリ空間中のユーザーデータの複製回数を指すものである。
【0051】
図9Cは、復元フィールドのコンテンツが、複製されたユーザーデータの拡張されたカウントを含む拡張されたRCテーブル913へのインデックスを含む場合に、インジケータフラグ911が、ユーザーデータの複製回数が復元フィールド912中の内蔵RCのサイズを超えることを示すように設定された状況を示す図である。または、復元フィールド912は、例えば、頻繁に複製されるデータを含む特定のデータパターンテーブル914へのインデックス又はポインタを含み得る。一実施形態で、変換テーブルは、
図8に示すように、頻繁に複製されるユーザーデータに対して、特定のデータパターンテーブル914へのインデックス又はポインタであるPLIDを含み、ユーザーデータに関連付けられるレイテンシーを減少させ得る。つまり、変換テーブルにポインタ又はインデックスを置くことにより、仮想メモリ空間に頻繁に複製されるユーザーデータは、変換テーブルがアクセスされるとき、自動的に検出され得る。
【0052】
MR209のそれぞれは、メタデータのメモリ領域及び複数のデータメモリ領域を含む。システムパーティション200が重複排除メモリ(deduplication memory)として構成される場合、メタデータ領域はTT MEM211に格納された変換テーブルを含む。MR209のデータメモリ領域は、ハッシュテーブル/基準カウンタ(HTRC:hash table/reference counter)メモリ(HTRC MEM)、署名メモリ(SG MEM:signatur memory)、及びオーバーフローメモリ(OV MEM:overflow memory)を含む。
【0053】
他の仮想アドレスからMR209中の同じ物理メモリ領域へのライトは、MRM207によって管理される。HTRCマネージャー222及びSIGマネージャー224は、重複排除機能(dedupe functions)を遂行し、ハッシュテーブルの行(別名、バケット)及び列の位置に関して、メモリの位置を計算する。他の仮想アドレスから同じHTRCバケットへのライトは、ホストからのオリジナル順序とは異なる順序でHTRCバケットに到達し得る。一貫性(consistency)は、WDEM204によって管理される。ライトデータ、例えば、ライトデータA及びライトデータBが、同じPLID(A==B)に到達した場合、基準カウンターは、単純に増加される。他の仮想アドレスからのライトデータが同一ではなく、同じバケットナンバーを有するが、他の列(別名、ウェイ)ナンバーを有する場合、そのライトデータは同じバケットに格納されるが、他のウェイに異なって格納される。バケットに1つのエントリだけが残った場合には、A又はBのいずれか1つが最後のエントリに格納され、他の1つは、オーバーフロー領域に格納される。ライトデータAとライトデータBとが異なるが、同じハッシュバケット及び行番号を有する場合、2番目のライトデータは、オーバーフロー領域に格納される。
【0054】
以上、本発明の技術分野における当業者によって認識されるように、詳細な説明に記載された本発明の思想は、広範囲なアプリケーションにおいて変形されるか、又は修正され得る。したがって、本発明の技術範囲は、上述の特定の実施形態に限定されない。
【符号の説明】
【0055】
100 システムアーキテクチャ
101 ホストシステム
102 ホストインターフェース
103 フロントエンドスケジューラ
200、200A~200K システムパーティション
201 ライトデータパス
202 リードデータパス
203 トランザクションマネージャー(TM)
204 ライトデータエンジンマネージャー(WDEM)
205 ライトデータエンジン(WDE)
206 メモリ領域アービタ
207 メモリ領域マネージャー(MRM)
208 インターコネクト
209 メモリ領域(MR)
210 変換テーブルマネージャー(TT MGR)
211 TTメモリ(TT MEM)
212 リードデータエンジンマネージャー(RDEM)
213 リードデータエンジン(RDE)
214 ライトデータバッファコントローラ
215 TMコントローラ(TM CTRL)
216 トランザクションテーブル(TMテーブル)
217 OBNテーブル
218 コマンド(CMD)ディスパッチャ
219 OVMIマネージャー
220 コマンドキュー(CQ)
221 ライトデータバッファ
222 ハッシュテーブル/基準カウンターマネージャー(HTRC MGR)
223 オーバーフローマネージャー(OVM MGR)
224 署名マネージャー(SIG MGR)
400、500 変換テーブル
501 ハッシュテーブル
502 論理アドレス
503 フォーマット
900、910 物理ライン(PL)
901、912 復元フィールド
911 インジケータフラグ
913 拡張されたRCテーブル
914 特定のデータパターンテーブル