(57)【要約】      （修正有）【課題】向上された性能を有するインメモリコンピューティングのための大容量メモリシステムを可能にするスケーラブルアーキテクチャを提供する。【解決手段】ライトデータパス２０１は、コマンドキューを含み、アウトスタンディングバケットナンバー及びコマンドキューを使用して物理メモリ空間に対するデータ一貫性及びデータ整合性を維持し、ＴＭ２０３からデータライト要請を受信し、データライト要請のそれぞれに対応するライトコマンドを選択されたコマンドキューに伝送するＷＤＥＭ２０４と、コマンドキューのそれぞれに対応し、データライト要請に対応するデータが仮想メモリ空間に複製されていない場合、データをオーバーフローメモリ領域に格納することにより、対応するコマンドキューに格納されたライトコマンドに応答するか、又はデータが仮想メモリ空間に複製された場合、データに対する基準カウンタを増加させるＷＤＥ２０５と、を備える。【選択図】図２
2020030822.tif 000002
【特許請求の範囲】
【請求項１】
メモリシステムであって、
少なくとも１つのシステムパーティション（ｓｙｓｔｅｍ  ｐａｒｔｉｔｉｏｎ）を含み、
前記少なくとも１つのシステムパーティションは、
第１所定サイズの物理メモリ空間を有する物理メモリと、
ホストシステムからデータライト（ｗｒｉｔｅ）要請及び対応するデータを受信し、トランザクションテーブルを使用して、前記ホストシステムの仮想メモリ空間に対するデータ一貫性及びデータ整合性を維持する少なくとも１つのトランザクションマネージャーと、
少なくとも１つのコマンドキューを含み、アウトスタンディングバケットナンバー（ｏｕｔｓｔａｎｄｉｎｇ  ｂｕｃｋｅｔ  ｎｕｍｂｅｒ）及び前記少なくとも１つのコマンドキューを使用して前記物理メモリ空間に対するデータ一貫性及びデータ整合性を維持し、前記トランザクションマネージャーから前記データライト要請を受信し、前記データライト要請のそれぞれに対応するライトコマンドを前記少なくとも１つのコマンドキューのうちの選択されたコマンドキューに伝送する少なくとも１つのライトデータエンジンマネージャーと、
前記少なくとも一つのコマンドキューのそれぞれに対応し、データライト要請に対応する前記データが前記仮想メモリ空間に複製されていない場合、前記データをオーバーフローメモリ領域に格納することにより、前記対応するコマンドキューに格納されたライトコマンドに応答するか、又はデータライト要請に対応する前記データが前記仮想メモリ空間に複製されている場合、前記データに対する基準カウンタを増加させるライトデータエンジンと、を備えることを特徴とするメモリシステム。
【請求項２】
前記仮想メモリ空間は、前記物理メモリ空間の前記第１所定サイズ以上の第２所定サイズを含み、
前記メモリシステムは、前記仮想メモリ空間の前記第２所定サイズに対応する第１所定個数のビット、前記物理メモリの前記第１所定サイズに対応する第２所定個数のビット、及びデータグラニュラリティ（ｄａｔａ  ｇｒａｎｕｌａｒｉｔｙ）に対する第３所定個数のビットを含む変換テーブルを含み、
前記第２所定個数のビット及び前記第３所定個数のビットは、前記第１所定個数のビットのサブセット（ｓｕｂｓｅｔ）であることを特徴とする請求項１に記載のメモリシステム。
【請求項３】
前記第１所定個数のビットは４０ビットであり、前記第２所定個数のビットは３２ビットであり、前記第３所定個数のビットは６ビットであることを特徴とする請求項２に記載のメモリシステム。
【請求項４】
前記トランザクションマネージャーは、データライト要請の受信に応答して、前記変換テーブルにアクセスし、前記データライト要請の仮想アドレスに対応する物理アドレスを判定することを特徴とする請求項２に記載のメモリシステム。
【請求項５】
前記トランザクションマネージャーは、前記ホストシステムの前記仮想メモリ空間に対してライト・アフター・ライト（ｗｒｉｔｅ−ａｆｔｅｒ−ｗｒｉｔｅ）でのデータ一貫性及びデータ整合性を維持することを特徴とする請求項１に記載のメモリシステム。
【請求項６】
前記トランザクションマネージャーは、前記トランザクションテーブルを使用して、前記ホストシステムから受信された複数のデータライト要請を追跡することを特徴とする請求項１に記載のメモリシステム。
【請求項７】
前記トランザクションマネージャーは、トランザクション識別子を前記受信されたデータライト要請に割り当て、
前記トランザクションマネージャーは、前記受信されたデータライト要請の前記トランザクション識別子に対応する順序で、前記ホストシステムにライト完了メッセージを伝送することを特徴とする請求項６に記載のメモリシステム。
【請求項８】
前記トランザクションマネージャーは、前記トランザクションテーブルを使用してライトデータ要請の複数のスレッドを追跡することを特徴とする請求項６に記載のメモリシステム。
【請求項９】
メモリシステムであって、
複数のシステムパーティションを含み、
前記複数のシステムパーティションのうちの少なくとも１つのシステムパーティションは、
複数のメモリ領域を含む第１所定サイズの物理メモリ空間を有する物理メモリと、
ホストシステムからデータライト（ｗｒｉｔｅ）要請及び対応するデータを受信し、トランザクションテーブルを使用して、前記第１所定サイズの前記物理的サイズ以上の第２所定サイズを含む前記ホストシステムの仮想メモリ空間に対するデータ一貫性及びデータ整合性を維持し、変換テーブルを使用して、前記ホストシステムの前記仮想メモリ空間を、前記少なくとも１つのシステムパーティションの物理メモリ空間に変換する少なくとも１つのトランザクションマネージャーと、
少なくとも１つのコマンドキューを含み、アウトスタンディングバケットナンバー（ｏｕｔｓｔａｎｄｉｎｇ  ｂｕｃｋｅｔ  ｎｕｍｂｅｒ）及び前記少なくとも１つのコマンドキューを使用して前記物理メモリ空間に対するデータ一貫性及びデータ整合性を維持し、前記トランザクションマネージャーから前記データライト要請を受信し、前記データライト要請のそれぞれに対応するライトコマンドを前記少なくとも１つのコマンドキューの中の選択されたコマンドキューに伝送する少なくとも１つのライトデータエンジンマネージャーと、
前記少なくとも１つのコマンドキューのそれぞれに対応し、前記データライト要請に対応する前記データが前記仮想メモリ空間に複製されていない場合、前記データをオーバーフロー領域に格納するか、又は前記データが前記仮想メモリ空間に複製されている場合、前記データに対する基準カウンタを増加させることによって、前記対応するコマンドキューに格納されたライトコマンドに応答するライトデータエンジンと、
前記物理メモリの各メモリ領域に対応し、前記各メモリ領域に格納されたデータに対する基準カウンターストレージ空間を含み、前記対応する各メモリ領域へのライトデータエンジンアクセスを制御するメモリ領域マネージャーと、を備えることを特徴とするメモリシステム。
【請求項１０】
前記変換テーブルは、前記仮想メモリ空間の前記第２所定サイズに対応する第１所定個数のビット、前記物理メモリの前記第１所定サイズに対応する第２所定個数のビット、及びデータグラニュラリティに対応する第３所定個数のビットを含み、
前記第２所定個数のビット及び前記第３所定個数のビットは、前記第１所定個数のビットのサブセット（ｓｕｂｓｅｔ）であることを特徴とする請求項９に記載のメモリシステム。
【請求項１１】
前記第１所定個数のビットは、４０ビットを含み、前記第２所定個数のビットは、３２ビットを含み、前記データグラニュラリティに対する前記第３所定個数のビットは、６ビットを含むことを特徴とする請求項１０に記載のメモリシステム。
【請求項１２】
前記トランザクションマネージャーは、前記ホストシステムの前記仮想メモリ空間に対するライト・アフター・ライト（ｗｒｉｔｅ−ａｆｔｅｒ−ｗｒｉｔｅ）でのデータ一貫性及びデータ整合性を維持することを特徴とする請求項９に記載のメモリシステム。
【請求項１３】
前記トランザクションマネージャーは、データライト要請の受信に応答して、前記変換テーブルにアクセスし、前記データライト要請の仮想アドレスに対応する物理アドレスを判定することを特徴とする請求項９に記載のメモリシステム。
【請求項１４】
前記トランザクションマネージャーは、前記トランザクションテーブルを使用して、前記ホストシステムから受信された複数のデータライト要請を追跡することを特徴とする請求項９に記載のメモリシステム。
【請求項１５】
前記トランザクションマネージャーは、受信されたデータライト要請にトランザクション識別子を割り当て、
前記トランザクションマネージャーは、前記受信されたデータライト要請の前記トランザクション識別子に対応する順序で、前記ホストシステムにライト完了メッセージを伝送することを特徴とする請求項１４に記載のメモリシステム。
【請求項１６】
前記トランザクションマネージャーは、前記トランザクションテーブルを使用してライトデータ要請の複数のスレッドを追跡することを特徴とする請求項１４に記載のメモリシステム。
【請求項１７】
重複排除メモリシステムであって、
複数のシステムパーティションを含み、
前記複数のシステムパーティションのうちの少なくとも１つのシステムパーティションは、
第１所定サイズの物理メモリ空間を有する物理メモリと、
ホストシステムからデータライト要請及び対応するデータを受信し、トランザクションテーブルを使用して、前記物理メモリ空間の前記第１所定サイズ以上の第２所定サイズを含む前記ホストシステムの仮想メモリ空間に対するデータ一貫性及びデータ整合性を維持し、前記仮想メモリ空間の前記第２所定サイズに対応する第１所定個数のビット、前記物理メモリの前記第１所定サイズに対応する第２所定個数のビット、及びデータグラニュラリティに対する第３所定個数のビットを含み、前記第２所定個数のビット及び前記第３所定個数のビットは、前記第１所定個数のビットのサブセット（ｓｕｂｓｅｔ）である変換テーブルを使用して、前記ホストシステムの前記仮想メモリ空間を前記少なくとも１つのシステムパーティションの前記物理メモリ空間に変換する少なくとも１つのトランザクションマネージャーと、
少なくとも１つのコマンドキューを含み、アウトスタンディングバケットナンバー（ｏｕｔｓｔａｎｄｉｎｇ  ｂｕｃｋｅｔ  ｎｕｍｂｅｒ）及び前記少なくとも１つのコマンドキューを使用して前記物理メモリ空間に対するデータ一貫性及びデータ整合性を維持し、前記トランザクションマネージャーから前記データライト要請を受信し、前記データライト要請のそれぞれに対応するライトコマンドを前記少なくとも１つのコマンドキューの中の選択されたコマンドキューに伝送する少なくとも１つのライトデータエンジンマネージャーと、
各コマンドキューに対応し、前記データライト要請に対応する前記データが前記仮想メモリ空間に複製されていない場合、前記データをオーバーフロー領域に格納するか、又は前記データライト要請に対応する前記データが前記仮想メモリ空間に複製されている場合、基準カウンタを増加させることによって、前記対応するコマンドキューに格納されたライトコマンドに応答するライトデータエンジンと、備えることを特徴とする重複排除メモリシステム。
【請求項１８】
前記物理メモリは、複数のメモリ領域を含み、
前記重複排除メモリシステムは、前記物理メモリの各メモリ領域に対応し、前記メモリ領域に格納されたデータに対する基準カウンターストレージ空間を含み、前記対応するメモリ領域へのライトデータエンジンアクセスを制御するメモリ領域マネージャーと、をさらに含むことを特徴とする請求項１７に記載の重複排除メモリシステム。
【請求項１９】
前記第１所定個数のビットは、４０ビットを含み、前記第２所定個数のビットは、３２ビットを含み、前記データグラニュラリティに対する前記第３所定個数のビットは、６ビットを含むことを特徴とする請求項１８に記載の重複排除メモリシステム。
【請求項２０】
前記トランザクションマネージャーは、前記トランザクションテーブルを使用してライトデータ要請の複数のスレッドを追跡することを特徴とする請求項１９に記載の重複排除メモリシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリシステムに関し、より詳しくは、ホストシステムの仮想メモリ空間に複製されたユーザーデータについて、当該システムの物理メモリ空間におけるユーザーデータの重複排除（ｄｅｄｕｐｌｉｃａｔｉｏｎ）を提供するメモリシステムに関する。
【背景技術】
【０００２】
人工知能（ＡＩ：Ａｒｔｉｆｉｃｉａｌ  Ｉｎｔｅｌｌｉｇｅｎｃｅ）、ビッグデータ、及びインメモリプロセシングは、ますます大きなメモリ容量を使用する。このような要求を満足させるために、インメモリ重複排除システム（ｄｅｄｕｐｅ−ＤＲＡＭ）が開発されている。不幸にも、従来の重複排除システムは、いくつかの問題点を有している。例えば、重複排除変換テーブル（ｄｅｄｕｐｌｉｃａｔｉｏｎ  ｔｒａｎｓｌａｔｉｏｎ  ｔａｂｌｅ）は、仮想メモリサイズの増加につれて非線形的に増加する。さらに、重複排除動作は、通常、リード（ｒｅａｄ）及びライト（ｗｒｉｔｅ）レイテンシーのいくらかの増加を引き起こす。つまり、単一の論理的なリード又はライトは、複数の物理的なリード又はライトを必要とし、これにより、パフォーマンスが低下する。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】米国特許第９３５５１０９号明細書
【特許文献２】米国特許第９７９９０１７号明細書
【特許文献３】米国特許出願公開第２０１６／０３７１２９５号明細書
【非特許文献】
【０００４】
【非特許文献１】ＷＡＮＧ，Ｌｏｎｇｘｉａｎｇ  ｅｔ  ａｌ．，“ＤＯＭｅ：Ａ  ｄｅｄｕｐｌｉｃａｔｉｏｎ  ｏｐｔｉｍｉｚａｔｉｏｎ  ｍｅｔｈｏｄ  ｆｏｒ  ｔｈｅ  ＮｅｗＳＱＬ  ｄａｔａｂａｓｅ  ｂａｃｋｕｐｓ”，ＰＬｏＳ  ＯＮＥ  １２（１０）：ｅ０１８５１８９．ｈｔｔｐｓ：／／ｄｏｉ．ｏｒｇ／１０．１３７１／ｊｏｕｒｎａｌ．ｐｏｎｅ．０１８５１８９，Ｘｉ’ａｎ，Ｓｈａａｎｘｉ，Ｐ．Ｒ．Ｃｈｉｎａ
【発明の概要】
【発明が解決しようとする課題】
【０００５】
本発明は、上記従来の問題点に鑑みてなされたものであって、本発明の目的は、向上された性能を有するインメモリコンピューティングのための大容量メモリシステムを可能にするスケーラブルアーキテクチャを提供することにある。
【課題を解決するための手段】
【０００６】
上記目的を達成するためになされた本発明の一態様によるメモリシステムは、少なくとも１つのシステムパーティションを含み、前記少なくとも１つのシステムパーティションは、第１所定サイズの物理メモリ空間を有する物理メモリと、ホストシステムからデータライト（ｗｒｉｔｅ）要請及び対応するデータを受信し、トランザクションテーブルを使用して、前記ホストシステムの仮想メモリ空間に対するデータ一貫性及びデータ整合性（ｄａｔａ  ｃｏｈｅｒｅｎｃｙ  ａｎｄ  ｄａｔａ  ｃｏｎｓｉｓｔｅｎｃｙ）を維持する少なくとも１つのトランザクションマネージャー（ｔｒａｎｓａｃｔｉｏｎ  ｍａｎａｇｅｒ）と、少なくとも１つのコマンドキューを含み、アウトスタンディングバケットナンバー（ｏｕｔｓｔａｎｄｉｎｇ  ｂｕｃｋｅｔ  ｎｕｍｂｅｒ）及び前記少なくとも１つのコマンドキューを使用して前記物理メモリ空間に対するデータ一貫性及びデータ整合性を維持し、前記トランザクションマネージャーから前記データライト要請を受信し、前記データライト要請のそれぞれに対応するライトコマンドを前記少なくとも１つのコマンドキューのうちの選択されたコマンドキューに伝送する少なくとも１つのライトデータエンジンマネージャー（ｗｒｉｔｅ  ｄａｔａ  ｅｎｇｉｎｅ  ｍａｎｇｅｒ）と、前記少なくとも１つのコマンドキューのそれぞれに対応し、データライト要請に対応する前記データが前記仮想メモリ空間に複製されていない場合、前記データをオーバーフローメモリ領域に格納することにより、前記対応するコマンドキューに格納されたライトコマンドに応答するか、又はデータライト要請に対応する前記データが前記仮想メモリ空間に複製されている場合、前記データに対する基準カウンタを増加させるライトデータエンジン（ｗｒｉｔｅ  ｄａｔａ  ｅｎｇｉｎｅ）と、を備えることを特徴とする。
【０００７】
前記仮想メモリ空間は、前記物理メモリ空間の前記第１所定サイズ以上の第２所定サイズを含み、前記メモリシステムは、前記仮想メモリ空間の前記第２所定サイズに対応する第１所定個数のビット、前記物理メモリの前記第１所定サイズに対応する第２所定個数のビット、及びデータグラニュラリティ（ｇｒａｎｕｌａｒｉｔｙ）に対する第３所定個数のビットを含む変換テーブルを含み、前記第２所定個数のビット及び前記第３所定個数のビットは、前記第１所定個数のビットのサブセットであり得る。
【０００８】
上記目的を達成するためになされた本発明の他の態様によるメモリシステムは、複数のシステムパーティションを含み、前記複数のシステムパーティションのうちの少なくとも１つのシステムパーティションは、複数のメモリ領域を含む第１所定サイズの物理メモリ空間を有する物理メモリと、ホストシステムからデータライト要請及び対応するデータを受信し、トランザクションテーブルを使用して、前記第１所定サイズの前記物理的サイズ以上の第２所定サイズを含む前記ホストシステムの仮想メモリ空間に対するデータ一貫性及びデータ整合性を維持し、変換テーブルを使用して、前記ホストシステムの前記仮想メモリ空間を、前記少なくとも１つのシステムパーティションの物理メモリ空間に変換する少なくとも１つのトランザクションマネージャー（ｔｒａｎｓａｃｔｉｏｎ  ｍａｎａｇｅｒ）と、少なくとも１つのコマンドキューを含み、アウトスタンディングバケットナンバー（ｏｕｔｓｔａｎｄｉｎｇ  ｂｕｃｋｅｔ  ｎｕｍｂｅｒ）及び前記少なくとも１つのコマンドキューを使用して前記物理メモリ空間に対するデータ一貫性及びデータ整合性を維持し、前記トランザクションマネージャーから前記データライト要請を受信し、前記データライト要請のそれぞれに対応するライトコマンドを前記少なくとも１つのコマンドキューの中の選択されたコマンドキューに伝送する少なくとも１つのライトデータエンジンマネージャー（ｗｒｉｔｅ  ｄａｔａ  ｅｎｇｉｎｅ  ｍａｎａｇｅｒ）と、前記少なくとも１つのコマンドキューのそれぞれに対応し、前記データライト要請に対応する前記データが前記仮想メモリ空間に複製されていない場合、前記データをオーバーフロー領域に格納するか、又は前記データが前記仮想メモリ空間に複製されている場合、前記データに対する基準カウンタを増加させることによって、前記対応するコマンドキューに格納されたライトコマンドに応答するライトデータエンジン（ｗｒｉｔｅ  ｄａｔａ  ｅｎｇｉｎｅ）と、前記物理メモリの各メモリ領域に対応し、前記各メモリ領域に格納されたデータに対する基準カウンターストレージ空間を含み、前記対応する各メモリ領域へのライトデータエンジンアクセスを制御するメモリ領域マネージャー（ｍｅｍｏｒｙ  ｒｅｇｉｏｎａｌ  ｍａｎａｇｅｒ）と、を備えることを特徴とする。
【０００９】
前記変換テーブルは、前記仮想メモリ空間の前記第２所定サイズに対応する第１所定個数のビット、前記物理メモリの前記第１所定サイズに対応する第２所定個数のビット、及びデータグラニュラリティ（ｇｒａｎｕｌａｒｉｔｙ）に対する第３所定個数のビットを含み、前記第２所定個数のビット及び前記第３所定個数のビットは、前記第１所定個数のビットのサブセットであり得る。
【００１０】
上記目的を達成するためになされた本発明の一態様による重複排除メモリシステムは、複数のシステムパーティションを含み、前記複数のシステムパーティションのうちの少なくとも１つのシステムパーティションは、第１所定サイズの物理メモリ空間を有する物理メモリと、ホストシステムからデータライト要請及び対応するデータを受信し、トランザクションテーブルを使用して、前記物理メモリ空間の前記第１所定サイズ以上の第２所定サイズを含む前記ホストシステムの仮想メモリ空間に対するデータ一貫性及びデータ整合性を維持し、前記仮想メモリ空間の前記第２所定サイズに対応する第１所定個数のビット、前記物理メモリの前記第１所定サイズに対応する第２所定個数のビット、及びデータグラニュラリティに対する第３所定個数のビットを含み、前記第２所定個数のビット及び前記第３所定個数のビットは、前記第１所定個数のビットのサブセットである変換テーブルを使用して、前記ホストシステムの前記仮想メモリ空間を前記少なくとも１つのシステムパーティションの前記物理メモリ空間に変換する少なくとも１つのトランザクションマネージャー（ｔｒａｎｓａｃｔｉｏｎ  ｍａｎａｇｅｒ）と、少なくとも１つのコマンドキューを含み、アウトスタンディングバケットナンバー（ｏｕｔｓｔａｎｄｉｎｇ  ｂｕｃｋｅｔ  ｎｕｍｂｅｒ）及び前記少なくとも１つのコマンドキューを使用して前記物理メモリ空間に対するデータ一貫性及びデータ整合性を維持し、前記トランザクションマネージャから前記データ要請を受信し、前記データライト要請のそれぞれに対応するライトコマンドを前記少なくとも１つのコマンドキューの中の選択されたコマンドキューに伝送する少なくとも１つのライトデータエンジンマネージャー（ｗｒｉｔｅ  ｄａｔａ  ｅｎｇｉｎｅ  ｍａｎａｇｅｒ）と、各コマンドキューに対応し、前記データライト要請に対応する前記データが前記仮想メモリ空間に複製されていない場合、前記データをオーバーフロー領域に格納するか、又は前記データライト要請に対応する前記データが前記仮想メモリ空間に複製されている場合、基準カウンタを増加させることによって、前記対応するコマンドキューに格納されたライトコマンドに応答するライトデータエンジン（ｗｒｉｔｅ  ｄａｔａ  ｅｎｇｉｎｅ）と、を備えることを特徴とする。
【発明の効果】
【００１１】
本発明によれば、向上された性能を有するインメモリコンピューティングのための大容量メモリシステムを可能にするスケーラブルアーキテクチャが提供される。
【図面の簡単な説明】
【００１２】
【図１】本発明の一実施形態によるスケーラブル重複排除メモリシステムアーキテクチャの一例を示すブロック図である。
【図２】図１に示すシステムパーティションの一例を示すより詳細なブロック図である。
【図３】本発明の一実施形態によるシステムパーティションのライトデータパスの他の構成例を示すブロック図である。
【図４】本発明の一実施形態による、変換テーブルによって使用され、ホストシステムの仮想メモリ空間をシステムの仮想メモリ空間に変換する、図１の重複排除メモリシステムに対する仮想メモリ空間と、物理メモリ空間との関係の一例を示す詳細図である。
【図５】本発明の一実施形態による例示的な変換テーブルの変換テーブルエントリと、例示的なハッシュテーブルのハッシュテーブルエントリとの間の関係を示す図である。
【図６】本発明の一実施形態によるトランザクションマネージャーによって提供される例示的な制御プロセスのフローチャートである。
【図７】本発明の一実施形態によるライトデータエンジンマネージャーによって提供される例示的な制御プロセスのフローチャートである。
【図８】本発明の一実施形態によるライトデータエンジンによって提供される例示的な制御プロセスのフローチャートである。
【図９Ａ】本発明の一実施形態による内蔵基準カウンタを有する復元フィールドを含む物理ラインの一例を示す図である。
【図９Ｂ】本発明の一実施形態によるインジケータフラグを含む物理ラインの一例を示す図である。
【図９Ｃ】復元フィールドのコンテンツが複製されたユーザーデータの拡張されたカウンタを含む拡張された基準カウンタテーブルへのインデックスを含む場合に、インジケータフラグが、ユーザーデータの複製回数が復元フィールド内の内蔵基準カウンタのサイズを超えることを指すように設定された状況を示す図である。
【発明を実施するための形態】
【００１３】
以下の詳細な説明では、本発明の完全な理解を提供するために多様な実施形態が記載される。しかし、本発明の思想は、本明細書の詳細な説明なしに、当業者によって実施され得る。他の例では、周知の方法、手順、構成、及び回路は、本発明の実施形態を曖昧にしないために記載していない。さらに、記載された態様は、スマートフォン、ユーザー装置（Ｕｓｅｒ  Ｅｑｕｉｐｍｅｎｔ）、及び／又はラップトップコンピュータを含むが、これらに限定されないイメージング装置又はシステムで、低電力、３Ｄ深度測定を遂行するように具現され得る。
【００１４】
本明細書の詳細な説明全体に亘る「一実施形態」の用語は、実施形態に関連付けられた特定の特徴（ｆｅａｔｕｒｅ）、構造（ｓｔｒｕｃｔｕｒｅ）、又は特性（ｃｈａｒａｃｔｅｒｉｓｔｉｃ）が本明細書に記載された少なくとも１つの実施形態に含まれることを意味する。つまり、詳細な説明の多様な部分で「一実施形態で」又は「一実施形態により」の表現（又は類似の意味を有する他の表現）で記載されたものは、必ずしもすべて同じ実施形態を示すとは限らない。さらに、特定の特徴、構造、又は特性は、１つ以上の実施形態で、適切な方法で組み合わせられる。これに対し、本明細書で使用される「例示的」の言葉は、例（ｅｘａｍｐｌｅ）、事例（ｉｎｓｔａｎｃｅ）、又は図示例（ｉｌｌｕｓｔｒａｔｉｏｎ）として提供すること」を意味する。「例示的」として本明細書に記載されたいくつかの実施形態は、他の実施形態よりも必ず好ましい、又は有利であると解釈されない。さらに、特定の特徴、構造、又は特性は、１つ以上の実施形態で適切な方法で組み合わせられる。また、本明細書に記載されたコンテキストに応じて、単数の用語は、対応する複数形を含み、複数の用語は、対応する単数形を含む。
【００１５】
本明細書で説明される多様な図面（構成図面を含む）は、単に説明の便宜のために示される。参照番号は、対応する及び／又は類似の要素を示すために図面で繰り返される。
【００１６】
本明細書で使用される用語は、いくつかの実施形態を説明するためのものであり、本発明はこれに限定されない。「含む」の用語は、本明細書で使用される場合、列挙された特徴（ｆｅａｔｕｒｅｓ）、整数（ｉｎｔｅｇｅｒｓ）、段階（ｓｔｅｐｓ）、動作（ｏｐｅｒａｔｉｏｎｓ）、要素（ｅｌｅｍｅｎｔｓ）、及び／又は構成（ｃｏｍｐｏｎｅｎｔｓ）の存在を明示するが、１つ以上の他の特徴、整数、段階、動作、要素、構成、及び／又はそれらのグループの存在や追加を否定しない。本明細書で使用される、「第１」、「第２」などの用語は、名詞に先立つラベルとして使用され、明示的に定義しない限り、特定のタイプの順序（例えば、空間的、時間的、論理的など）に限されない。さらに、同一の参照番号は、２つ以上の図面で使用され、同一又は類似の機能を有する部分、構成、ブロック、回路、ユニット、又はモジュールを指す。しかし、このような使用は、図面の簡潔性と説明の便宜のためのものであり、このような構成又はユニットの構成的又は構造的な細部が、すべての実施形態で同一又は共通に参照される部分／モジュールが、本明細書に記載されたいくつかの例示的な実施形態を具現する唯一の方法であることを限定しない。
【００１７】
要素又は層が、他の要素又は層に連結されると記載される場合、それは、他の要素又は層に直接連結されるか、又は中間要素又は層が存在し得る。逆に、要素が、他の要素又は層に直接接続されていると記載される場合には、中間要素又は層が存在しない。本明細書で使用される、「及び／又は」の用語は、１つ以上の関連する列挙されたアイテムの任意の組み合わせを含む。
【００１８】
特に定義しない限り、本明細書で使用されるすべての用語（技術的又は科学的な用語を含む）は、本発明が属する技術分野における通常の技術者によって一般的に理解される同じ意味を有する。一般辞典において定義される用語のような用語は、関連技術分野のコンテキストでのそれらの意味と同じ意味を有するものと解釈され、本明細書で明示的に定義されない限り、理想的であるか、又は過度に形式的な意味に解釈されない。
【００１９】
本明細書で使用される「モジュール」の用語は、モジュールに関連付けられて本明細書で説明した機能を提供するように構成されたソフトウェア、ファームウェア、及び／又はハードウェアの任意の組み合わせを指す。ソフトウェアは、ソフトウェアパッケージ、コード、及び／又はコマンドセット若しくはコマンドで具現され、本明細書で記載された何らかの具現で使用されるような「ハードウェア」の用語は、例えば、ハードワイヤド回路、プログラム可能な回路、状態マシン回路、及び／又はプログラム可能な回路によって実行されるコマンドを格納するファームウェアのいずれか１つ又はそれらの組み合わせを含む。モジュールは、集積回路（ＩＣ）、システム・オン・チップ（ＳｏＣ）などのような、しかしこれらに限定されない、より大きなシステムの一部を形成する回路として総合的に又は個別に具現される。本明細書に記載された多様な構成及び／又は機能ブロックは、多様な構成及び／又は機能ブロックに関連して本明細書に記載された機能を提供するソフトウェア、ファームウェア、及び／又はハードウェアを含むモジュールとして具現される。
【００２０】
本明細書に記載された内容は、システムの仮想メモリサイズが増加してもサイズが非線形的に増加しない変換テーブルを有する大規模重複排除メモリシステムアーキテクチャ（ｌａｒｇｅ−ｓｃａｌｅ  ｄｅｄｕｐｌｉｃａｔｉｏｎ  ｍｅｍｏｒｙ  ｓｙｓｔｅｍ  ａｒｃｈｉｔｅｃｔｕｒｅ）を提供する。一実施形態で、本明細書に記載されたメモリシステムのアーキテクチャは、複数のシステムパーティションを含み、各システムパーティション内の機能は、並列化され、高いスループットと低いレイテンシー（ｌａｔｅｎｃｙ）を提供する。
【００２１】
一実施形態で、システムパーティションは、後述するホストシステムの仮想メモリ空間を管理するように構成され、仮想メモリ空間の整合性（ｃｏｎｃｕｒｒｅｎｃｙ）及び一貫性（ｃｏｈｅｒｅｎｃｙ）を提供する１つ以上のトランザクションマネージャー（ｔｒａｎｓａｃｔｉｏｎ  ｍａｎａｇｅｒｓ）を含む。さらに、各トランザクションマネージャーは、複数の未処理トランザクション（ｍｕｌｔｉｐｌｅ  ｏｕｔｓｔａｎｄｉｎｇ  ｔｒａｎｓａｃｔｉｏｎｓ）をサポートし、それぞれが複数の未処理トランザクションを含む複数のスレッドをサポートし得る。
【００２２】
システムパーティションは、システムパーティションの物理メモリ空間を管理するように構成された１つ以上のデータエンジンマネージャー（ｄａｔａ  ｅｎｇｉｎｅ  ｍａｎａｇｅｒ）を含む。データエンジンマネージャーは、複数の並列データエンジンを管理するように構成される。複数のデータエンジンは、システムパーティションの複数の直交メモリ領域（ｏｒｔｈｏｇｏｎａｌ  ｍｅｍｏｒｙ  ｒｅｇｉｏｎｓ）に対するメモリアドレスのインターリービング（ｉｎｔｅｒｌｅａｖｉｎｇ）を実行して、スループットを向上させ得る。複数のメモリ領域に対して本明細書で使用される「直交（ｏｒｔｈｏｇｏｎａｌ）」の用語は、どんなデータエンジンでも、システムパーティションの任意のメモリ領域にアクセスし得ることを意味する。例えば、ライトアクセスに対して、メモリライトの衝突（ｍｅｍｏｒｙ  ｗｒｉｔｅ  ｃｏｎｆｌｉｃｔ）は、データがライトデータエンジン（ＷＤＥ：Ｗｒｉｔｅ  Ｄａｔａ  Ｅｎｇｉｎｅ）に到着する前に、ライトデータエンジンマネージャー（ＷＤＥＭ：Ｗｒｉｔｅ  Ｄａｔａ  Ｅｎｇｉｎｅ  Ｍａｎａｇｅ）によって管理される。データがＷＤＥに到着した後に、メモリアクセスの衝突は削除される。リードアクセスの場合、リードデータエンジン（ＲＤＥ：Ｒｅａｄ  Ｄａｔａ  Ｅｎｇｉｎｅ）は、メモリアクセスの衝突がなく、制限なしに任意のメモリ領域にアクセスし得る。メモリ領域マネージャー（Ｍｅｍｏｒｙ  Ｒｅｇｉｏｎａｌ  Ｍａｎａｇｅｒ）は、異なる重複排除メモリ領域のような、アプリケーションに関連付けられているメモリ領域を管理する。つまり、物理メモリの衝突は、ＷＤＥＭによって「直交的に（ｏｒｔｈｏｇｏｎａｌｌｙ）」削除される。
【００２３】
また、本明細書に記載されたメモリシステムの構造（ａｒｃｈｉｔｅｃｔｕｒｅ）は、当該システムの物理メモリに格納されたユーザーデータに組み込まれて、メモリシステムによって使用されるメモリサイズ（メモリ量）を減らすことができる基準カウンタ（ＲＣ：ｒｅｆｅｒｅｎｃｅ  ｃｏｕｎｔｅｒ）を提供する。一実施形態で、基準カウンタは、基準カウンタが内蔵されたユーザーデータが、メモリシステムの仮想メモリ空間に複製される回数の指示（ｉｎｄｉｃａｔｉｏｎ）を提供する。一実施形態で、ユーザーデータに基準カウンタを内蔵させることは、６４バイトのユーザーデータのグラニュラリティ（ｇｒａｎｕｌａｒｉｔｙ）において、システムメモリ要件を約６％減少させる。他の実施形態で、ユーザーデータに基準カウンタを内蔵させることは、３２バイトのユーザーデータのグラニュラリティにおいて、システムメモリ要件を約１２％減少させる。
【００２４】
ユーザーデータが、メモリシステムの仮想メモリ空間に複製される回数が所定の回数以上である他の実施形態で、基準カウンタに使用されるフィールドは、拡張された基準カウンタテーブル又は特定のデータパターンテーブルにインデックスを提供するフィールドに交替される。さらに別の実施形態では、メモリシステムによって使用される変換テーブルは、ユーザーデータがメモリシステムの仮想メモリ空間に複製される回数が所定の回数以上の場合、特定のデータパターンテーブルへのポインタ又はインデックスを有するエントリを含み、これにより、レイテンシーが減少して、スループットが向上する。変換テーブルにポインタ又はインデックスを配置することにより、変換テーブルがアクセスされるときに、仮想メモリ空間に頻繁に複製されるユーザーデータが自動的に検出される。さらに、このような頻繁に複製されるユーザーデータは、このような変換テーブルの構成によって提供される自動検出を使用して、より簡単に分析され得る。
【００２５】
図１は、本発明の一実施形態によるスケーラブル重複排除メモリシステムアーキテクチャの一例を示すブロック図である。スケーラブル重複排除メモリシステムアーキテクチャ（以下、システムアーキテクチャ１００という）は、１つ以上のホスト装置又はホストシステム１０１、ホストインターフェース１０２、フロントエンドスケジューラ（ｆｒｏｎｔ−ｅｎｄ  ｓｃｈｅｄｕｌｅｒ）１０３、及び複数のシステムパーティション（２００Ａ〜２００Ｋ）を備える。ホストシステム１０１は、ホストインターフェース１０２と通信可能に連結され、ホストインターフェース１０２は、フロントエンドスケジューラ１０３と通信可能に連結される。ホストインターフェース１０２は、１つ以上の直接メモリアクセス（ＤＭＡ：ｄｉｒｅｃｔ  ｍｅｍｏｒｙ  ａｃｃｅｓｓ）装置（ＤＭＡ０〜ＤＭＡＨ−１）を含む。フロントエンドスケジューラ１０３は、複数のシステムパーティション（２００Ａ〜２００Ｋ）のそれぞれと通信可能に連結される。ホストシステム１０１、ホストインターフェース１０２、及びフロントエンドスケジューラ１０３は、よく知られている方法で動作する。
【００２６】
システムパーティション２００は、ライトデータパス２０１及びリードデータパス２０２を具備する。ライトデータパス２０１は、トランザクションマネージャー（ＴＭ：ｔｒａｎｓａｃｔｉｏｎ  ｍａｎａｇｅｒ）２０３、ライトデータエンジン（ＷＤＥ）マネージャー（ＷＤＥＭ：ＷＤＥ  ＭＧＲ）２０４、１つ以上のメモリ領域マネージャー（ＭＲＭ：ｍｅｍｏｒｙ  ｒｅｇｉｏｎａｌ  ｍａｎａｇｅｒ）２０７、及び１つ以上のメモリ領域（ＭＲ：ｍｅｍｏｒｙ  ｒｅｇｉｏｎ）２０９を備える。一実施形態で、ライトデータパス２０１は、トランザクションマネージャー（ＴＭ）２０３を含む。一実施形態で、システムパーティション当たり１つのＴＭ２０３及び１つのＷＤＥＭ２０４が存在する。図１に示すように、ＭＲ２０９は、メモリコントローラ（ＭＥＭ  ＣＮＴＲＬＲ）及びＤＩＭＭ（ｄｕａｌ  ｉｎ−ｌｉｎｅ  ｍｅｍｏｒｙ  ｍｏｄｕｌｅ）を含む。他の実施形態では、ＭＲ２０９に対する均等物を含む。ＭＲ２０９のメモリは、ダイナミックランダムアクセスメモリ（ＤＲＡＭ：ｄｙｎａｍｉｃ  ｒａｎｄｏｍ  ａｃｃｅｓｓ  ｍｅｍｏｒｙ）、スタティックランダムアクセスメモリ（ＳＲＡＭ：ｓｔａｔｉｃ  ｒａｎｄｏｍ  ａｃｃｅｓｓ  ｍｅｍｏｒｙ）、揮発性メモリ、及び／又は不揮発性メモリを含み得るが、これに限定されない。
【００２７】
ライトデータパス２０１と比較して、リードデータパス２０２は、リードデータパスに関連するデータ一貫性及びデータ整合性（ｄａｔａ  ｃｏｈｅｒｅｎｃｙ  ｏｒ  ｄａｔａ  ｃｏｎｓｉｓｔｅｎｃｙ）の問題がないため、相対的に単純である。図１及び図２に示すように、リードデータパス２０２は、１つ以上のＭＲ２０９、１つ以上のメモリ領域マネージャー（ＭＲＭ）２０７（図１）、リードデータエンジン（ＲＤＥ）マネージャー（ＲＤＥＭ：ＲＤＥ  ＭＧＲ）２１２、及び１つ以上のＲＤＥ２１３を含む。ホストシステム１０１から受信したデータのリード要請は、変換テーブル（図４）を含み、データのリードアクセスに応答して、適切なメモリ領域にアクセスし、リードデータパス２０２を介して要請されたリードデータを提供する。
【００２８】
図２は、図１に示すシステムパーティションの一例を示すより詳細なブロック図である。システムパーティション２００のアーキテクチャは、複数のトランザクション及び複数のスレッド（及びそれらの複数のトランザクション）が高いスループットを提供する方法で処理されるように並列化される。
【００２９】
システムパーティション２００のライトデータパス２０１は、トランザクションマネージャー（ＴＭ）２０３、ライトデータエンジンマネージャー（ＷＤＥＭ）２０４、１つ以上のＷＤＥ２０５（ＷＤＥ０〜ＷＤＥＮ−１）、メモリ領域アービタ２０６、ＭＲＭ２０７（ＭＲＭ０〜ＭＲＭＰ−１）、インターコネクト２０８、及び１つ以上のメモリ領域２０９（ＭＲ０〜ＭＲＰ−１）を含む。システムパーティション２００のリードデータパス２０２は、メモリ領域２０９、インターコネクト２０８、メモリ領域アービタ（ｍｅｍｏｒｙ  ｒｅｇｉｏｎ  ａｒｂｉｔｅｒ）２０６、リードデータエンジンマネージャー（ＲＤＥＭ）２１２、及び１つ以上のリードデータエンジン（ＲＤＥ）２１３を含む。システムパーティション２００は、変換テーブルマネージャー（ＴＴ  ＭＧＲ：ｔｒａｎｓｌａｔｉｏｎ  ｔａｂｌｅ  ｍａｎａｇｅｒ）２１０及びＴＴメモリ（ＴＴ  ＭＥＭ）２１１を含む。図１に示すシステムパーティション（２００Ａ〜２００Ｋ）のそれぞれは、同様に構成される。
【００３０】
メモリ領域アービタ２０６及びインターコネクト２０８のような構成要素は、よく知られている方法で動作し、ここでは詳細な説明を省略する。さらに、メモリ領域アービタ２０６は、図２に点線で示すように、ライトデータパス２０１及びリードデータパス２０２の両方に位置する。しかし、それぞれのパスは、実際には、他のメモリ領域アービタと通信し、それと連携する個々のメモリ領域アービタを含み得る。図１に示すように、リードデータパス２０２は、ＭＲＭ２０７を通過するが、図２では、そのように図示されていない。これは、リードデータエンジンマネージャー（ＲＤＥＭ）２１２は単に物理メモリ位置に対するＰＬＩＤを獲得するために変換テーブルをリードする必要があり、その後にＲＤＥ２１３がＰＬＩＤによってインデックスされたメモリ位置をリードするからである。さらに、図１及び図２に示す構成は、多様な構成及び／又は機能ブロックに関連付けられて本明細書に記載された機能を提供するソフトウェア、ファームウェア、及び／又はハードウェアを含むモジュールとして具現され得る。
【００３１】
図３は、本発明の一実施形態によるシステムパーティションのライトデータパスの他の構成例を示すブロック図である。より詳細には、図３に示すシステムパーティション２００のライトデータパス２０１の構成要素は、ＴＭ２０３、ＷＤＥＭ２０４、ＷＤＥ２０５、インターコネクト２０８、及びＭＲ２０９を含む。さらに、ライトデータパス２０１は、ライトデータバッファコントローラ２１４を含む。
【００３２】
図１〜図３を参照すると、ＴＭ２０３は、ＴＭコントローラ（ＴＭ  ＣＴＲＬ）２１５及び１つ以上のトランザクションテーブル（ＴＭ  ｔａｂｌｅ）２１６を含む。トランザクションテーブル２１６は、ホストシステム１０１とメモリ領域２０９との間で発生する未処理のライトトランザクションを追跡するために使用される。ＷＤＥＭ２０４は、ＯＢＮテーブル（ｏｕｔｓｔａｎｄｉｎｇ  ｂｕｃｋｅｔ  ｎｕｍｂｅｒ  ｔａｂｌｅ）２１７、ＣＭＤディスパッチャ（ｃｏｍｍａｎｄ  ｄｉｓｐａｔｃｈｅｒ）２１８、ＯＶＭＩマネージャー（ｏｖｅｒｆｌｏｗ  ｍｅｍｏｒｙ  ｉｎｖａｌｉｄａｔｅ  ｍａｎａｇｅｒ）２１９、及び１つ以上のＣＱ（ｃｏｍｍａｎｄ  ｑｕｅｕｅ）２２０（ＣＱ０〜ＣＱＮ−１）を含む。ＷＤＥ２０５は、１つ以上のＷＤＥ（ＷＤＥ０〜ＷＤＥＮ−１）を含む。ライトデータバッファコントローラ２１４は、１つ以上のライトデータバッファ２２１を含む。
【００３３】
ＴＭ２０３は、ホストシステム１０１の仮想メモリ空間に対するデータ一貫性及びデータ整合性（ｄａｔａ  ｃｏｈｅｒｅｎｃｙ  ａｎｄ  ｄａｔａ  ｃｏｎｓｉｓｔｅｎｃｙ）を管理するように構成される。一実施形態で、ＴＭ２０３は、複数の未処理のライトトランザクション及び複数のスレッドをサポートし、高いデータスループットを提供する。一実施形態で、トランザクションテーブル２１６は、未処理のライトトランザクションのリストを含む。他の実施形態で、トランザクションテーブル２１６は、それぞれが複数の未処理のトランザクションを有する複数のスレッドのリストを含む。ホストシステム１０１からデータライト要請を受信した場合、ＴＭ２０３は、トランザクション識別番号（ＩＤ：ｉｄｅｎｔｉｆｉｃａｔｉｏｎ  ｎｕｍｂｅｒ）をライトデータ要請に割り当て、トランザクションＩＤ及び他のメタデータは、選択されたトランザクションテーブル２１６に入力される。ライトデータ要請に関連付けられたデータは、ライトデータバッファ２２１に格納される。ライトデータバッファ２２１のデータに関連付けられたトランザクションＩＤ及び情報は、ライトデータパス２０１による追加処理のためにダウンストリームされる。ＴＭ２０３は、１つ以上のＴＭテーブル２１６を使用して、ホストシステム／仮想メモリ空間に順を追って掲示された順次的なメモリライトの完了を維持する。
【００３４】
図４は、本発明の一実施形態によるシステムパーティションの物理メモリ空間内のデータの位置を追跡するために、ＴＭ２０３及びＲＤＥＭ２１２によって使用される変換テーブルの一例を示す詳細図である。変換テーブル４００の特定の例示的実施形態は、１ＴＢ（つまり、２４０バイト）の仮想メモリ空間に対応するものであり、ＶＡ＿ＷＩＤＴＨと称される。重複排除グラニュラリティ（データグラニュラリティ）は、６４ビット（つまり、２６ビット）である。変換テーブル４００の物理メモリ空間は、２５６ＧＢ（つまり、２３８バイト）であり、ＰＨＹ  ＳＰＡＣＥと称される。図４に示すシステムの変換テーブルのインデックス（ＴＴ＿ＩＤＸ）は３４ビットを有する。システムパーティション２００によって提供されるパーティショニング（ｐａｒｔｉｔｉｏｎｉｎｇ）は、変換テーブルのインデックスを３２ビット内に維持する結果となり、ＭＲ２０９に格納されたユーザーデータのサイズが増加するにつれて変換テーブルのサイズを極端に増大させないようにする。他の実施形態で、仮想メモリサイズ、物理メモリサイズ、及び重複排除グラニュラリティ（データグラニュラリティ）は、図４に示すものとは異なり得る。
【００３５】
図５は、本発明の一実施形態による例示的なハッシュテーブルのハッシュテーブルエントリと、例示的な変換テーブルの変換テーブルエントリとの間の関係を示す図である。図２及び図５を参照すると、一実施形態で、変換テーブル５００は、ＴＴ  ＭＥＭ２１１に格納され、ハッシュテーブル５０１は、ＭＲ２０９のＨＴＲＣ  ＭＥＭに格納される。ホストシステム１０１から受信された論理アドレス５０２は、変換テーブルインデックス（図４のＴＴ＿ＩＤＸ）及びグラニュラリティ（ｇｒａｎｕｌａｒｉｔｙ）を含む。変換テーブルインデックスは、変換テーブル５００の物理ライン識別子（ＰＬＩＤ：ｐｈｙｓｉｃａｌ  ｌｉｎｅ  ｉｄｅｎｔｉｆｉｃａｔｉｏｎ）エントリに対するインデックスを提供する。ＰＬＩＤエントリのフォーマット５０３は、ハッシュテーブル５０１に対する行（つまり、ハッシュバケット）インデックス（Ｒ＿ＩＮＤＸ）及び列インデックス（ＣＯＬ＿ＩＮＤＸ）を含む。ハッシュテーブル５０１の特定の行及び特定の列に含まれるコンテンツは、２ｇのグラニュラリティを有する特定のユーザーデータであり得る物理ライン（ＰＬ：ｐｈｙｓｉｃａｌ  ｌｉｎｅ）である。例えば、ｇが６である場合には、ＰＬのグラニュラリティは６４バイトである。
【００３６】
一実施形態で、ハッシュテーブルインデックス（つまり、行インデックス及び列インデックスの両方）は、ユーザーデータに対して実行されるハッシュ関数ｈによって生成される。ハッシュテーブルエントリがユーザーデータＣに対して実行されるハッシュ関数ｈによって生成されるため、ユーザーデータの一部Ｃ”だけがＰＬに格納される必要がある。言い換えると、Ｃがグラニュラリティ２ｇのユーザーデータを示し、Ｃ”がハッシュテーブルに格納される必要があるユーザーデータＣの部分を示すと、Ｃ’は、ハッシュ関数ｈを使用してＣ”から復元できるユーザーデータＣの部分を示す。
【００３７】
【数１】
2020030822.tif 000003
【００３８】
ＰＬで、Ｃ’と対応される空間又はフィールドは、ユーザーデータＣは、ホストシステム１０１の仮想メモリに、複製された回数に関連される基準カウンタ（ＲＣ：ｒｅｆｅｒｅｎｃｅ  ｃｏｕｎｔｅｒ）情報を格納するような、他の目的のために使用される。ＰＬで、Ｃ’と対応される空間又はフィールドは、復元フィールド（ｒｅｃｏｎｓｔｒｕｃｔｅｄ  ｆｉｅｌｄ）と称される。
【００３９】
図６は、本発明の一実施形態によるトランザクションマネージャーによって提供される例示的な制御プロセスのフローチャートである。制御プロセス６００において、段階６０１で、ＴＭ２０３は、ホストシステム１０１からデータライトコマンドを受信するか、又はＷＥＤＭ２０４から応答を受信するのを待っているアイドルループ（ｉｄｌｅ  ｌｏｏｐ）にある。段階６０２で、ホストシステム１０１からデータライトコマンドが受信された場合、フローは、トランザクションテーブル２１６を検索する段階６０３に進む。段階６０４で、データライトコマンドは、トランザクションＩＤを割り当てられ、適切なトランザクションテーブル２１６に挿入される。段階６０５で、ライトデータは、ライトデータバッファ２２１に入力される。段階６０６で、古い物理ライン識別子（ＰＬＩＤ）情報を取得するために、トランザクションテーブル２１６がリードされ、その後、段階６０１に戻る。
【００４０】
段階６０２で、データライトコマンドが受信されない場合、フローは、ＷＥＤＭ２０４から応答が受信されたか否かが判定される段階６０７に進む。応答が受信されなければ、段階６０１に戻る。応答が受信されると、段階６０８に進んで、トランザクションテーブル２１６がアップデートされる。段階６０９で、ＴＴ  ＭＥＭ２１１に格納された変換テーブルがアップデートされる。その後、フローは、段階６０１に戻る。
【００４１】
ＷＤＥＭ２０４は、ＷＤＥ２０５を管理することで、パーティション２００内の物理メモリ空間のデータ一貫性及びデータ整合性（ｄａｔａ  ｃｏｈｅｒｅｎｃｙ  ａｎｄ  ｄａｔａ  ｃｏｎｓｉｓｔｅｎｃｙ）を管理するように構成される。一実施形態で、ＷＤＥＭ２０４は、コマンド（ＣＭＤ）ディスパッチャ２１８とコマンドキュー２２０（すなわち、ＣＱ０〜ＣＱＮ−１）を使用して、他のＷＤＥ２０５への内部リード／ライトトランザクション（リード／ライトスレッド）及び複数の未処理のライトを維持する。ＷＤＥＭ２０４は、同一のハッシュバケットへのライトトランザクションを、同じコマンドキュー（ＣＱ）に伝送することにより、同一のハッシュバケットへのライトトランザクションが順番に実行されることを保証するように動作する。ＷＤＥＭ２０４は、部分キャッシュラインライト（ｐａｒｔｉａｌ  ｃａｃｈｅ  ｌｉｎｅ  ｗｒｉｔｅ）をマージし、ＭＲ２０９のＯＶ  ＭＥＭ（ｏｖｅｒｆｌｏｗ  ｍｅｍｏｒｙ）領域に対するメモリ管理を行う。
【００４２】
ＷＤＥＭ２０４は、ハッシュテーブルバケットナンバー及び未処理のライトコマンドの状態を追跡するために使用されるＯＢＮ（ｏｕｔｓｔａｎｄｉｎｇ  ｂｕｃｋｅｔ  ｎｕｍｂｅｒ）テーブル２１７を含む。コマンドディスパッチャ２１８は、ライトコマンドを選択されたＣＱ２２０に格納することによって、コマンドを他のＷＤＥ２０５に割り当てる。ＷＤＥＭ２０４は、ＯＶＭ無効化テーブル（図示せず）をさらに含み得る。
【００４３】
図７は、本発明の一実施形態によるＷＥＤＭによって提供される例示的な制御プロセスのフローチャートである。制御プロセス７００は、段階７０１から始まる。段階７０２で、ライトデータコマンドがトランザクションマネージャ（ＴＭ）２０３からライトデータバッファＩＤ及び古いＰＬＩＤ情報とともに受信されたか否かが判定される。受信された場合、フローは、ライトデータテーブルがリードされる段階７０３に進む。段階７０４で、ライトデータバッファ２２１からリードされたライトデータが特定のデータパターンで表記された場合、フローは段階７０６に進み、トランザクションマネージャに応答を伝送する。もし、段階７０４で、ライトデータが特定のデータではない場合、フローは、ＯＣＢ（ｏｕｔｓｔａｎｄｉｎｇ  ｃｏｍｍａｎｄ  ｂｕｆｆｅｒ）テーブルがアップデートされる段階７０５に進む。段階７０７で、オペコード（ｏｐｃｏｄｅ）は、適切なコマンドキュー（ＣＱ）２２０に追加され、段階７０８でプロセスは終了する。もし、段階７０９で、ＷＤＥ２０５から応答が受信された場合には、フローは、ＯＣＢ（ｏｕｔｓｔａｎｄｉｎｇ  ｃｏｍｍａｎｄ  ｂｕｆｆｅｒ）テーブルがアップデートされる段階７１０に進む。段階７１１で、アップデートされた状態がトランザクションマネージャ（ＴＭ）２０３に伝送され、段階７０８でプロセスは終了する。
【００４４】
各ＷＤＥ２０５は、ＷＥＤＭ２０４の対応するＣＱ２２０からコマンド（オペンコード）を受信する。  ＷＤＥ２０５は、重複排除判定及びその他の関連する計算を遂行するように構成される。ＷＤＥ２０５は、並列に動作してシステムパーティション２００の全体のスループットを向上させ得る。各ＷＤＥ２０５は、メモリアクセスをインターリービング（ｉｎｔｅｒｌｅａｖｉｎｇ）するために、各メモリ領域のＭＲＭ２０７と調整される。
【００４５】
図８は、本発明の一実施形態によるＷＤＥによって提供される例示的な制御プロセスのフローチャートである。段階８０１で、ＷＤＥ２０５は、ＷＤＥＭ２０４からコマンド（オペコード）を受信するのを待っているアイドルループ（ｉｄｌｅ  ｌｏｏｐ）にある。段階８０２で、コマンドがユーザーデータの署名（ｓｉｇｎａｔｕｒｅ）とハッシュバケットの他のユーザーのデータの署名とを比較するのか、又はコマンドが基準カウンタ（ＲＣ）を減少させるものか否かが判定される。もしコマンド（つまり、オペコード）が基準カウンタを減少させるものである場合には、フローは、ユーザーデータに対する基準カウンタを減少させる段階８０３に進む。その後、フローは、要請の状態がＷＤＥＭ２０４に返還される段階８０４に進み、その後、段階８０１に戻る。
【００４６】
段階８０２で、ＷＤＥＭ２０４から受信した要請がユーザーデータ（つまり、物理ライン）をライトするものである場合には、段階８０５に進行して、ユーザーデータの署名が他のユーザーデータの署名と比較され、ハッシュテーブルに既に格納されたユーザーデータと比較する。段階８０６で、マッチ（一致）がある場合には、フローは、ユーザーデータの基準カウンタを増加させる段階８０７に進行する。その後、段階８０４に進んで、要請の状態がＷＤＥＭ２０４に再び報告（返還）される。もし段階８０６で、マッチがなければ、段階８０８に進行して、以前のユーザーデータが見つからない場合、ＨＴＲＣマネージャーが、「１」であるＲＣカウンターとともにユーザーデータをハッシュテーブルに格納するように呼び出すか、又はハッシュバケットが満杯になるか若しくはハッシュ衝突が発生した場合、オーバーフロー領域にユーザーデータを格納するためにＯＶＭマネージャーを呼び出す。その後、フローは、段階８０４に進行してＷＤＥＭ２０４へ要請の状態を報告する。
【００４７】
ＭＲＭ２０７は、ＷＤＥ２０５に対するＭＲ２０９へのメモリアクセスを管理する。ＭＲＭ２０７は、ハッシュテーブル／基準カウンターマネージャー（ＨＴＲＣ  ＭＧＲ：ｈａｓｈ  ｔａｂｌｅ／ｒｅｆｅｒｅｎｃｅ  ｃｏｕｎｔｅｒ  ｍａｎａｇｅｒ）２２２、オーバーフローマネージャー（ＯＶＭ  ＭＧＲ：ｏｖｅｒｆｌｏｗ  ｍｅｍｏｒｙ  ｍａｎａｇｅｒ）２２３、及び署名マネージャー（ＳＩＧ  ＭＧＲ：ｓｉｇｎａｔｕｒｅ  ｍａｎａｇｅｒ）２２４を含む。各ＭＲＭ２０７は、ＷＤＥ２０５のそれぞれからＨＴＲＣ  ＭＧＲ２２２（ＨＲ  Ｒ／Ｗ）、ＯＶＭ  ＭＧＲ２２３（ＯＶＭ  Ｒ／Ｗ）、及びＳＩＧ  ＭＧＲ２２４（ＳＩＧ  Ｒ／Ｗ）のための制御及びデータ情報を受信する。
【００４８】
図９Ａは、本発明の一実施形態による内蔵基準カウンタ（ｅｍｂｅｄｄｅｄ  ＲＣ：ｅｍｂｅｄｄｅｄ  ｒｅｆｅｒｅｎｃｅ  ｃｏｕｎｔｅｒ）を有する復元フィールド９０１を含む物理ライン（ＰＬ）９００の一例を示す図である。本実施形態で、ユーザーデータが仮想メモリ空間に複製される回数が小さいので、復元フィールド（ｒｅｃｏｎｓｔｒｕｃｔｅｄ  ｆｉｅｌｄ）９０１は、相対的に小さなサイズを有する内蔵ＲＣを含む。このようなシステム状況に対し、内蔵ＲＣは、（ｒ−１）ビットのサイズを有する基本ＲＣ（ｂａｓｅ  ＲＣ）として構成される。
【００４９】
ユーザーデータがホストシステムの仮想メモリ空間に複製される回数がＰＬ９００の復元フィールドの内蔵ＲＣのサイズを超える他の実施形態において、復元フィールドは、拡張されたＲＣテーブルエントリへのインデックスを含む。別の実施形態で、ＰＬの選択されたビットのようなインジケータフラグ（ｉｎｄｉｃａｔｏｒ  ｆｌａｇ）は、仮想メモリ空間でのユーザーデータの複製回数が内蔵ＲＣのサイズを超えているか否かを示すために使用される。
【００５０】
図９Ｂは、本発明の一実施形態によるインジケータフラグ９１１を含むＰＬ９１０の一例を示す図である。図９Ｂに示すように、インジケータフラグ９１１は、ユーザーデータの複製回数が復元フィールド９１２中の内蔵ＲＣのサイズ以下であることを示すように設定される。したがって、復元フィールド９１２のコンテンツは、ホストシステム１０１の仮想メモリ空間中のユーザーデータの複製回数を指すものである。
【００５１】
図９Ｃは、復元フィールドのコンテンツが、複製されたユーザーデータの拡張されたカウントを含む拡張されたＲＣテーブル９１３へのインデックスを含む場合に、インジケータフラグ９１１が、ユーザーデータの複製回数が復元フィールド９１２中の内蔵ＲＣのサイズを超えることを示すように設定された状況を示す図である。または、復元フィールド９１２は、例えば、頻繁に複製されるデータを含む特定のデータパターンテーブル９１４へのインデックス又はポインタを含み得る。一実施形態で、変換テーブルは、図８に示すように、頻繁に複製されるユーザーデータに対して、特定のデータパターンテーブル９１４へのインデックス又はポインタであるＰＬＩＤを含み、ユーザーデータに関連付けられるレイテンシーを減少させ得る。つまり、変換テーブルにポインタ又はインデックスを置くことにより、仮想メモリ空間に頻繁に複製されるユーザーデータは、変換テーブルがアクセスされるとき、自動的に検出され得る。
【００５２】
ＭＲ２０９のそれぞれは、メタデータのメモリ領域及び複数のデータメモリ領域を含む。システムパーティション２００が重複排除メモリ（ｄｅｄｕｐｌｉｃａｔｉｏｎ  ｍｅｍｏｒｙ）として構成される場合、メタデータ領域はＴＴ  ＭＥＭ２１１に格納された変換テーブルを含む。ＭＲ２０９のデータメモリ領域は、ハッシュテーブル／基準カウンタ（ＨＴＲＣ：ｈａｓｈ  ｔａｂｌｅ／ｒｅｆｅｒｅｎｃｅ  ｃｏｕｎｔｅｒ）メモリ（ＨＴＲＣ  ＭＥＭ）、署名メモリ（ＳＧ  ＭＥＭ：ｓｉｇｎａｔｕｒ  ｍｅｍｏｒｙ）、及びオーバーフローメモリ（ＯＶ  ＭＥＭ：ｏｖｅｒｆｌｏｗ  ｍｅｍｏｒｙ）を含む。
【００５３】
他の仮想アドレスからＭＲ２０９中の同じ物理メモリ領域へのライトは、ＭＲＭ２０７によって管理される。ＨＴＲＣマネージャー２２２及びＳＩＧマネージャー２２４は、重複排除機能（ｄｅｄｕｐｅ  ｆｕｎｃｔｉｏｎｓ）を遂行し、ハッシュテーブルの行（別名、バケット）及び列の位置に関して、メモリの位置を計算する。他の仮想アドレスから同じＨＴＲＣバケットへのライトは、ホストからのオリジナル順序とは異なる順序でＨＴＲＣバケットに到達し得る。一貫性（ｃｏｎｓｉｓｔｅｎｃｙ）は、ＷＤＥＭ２０４によって管理される。ライトデータ、例えば、ライトデータＡ及びライトデータＢが、同じＰＬＩＤ（Ａ＝＝Ｂ）に到達した場合、基準カウンターは、単純に増加される。他の仮想アドレスからのライトデータが同一ではなく、同じバケットナンバーを有するが、他の列（別名、ウェイ）ナンバーを有する場合、そのライトデータは同じバケットに格納されるが、他のウェイに異なって格納される。バケットに１つのエントリだけが残った場合には、Ａ又はＢのいずれか１つが最後のエントリに格納され、他の１つは、オーバーフロー領域に格納される。ライトデータＡとライトデータＢとが異なるが、同じハッシュバケット及び行番号を有する場合、２番目のライトデータは、オーバーフロー領域に格納される。
【００５４】
以上、本発明の技術分野における当業者によって認識されるように、詳細な説明に記載された本発明の思想は、広範囲なアプリケーションにおいて変形されるか、又は修正され得る。したがって、本発明の技術範囲は、上述の特定の実施形態に限定されない。
【符号の説明】
【００５５】
１００    システムアーキテクチャ
１０１    ホストシステム
１０２    ホストインターフェース
１０３    フロントエンドスケジューラ
２００、２００Ａ〜２００Ｋ    システムパーティション
２０１    ライトデータパス
２０２    リードデータパス
２０３    トランザクションマネージャー（ＴＭ）
２０４    ライトデータエンジンマネージャー（ＷＤＥＭ）
２０５    ライトデータエンジン（ＷＤＥ）
２０６    メモリ領域アービタ
２０７    メモリ領域マネージャー（ＭＲＭ）
２０８    インターコネクト
２０９    メモリ領域（ＭＲ）
２１０    変換テーブルマネージャー（ＴＴ  ＭＧＲ）
２１１    ＴＴメモリ（ＴＴ  ＭＥＭ）
２１２    リードデータエンジンマネージャー（ＲＤＥＭ）
２１３    リードデータエンジン（ＲＤＥ）
２１４    ライトデータバッファコントローラ
２１５    ＴＭコントローラ（ＴＭ  ＣＴＲＬ）
２１６    トランザクションテーブル（ＴＭテーブル）
２１７    ＯＢＮテーブル
２１８    コマンド（ＣＭＤ）ディスパッチャ
２１９    ＯＶＭＩマネージャー
２２０    コマンドキュー（ＣＱ）
２２１    ライトデータバッファ
２２２    ハッシュテーブル／基準カウンターマネージャー（ＨＴＲＣ  ＭＧＲ）
２２３    オーバーフローマネージャー（ＯＶＭ  ＭＧＲ）
２２４    署名マネージャー（ＳＩＧ  ＭＧＲ）
４００、５００    変換テーブル
５０１    ハッシュテーブル
５０２    論理アドレス
５０３    フォーマット
９００、９１０    物理ライン（ＰＬ）
９０１、９１２    復元フィールド
９１１    インジケータフラグ
９１３    拡張されたＲＣテーブル
９１４    特定のデータパターンテーブル
【図１】
2020030822.tif 000004
【図２】
2020030822.tif 000005
【図３】
2020030822.tif 000006
【図４】
2020030822.tif 000007
【図５】
2020030822.tif 000008
【図６】
2020030822.tif 000009
【図７】
2020030822.tif 000010
【図８】
2020030822.tif 000011
【図９Ａ】
2020030822.tif 000012
【図９Ｂ】
2020030822.tif 000013
【図９Ｃ】
2020030822.tif 000014