【解決手段】ハイブリッドメモリーモジュールの動作方法は、ホストコンピュータからハイブリッドメモリーモジュール100に保存されたデータに対するデータアクセス要請を受信するステップ、データアクセス要請を復号化してホストアドレスを獲得するステップ、DRAMキャッシュインデックスからメタデータアドレスを獲得するステップ、メタデータキャッシュ127ヒットを判定するステップ、メタデータキャッシュヒットの場合、DRAMキャッシュ101のメタデータに対するアクセスを省略して、DRAMキャッシュからデータを獲得するステップ、そして、DRAMキャッシュから獲得されたデータをホストコンピュータに返還するステップを包含する。
前記ブルームフィルターアレイを削除するか又は前記ブルームフィルターアレイを再設定するステップと、をさらに包含する、ことを特徴とする請求項6に記載の動作方法。
前記メタデータキャッシュヒットの比率が臨界値より高い場合、ブルームフィルターを使用しないようにキャッシュ制御器をプログラムするステップと、をさらに包含する、ことを特徴とする請求項1に記載の動作方法。
前記メタデータキャッシュヒットの比率が臨界値より低い場合、前記メタデータキャッシュを使用しないようにキャッシュ制御器をプログラムするステップと、をさらに包含する、ことを特徴とする請求項1に記載の動作方法。
低電力の条件で、ブルームフィルター及び前記メタデータキャッシュを順次にアクセスするステップと、をさらに包含する、ことを特徴とする請求項1に記載の動作方法。
前記キャッシュ制御器は、メタデータキャッシュに存在してマッチングする前記メタデータキャッシュエントリーの前記存在を判定するため、前記メタデータアドレスの前記メタデータキャッシュタグと一つ以上の前記メタデータキャッシュエントリーの前記メタデータキャッシュタグを比較するように、さらに構成される、ことを特徴とする請求項11に記載のハイブリッドメモリーモジュール。
前記キャッシュ制御器は、前記メタデータキャッシュタグの前記比較と前記ブルームフィルターテストを同時に遂行する、ことを特徴とする請求項13に記載のハイブリッドメモリーモジュール。
前記ブルームフィルターは複数のエントリーを含むブルームフィルターアレイを含み、前記ブルームフィルターテストは前記ブルームフィルターアレイにハッシュ関数を適用し、肯定結果又は否定結果を提供する、ことを特徴とする請求項13に記載のハイブリッドメモリーモジュール。
前記キャッシュ制御器は、前記ブルームフィルターアレイを削除するか又はブルームフィルターアレイを再設定するように、さらに構成される、ことを特徴とする請求項16に記載のハイブリッドメモリーモジュール。
前記キャッシュ制御器は、メタデータキャッシュヒットの比率が臨界値より高い場合、ブルームフィルターを使用しないようにプログラムされる、ことを特徴とする請求項11に記載のハイブリッドメモリーモジュール。
前記キャッシュ制御器は、メタデータキャッシュヒットの比率が臨界値より低い場合、前記メタデータキャッシュを使用しないようにプログラムされる、ことを特徴とする請求項11に記載のハイブリッドメモリーモジュール。
前記キャッシュ制御器は、低電力の条件で、ブルームフィルターと前記メタデータキャッシュに順次にアクセスするように構成される、ことを特徴とする請求項11に記載のハイブリッドメモリーモジュール。
【発明を実施するための形態】
【0014】
本明細書に記載された各々の特徴及び開示(disclose)は、SRAMメタデータキャッシュとブルームフィルター(Bloom filter)を利用し、ハイブリッドメモリーモジュールでのDRAMキャッシュのメタデータに対するアクセスオーバーヘッドを軽減させるためのシステム及び方法を提供するため、各々又は他の特徴及び開示と共に活用される。
このような数多くの追加特徴及び開示を活用する代表的な例は、添付した図面を参照して、別途にまたは共にさらに詳しく説明する。斯かる詳細な説明は、当業者が本発明の態様を実行するための細部的な内容を開示するためであり、請求範囲を制限するものではない。従って、詳細な説明に開示した特徴の組合せは、最も広い意味での本発明の教示(teaching)の実践に必要ではなく、本発明の教示する所の代表的な例示を説明するために開示する。
【0015】
以下においては、説明するための目的で、本発明の完全な理解を提供するために具体的な命名法を使用する。しかし、本発明の開示のため、当業者にとって具体的な事項が必要でないのは明らかなはずである。
【0016】
詳細な説明のいくつかの部分は、アルゴリズム及びコンピュータメモリーの中のデータビットに対する動作の記号的(symbolic)な表現により提示する。斯かるアルゴリズムの説明と表現は、他の分野の通常の技術者に研究の要旨を効果的に伝達するため、データプロセシング分野に係わる通常の技術者により使用される。ここで、アルゴリズムは一般的に、望む結果を引き出す一貫性のある一連のステップとして理解される。ステップは物理量の物理的な操作を必要とする。一般的に、必ず必要なものではないが、このような物理量は保存され、伝達され、結合され、比較され、操作できる電気または磁気信号の形態を有する。これは、このような信号をビット、値、要素、シンボル(symbol)、文字、用語、数字などで表現するための一般的な用法である。
【0017】
しかし、この全ての用語と類似した用語は、適切な物理量と連関され、但し斯かる物理量に適用される便利なラベル(label)であることに留意しなければならない。以下の内容と明らかに異なる内容が具体的に記述されなければ、明細書全般にわたって、‘‘プロセシング’’、‘‘コンピューティング’’、‘‘計算’’、‘‘決定’’、‘‘表示’’などの用語を活用する部分は、コンピュータシステム又は類似の電子コンピューティング装置のプロセスと措置を示すことにより理解される。コンピュータシステム又は類似の電子コンピューティング装置は、コンピュータシステムのレジスタ(register)とメモリーの中において物理(電気)量により示されるデータは、同様にコンピュータシステムメモリー、レジスタ、他の情報記憶装置、情報伝送装置又はディスプレイ装置において他の物理量により示されるデータに操作するか変更される。
【0018】
本発明の実施例は、DRAMメタデータに対するアクセスを減少させるための多様な技法を説明する。例えば、DRAMメタデータアクセスはランダム交替(replacement)政策を用いて減少される。斯かる場合、交替ビットが必要とされないことがあるが、性能は悪化する場合がある。他の実施例は、SRAMにDRAMキャッシュメタデータの一部を保存し、DRAMメタデータアクセスを減少させる。このような場合、SRAMマッチ(match)のみがDRAM検索を誘発する。しかし、メタデータマッチが頻繁に発生する場合、この部分的メタデータアクセス方式は性能の劣化を招く。
他のアクセス方式は、SRAMをメタデータをキャッシュするために使用し、DRAMキャッシュミス(miss)を効果的に取り除くためブルームフィルターを使用してタグ(tag)がマッチする場合のみDRAM検索を遂行するが、ブルームフィルターは誤判定(false positives)を誘発する場合がある。しかし、SRAMでのブルームフィルターの使用はDRAMキャッシュの劣等な性能のため、一般的に非効率的である。
【0019】
尚、代表的例示の多様な特徴と従属項は、本発明の有用で追加的実施例を提供するため、具体的で明確に列挙しない方法で結合される。尚、請求する発明の思想を制限しようとする目的だけではなく、開示の目的のため、全ての値の範囲又は個体グループの表示は、可能な全ての中間値又は中間個体を表わす。尚、図面に図示する構成の面積と模様は本発明を、どのように具現するかを理解するため、役に立てるようにデザインされるが、例示に図示する面積と模様に限定されることではない。
【0020】
本発明はSRAMメタデータキャッシュとブルームフィルターを利用し、ハイブリッドメモリーモジュールでDRAMキャッシュメタデータにアクセスするためのオーバーヘッドを軽減させるシステムと方法を提供する。本発明の一実施例によると、ブルームフィルターとSRAMキャッシュはDRAMキャッシュのためのメタデータを保存するため結合される。ブルームフィルターとSRAMキャッシュの結合された使用は、各々の短所が補完でき、ハイブリッドメモリーモジュールに保存されたデータにアクセスするための向上された性能を提供できる。一般的に、ブルームフィルターはキャッシュミスを予想し、メタデータキャッシュはキャッシュヒットを予想する。メタデータキャッシュとブルームフィルターが同時にアクセスされると、ブルームフィルターフォールス(false)はキャッシュミスを暗示し、従ってDRAMアクセスは必要とされない。SRAMメタデータキャッシュヒットは、速いキャッシュヒットと見なされ、従ってDRAMメタデータアクセスは必要とされない。
【0021】
図1は、従来のハイブリッドメモリーモジュールのアーキテクチャを示す図である。ハイブリッドメモリーモジュール100は、DRAMキャッシュ101、フラッシュメモリー151、メモリーアクセス制御器111、DRAM制御器121、キャッシュ制御器124、メタデータキャッシュ127を保存するためのSRAM126、そしてフラッシュ制御器131を包含する。メタデータキャッシュ127はDRAMキャッシュ101のメタデータのキャッシュされたバージョン(version)を包含する。DRAMキャッシュ101はフラッシュメモリー151のキャッシュデータを保存し、メタデータ102、読取りキャッシュ103、そして書込みバッファー104を包含する。メタデータ102はタグ、有効ビット、ダーティービット(dirty bits)を包含できる。本明細書において明示的に他の意味に叙述しない限り、メタデータ及びタグ用語は互換的に使用され得る。読取りキャッシュ103はフラッシュメモリー151からキャッシュされたデータを保存する。読取りキャッシュ103はフラッシュメモリー151に対するメモリーアクセス回数を減少させる。フラッシュメモリー151に書込まれるデータは、書込みバッファー104に一時的に保存される。書込みバッファー104はフラッシュメモリー151に対する書込みトラフィック(traffic)を減少させる。
【0022】
ホストコンピュータ(図示せず)は、メモリーインターフェース140を通じて、ホストコンピュータとハイブリッドメモリーモジュール100の間に樹立されたメモリーホスト/スレーブ(host/slave)インターフェースプロトコル(例えば、NVDIMM−P)により、ハイブリッドメモリーモジュール100に保存されたデータにアクセスするためのメモリーアクセスの要請を送る。メモリーアクセスの要請はメモリーアクセス制御器111に伝達される。メモリーアクセス制御器111は中間変換器として動作し、ホストからの(NVDIMM−Pプロトコルを通じ)要請をハイブリッドメモリーモジュール100に判読可能な形態に変換する。ホストからの要請を変換した後に、メモリーアクセス制御器111はキャッシュ制御器124へ変換された情報を伝達する。
【0023】
キャッシュ制御器124は、SRAM126に保存されたメタデータキャッシュ127を確認し、メタデータキャッシュヒット又はミスを決定する。メタデータキャッシュヒットであれば、キャッシュ制御器124はDRAMキャッシュ101に要請されたデータが保存されたことを確認し、DRAMキャッシュ101に存在するメタデータ102にアクセスせずにメタデータキャッシュ127に保存されたメタデータを利用し、DRAM制御器121にDRAMキャッシュ101に存在する要請されたデータにアクセスするように要請する。メタデータキャッシュミスであれば、キャッシュ制御器124はDRAM制御器121にDRAMキャッシュ101に保存されたメタデータ102にアクセスするように要請し、DRAMキャッシュヒット又はミスを決定する。DRAMキャッシュヒット又はミスを確認した後に、キャッシュ制御器124は要請されたデータの正確な受信場所を決定する。DRAMキャッシュヒットであれば、キャッシュ制御器124は、DRAM制御器121にDRAMキャッシュ101に保存されている要請されたデータへのアクセスを要請する。DRAMキャッシュミスであれば、キャッシュ制御器124は、フラッシュ制御器131にフラッシュメモリー151に保存されている要請されたデータのアクセスを要請する。
【0024】
キャッシュ制御器124がDRAMキャッシュ101に要請されたデータが保存されていると判定する時、キャッシュ制御器124はDRAM制御器121にメタデータキャッシュヒットの場合、SRAM126に保存されているメタデータキャッシュ127を参照するか、メタデータ102を参照してDRAMキャッシュ101にアクセスするように指示する。キャッシュ制御器124がフラッシュメモリー151に要請されたデータが保存されていると判定する場合、フラッシュ制御器131はフラッシュ流れ150を通じてフラッシュメモリー151に保存されたデータにアクセスして引き出す。
【0025】
図2は、本発明の一実施例によるハイブリッドメモリーモジュールのアーキテクチャを示す図である。ハイブリッドメモリーモジュール200はDRAMキャッシュ201、フラッシュメモリー251、メモリーアクセス制御器211、DRAM制御器221、キャッシュ制御器224、SRAM226、そしてフラッシュ制御器231を包含する。
【0026】
SRAM226はメタデータキャッシュ227にDRAMキャッシュ201のメタデータ202にキャッシュされたもののコピーを保存する。メタデータキャッシュ227の利用可能な大きさにより、メタデータキャッシュ227に保存されるメタデータ202にキャッシュされたもののコピーは、メタデータ202の部分集合である。SRAM226は、キャッシュされたメタデータの他の集合(メタデータ202の完全集合又はメタデータ202の部分集合)を、ブルームフィルターアレイ229の形で(in the form of)さらに保存する。
【0027】
メタデータキャッシュ227は、DRAMキャッシュ201のメタデータ202にキャッシュされたバージョンを包含する。DRAMキャッシュ201はフラッシュメモリー251のキャッシュデータを保存し、メタデータ202、読取りキャッシュ203、そして書込みバッファー204を包含する。メタデータ202はタグ、有効ビット、ダーティービットを包含する。本明細書において明示的に他の意味を記述しない限り、メタデータ及びタグの用語は互換的に使用できる。読取りキャッシュ203はフラッシュメモリー251からキャッシュされたデータを保存する。読取りキャッシュ203はデータをキャッシュするため使用される。読取りキャッシュ203はフラッシュメモリー251に対するメモリーアクセス回数を減少させる。フラッシュメモリー251に書き込まれるデータは、書き込みバッファー204に一時的に保存される。書込みバッファー204はフラッシュメモリーについての書込みトラフィックを減少させる。
【0028】
ホストコンピュータ(図示せず)は、メモリーインターフェース240を通じてホストコンピュータとハイブリッドメモリーモジュール200の間に樹立されたメモリーホスト/スレーブ(host/slave)インターフェースプロトコル(例えば、NVDIMM−P)により、ハイブリッドメモリーモジュール200に保存されたデータにアクセスするためのメモリーアクセスの要請を送る。メモリーアクセスの要請はメモリーアクセス制御器211に伝達される。メモリーアクセス制御器211は中間変換器として動作し、ホストからの(NVDIMM−Pプロトコルを通じ)要請をハイブリッドメモリーモジュール200に判読可能な形態に変換する。ホストからの要請を変換した後に、メモリーアクセス制御器211はキャッシュ制御器224へ変換された情報を伝達する。
【0029】
キャッシュ制御器224は、SRAM226に保存されたメタデータキャッシュ227を確認し、メタデータキャッシュヒット又はミスを決定する。メタデータキャッシュヒットであれば、キャッシュ制御器224はDRAMキャッシュ201に、要請されたデータが保存されていることを確認し、DRAMキャッシュ201に存在するメタデータ202にアクセスせずに、メタデータキャッシュ227に保存されたメタデータを利用し、DRAM制御器221にDRAMキャッシュ201に存在する要請されたデータにアクセスするように要請する。
【0030】
本発明の一つの実施例によると、キャッシュ制御器224はSRAM226に保存されたメタデータを運営するための多様な関数を提供する。斯かる関数の例はSRAM226に保存されたメタデータを管理するテスト関数と挿入関数を含むが、本発明はこのような例に制限されない。ブルームフィルターはDRAMキャッシュヒット又はミスが有るか否かを判定するための関数を利用し、SRAM226に保存されたブルームフィルターアレイ229により動作する。例えば、キャッシュ制御器224はブルームフィルターアレイ229により、ブルームフィルターテスト関数を遂行する。ブルームフィルターテスト結果が否定的であれば、DRAMキャッシュミスを意味し、DRAMキャッシュ201にデータが保存されていないことを表わし、キャッシュ制御器224はDRAMキャッシュのメタデータ202をアクセスせずに、データを獲得するためフラッシュ制御器231に要請を送る。本発明の一つの実施例によると、メタデータキャッシュ227でのメタデータキャッシュの確認とブルームフィルターでのブルームフィルターのテストは、独立的に、同時に、又は特定の順序により遂行される。
【0031】
メタデータキャッシュミスであり、ブルームフィルターのテスト結果が肯定的(即ち、DRAMキャッシュヒットを示すがフォールスポジティブである)であれば、キャッシュ制御器224は、実際にDRAMキャッシュヒット又はミスかを判定するため、DRAMキャッシュ201のメタデータ202へのアクセスをDRAM制御器221に要請する。DRAMキャッシュ201のメタデータ202に存在してマッチングするメタデータの存在に基づいて、キャッシュ制御器224は要請されたデータの正確な目的地(destination)を見つけ出す。DRAMキャッシュヒットであれば、キャッシュ制御器224はDRAM制御器221にDRAMキャッシュ201に保存されている要請されたデータにアクセスするように要請する。DRAMキャッシュミスであれば、キャッシュ制御器224はフラッシュメモリー251に保存されている要請されたデータへのアクセスをフラッシュ制御器231に要請する。
【0032】
図2を参照すると、メタデータキャッシュ227及びブルームフィルターアレイ229は、独立的なデータ構造を有し、同一又は異なるメタデータを保存できる。メタデータキャッシュ227及びブルームフィルターアレイ229は、SRAM226においてメタデータとメタデータを運営するためのロジックを保存するため、各自の専用領域を持ち、互いに関連がない。本発明の一つの実施例によると、SRAM226はメタデータキャッシュ227とブルームフィルターアレイ229の中の一つだけを含み、キャッシュ制御器224はメタデータキャッシュ227とブルームフィルターアレイ229の中の一つだけを運営する。ブルームフィルターアレイ229の存在又は動作と関係なく、メタデータキャッシュ227は動作できる。同様に、メタデータキャッシュ227の存在又は動作と関係なく、ブルームフィルターアレイ229は動作する。メタデータキャッシュ227の存在(又は不在)及び動作モードにより、SRAM226でのメタデータキャッシュ227とブルームフィルターアレイ229の割当てられた領域は動的に変化できる。本発明のハイブリッドメモリーモジュール200はメタデータキャッシュ227とブルームフィルターアレイ229が必然的に依存し合わずに、キャッシュヒット又はミスの決定を可能にするための一つ以上の‘‘ラッパー(wrapper)’’関数などを提供する。
【0033】
メタデータキャッシュヒットの場合、即ち、SRAM226に有るメタデータキャッシュ227がメタデータのキャッシュされたコピーを保存すれば、キャッシュ制御器224はDRAMキャッシュ201に要請されたデータが保存されたと判定し、キャッシュ制御器224はDRAM制御器221にSRAM226に保存されたメタデータキャッシュ227を参照して、DRAMキャッシュ201にアクセスするように指示する。DRAMキャッシュヒットの場合、キャッシュ制御器224はDRAM制御器221にメタデータ202を参照して、DRAMキャッシュ201にアクセスするように指示する。キャッシュ制御器224がフラッシュメモリー251に要請されたデータが保存されていると判定する場合、フラッシュ制御器231はフラッシュ流れ250を通じて、フラッシュメモリー251に保存されたデータにアクセスして引き出す。
【0034】
本発明の一つの実施例によると、メタデータ202は包括的でクリーン(clean)であるので、メタデータキャッシュ227は効率的に維持される。例えば、メタデータキャッシュ227のライン(line)は、なお、DRAMキャッシュ201のメタデータ202に保存される。メタデータキャッシュ227についての、どのようなアクセス類型(例えば、読取り、書込み)も、常に読取りアクセスと見なされる。表1はアクセス類型と要請されたデータの位置に沿い、ハイブリッドメモリーモジュール200のキャッシュ制御器224によって遂行される一覧を示す。
【0036】
読取りアクセスの要請が有る場合、キャッシュ制御器224は要請されたデータのキャッシュされたコピーが次のような方式で、DRAMキャッシュ201から検索され得るか否かを判定する。まず、キャッシュ制御器224はメタデータキャッシュ227にマッチングするメタデータが存在するか否かを確認する。マッチするメタデータが検索されると、メタデータタグとDRAMキャッシュタグの包括性により、キャッシュ制御器224は、DRAMキャッシュ201で、読取りアクセスの要請ヒットであると結論づける。キャッシュ制御器224はメタデータ202へのアクセスなしに、メタデータキャッシュ227でヒットしたメタデータを使用し、DRAMキャッシュ201から目的のデータを要請する。メタデータキャッシュ227の確認の時、追加的にキャッシュ制御器224はブルームフィルターアレイ229を使用し、DRAMキャッシュヒット又はミスの確認を遂行する。ブルームフィルターのテストによるDRAMキャッシュミスの場合、キャッシュ制御器224は目的のデータがDRAMキャッシュ201に存在しないと結論づけ、DRAMキャッシュ201のメタデータ202へのアクセスなしに、データを獲得するためフラッシュ制御器231へ要請を送る。ブルームフィルターのテスト結果がDRAMキャッシュヒットを表わすと、ブルームフィルターによるDRAMキャッシュヒットがフォールスポジティブであり得るので、キャッシュ制御器224はこのステップで真のDRAMキャッシュヒット又はミスを判定できない。斯かる場合、キャッシュ制御器224は真のDRAMキャッシュヒット又はミスを判定するため、DRAM制御器221にメタデータ202にアクセスするようにさらに要請する。データアクセスの要請に含まれたDRAMキャッシュタグとメタデータ202の比較により、キャッシュ制御器224はDRAMキャッシュ201によりデータ要請のヒットであるか否かを正確に判定する。DRAMキャッシュヒットであれば、キャッシュ制御器224はDRAMキャッシュ201から目的のデータを要請する。DRAMキャッシュミスであれば、キャッシュ制御器224はフラッシュメモリー251から目的のデータを要請し、フラッシュメモリー251から獲得したデータをDRAMキャッシュ201に挿入し、メタデータ202をアップデートする。DRAMキャッシュヒット又はミスと相関なしに、メタデータキャッシュミスとして、キャッシュ制御器224はメタデータ202から獲得したメタデータが、メタデータキャッシュ227をアップデートするため使用する。
【0037】
書込みアクセス要請の場合、キャッシュ制御器224は読取りアクセス要請の場合と同様に、メタデータキャッシュ227とDRAMキャッシュ201のマッチング結果に基づいて同様の措置を遂行する。読取りと書込みのアクセス動作の差異点は、以下においてさらに詳しく説明する。
【0038】
図3は、本発明の一実施例によるキャッシュ制御器の動作例のブロック図である。
図3を参照して説明するキャッシュ制御器は、
図2に示したハイブリッドメモリーモジュール200に統合されたキャッシュ制御器224である。この場合、ハイブリッドメモリーモジュール200とハイブリッドメモリーモジュール200に統合された内部構成、モジュール、そして装置の重複された説明は省略する。
【0039】
ホストコンピュータから受信したデータアクセスの要請に対する応答により、キャッシュ制御器は要請されたデータのホストアドレス301を獲得し、アクセス類型(例えば、読取り、書込み)を識別するためデータアクセスの要請を復号化する。ホストアドレス301はタグ(302)(本明細書ではDRAMキャッシュタグと呼称される)、インデックス303(本明細書ではDRAMキャッシュインデックスと呼称される)、そしてオフセット304を包含する。
【0040】
本発明の一つの実施例によると、DRAMキャッシュに有るキャッシュラインはホストから要請されたデータの大きさより大きくなる。斯かる場合、要請されたデータに対応するキャッシュラインの部分を決定するため、オフセット304が使用される。例えば、キャッシュラインが2KBであり、要請されたデータの大きさが1Bであれば、キャッシュラインにはホストアドレス301が示す唯一のデータ部分を識別するため、総計2048個のオフセットを要求する2048(2KB/1B)のデータ部分が存在する。例えば、0のオフセット304はキャッシュラインで一番目のデータ部分を示し、2047のオフセット304はキャッシュラインの最後のデータ部分を示す。
【0041】
本発明の一実施例によると、インデックス303はDRAMキャッシュに関連されたメタデータの情報を包含できる。キャッシュ制御器はメタデータアドレス311を獲得するため、インデックス303をさらに復号化してメタデータキャッシュヒット又はミスを判定するため、SRAMに保存されたメタデータキャッシュ327とメタデータアドレス311を比較する。本発明の一つの実施例によると、メタデータアドレス311は、メタデータ(MDC)タグ312及びメタデータ(MDC)インデックス313を包含する。
【0042】
まず、キャッシュ制御器はSRAMのメタデータキャッシュ327に保存された複数のDRAMキャッシュメタデータの中で、マッチングするメタデータエントリー(entry)を選択するため、メタデータアドレス311のメタデータインデックス313を使用する。SRAMのメタデータキャッシュ327に保存された各々のマッチングするメタデータエントリーは、MDCタグ333、DRAMキャッシュタグ332、そして有効ビット(V)を含むタグのペア(pair)を包含できる。有効ビット(V)は、関連されたキャッシュラインが有効であるか否かを表す。例えば、マッチングするメタデータエントリーを包含するキャッシュラインは、V=0であれば、キャッシュミスを表す。例示で図示したように、SRAMのメタデータキャッシュ327が複数の通路(例えば、通路(way)0、通路1、通路2、そして通路3)により構成されれば、メタデータインデックス313は通路IDに対応できる。
【0043】
メタデータキャッシュヒット又はミスを判定するため、キャッシュ制御器はメタデータキャッシュ327においてマッチングするエントリーを検索し、メタデータアドレス311のメタデータタグ312を、識別されてマッチングするエントリーのMDCタグ333と比較する。メタデータタグ312とMDCタグ333とがマッチすれば、最初のホストタグを含むデータは、マッチングするエントリーから読み出される。メタデータキャッシュ327に保存された最初のホストタグは、ホストアドレス301のタグ302と比較される。最初のホストタグとホストアドレス301のタグ302がマッチすれば、キャッシュ制御器はメタデータキャッシュヒットと判定し、DRAMキャッシュのメタデータに対するアクセスなしに、メタデータキャッシュ327に保存されてマッチングするホストタグを利用して、DRAMキャッシュに存在して要請されたデータにアクセスする。
【0044】
メタデータキャッシュ327の確認の時、追加的に、キャッシュ制御器はブルームフィルターを用いて、DRAMキャッシュに存在してキャッシュされたデータの存在(又は不在)を判定(すなわち、DRAMキャッシュヒットまたはミス)するため、ブルームフィルターのテストを遂行できる。ブルームフィルターは、例えば、比較器を通じて、多様な形態に具現される。キャッシュ制御器はホストアドレス301のタグ302を、メタデータキャッシュ327の確認により、識別されてマッチングするメタデータペアのDRAMキャッシュタグ332と比較する。ブルームフィルターのテストがDRAMキャッシュミス(即ち、メタデータキャッシュ327にホストアドレス301のタグ302とマッチングするDRAMキャッシュタグ332が存在しない場合)を表すと、キャッシュ制御器はDRAMキャッシュに目的のデータが存在しないと結論づけ、フラッシュ制御器にフラッシュメモリーに保存されたデータにアクセスするように要請する。
【0045】
いくつかの場合に、キャッシュ制御器はメタデータキャッシュ327においてマッチングするメタデータのエントリーが見つけ出せなくて(即ち、メタデータキャッシュのミス)、ブルームフィルターはDRAMキャッシュヒットを表すことがある。しかし、ブルームフィルターによるDRAMキャッシュヒットの表示は、フォールスポジティブでありうるので、キャッシュ制御器はDRAMキャッシュに目的のデータが、実際に、保存されているか否か(真のDRAMキャッシュヒット又はミス)を判定するため、DRAMキャッシュのメタデータにアクセスする。ホストアドレス301のタグ302とDRAMキャッシュのメタデータの間の比較結果に基づいて、キャッシュ制御器は目的のデータの位置を正確に判定する。DRAMキャッシュにマッチングするメタデータがなければ(即ち、真のDRAMキャッシュミス)、キャッシュ制御器はDRAMキャッシュに要請されたデータのキャッシュされたコピーがないことを、確認する。斯かる場合、キャッシュ制御器はDRAMキャッシュに対するアクセスをせずに、フラッシュメモリーに保存されたデータにアクセスするため、直接に、フラッシュメモリーにアクセスする。DRAMキャッシュにマッチングするメタデータが存在すれば(即ち、真のDRAMキャッシュヒット)、キャッシュ制御器はDRAMキャッシュに保存されたデータにアクセスするため、DRAM制御器にアクセスする。
【0046】
図4は、本発明の一実施例によるハイブリッドメモリーモジュールで具現されたブルームフィルターの例を示す図である。キャッシュ制御器はブルームフィルターのため挿入(insert)関数とテスト(test)関数を提供する。本発明の一つの実施例によると、挿入関数はハッシュ関数(hash function)である。キャッシュ制御器はブルームフィルターの設定により、一つ以上のハッシュ関数を適用できる。例えば、x、y、z、そしてwにより表示される挿入関数とテスト関数に対する入力は、メタデータキャッシュタグでありうる。
【0047】
本発明のハイブリッドメモリーモジュールのSRAMの専用領域に保存されたブルームフィルターのメタデータは、本明細書において複数のエントリーを含むブルームフィルターアレイと呼称されるアレイとして具現される。本発明の一つの実施例において、ブルームフィルターアレイの各エントリーは16ビットであり、三つのハッシュ関数が存在できる。テスト関数は三つのすべてのハッシュ関数に対するマッチングの結果を提供する。上述した内容は例示のみであり、本発明の範囲から逸脱せず、他の長さのブルームフィルターアレイと他の個数のハッシュ関数などが使用できる。
【0048】
与えられたキャッシュタグ(例えば、
図3のタグ302)で、挿入関数はハッシュアルゴリズムに従い、ブルームフィルターアレイ401の示されたエントリーにビットを挿入(又はアップデート)する。本発明の実施例において、ハッシュ関数はブルームフィルターアレイ401のエントリー(7、12、そして14ビットなど)の集合を、キャッシュタグのxにより示された所に挿入する。そして、データのアクセス要請が受信されると、テスト関数test(x)は、ブルームフィルターアレイ401からキャッシュタグのxにより示されたエントリーを読取り、ブルームフィルターアレイ401がキャッシュタグのxを含んでいるか否かをテストするため呼び出される。次に、キャッシュタグのyによって示された所へハッシュ関数の挿入を利用して、ブルームフィルターアレイ401のエントリー(2、4、そして11ビットなど)に入力され、キャッシュタグのyの存在はテスト関数test(y)を用いてテストされる。
【0049】
本発明の実施例で、キャッシュタグのx及びyは、ブルームフィルターアレイ401に対する入力で表される。ブルームフィルターアレイ401の各エントリーは0又は1でありうる。挿入関数は一つ以上のハッシュ関数などに基づき、各々のハッシュ関数は入力でキャッシュタグを持つ。挿入関数の出力はブルームフィルターアレイ401で示されたエントリーに対応するビット個数である。本発明は特定のハッシュ関数及び使用されるハッシュ関数の個数に制限されない。例えば、挿入関数は入力としてキャッシュタグを受信する場合、ブルームフィルターアレイの四つのエントリーをアップデートする。
【0050】
キャッシュタグのzとwは明確にブルームフィルタ401に入力されない。キャッシュタグのzを含むデータのアクセス要請が受信される場合、キャッシュタグのzのためのテスト関数test(z)が呼び出され、否定(negative)で返還され、正確にzがブルームフィルターに含まれないことを表す(よって、DRAMキャッシュにない)。しかし、キャッシュタグのwを含むデータのアクセス要請が受信される場合、テスト関数test(w)はキャッシュタグのwによって示された通りに、ブルームフィルターアレイ401のエントリーを読取り、ブルームフィルターアレイ401に存在するキャッシュタグのwの存在又は不在をテストするため呼び出される。本発明の実施例で、テスト関数test(w)はブルームフィルターアレイ401にキャッシュタグのwが存在することを表す。よって、本発明の実施例で、テスト関数test(w)はフォールスポジティブの例示である。従って、ブルームフィルターは、キャッシュにないキャッシュタグを、確信をもって識別するため使用できるが、どのようなキャッシュタグがキャッシュに存在するかを正確に予測するためには使用できない。
【0051】
本発明の一つの実施例によると、本発明のブルームフィルターは、ブルームフィルターアレイ401の選択された部分又は全体を削除できない。例えば、削除関数はブルームフィルターアレイ401の部分または全体を削除するため、キャッシュ制御器に適用される。削除関数はDRAMキャッシュにキャッシュラインが、これ以上存在しないかキャッシュラインの交替に起因して無くなる場合、使用される。斯かる場合、削除関数は本発明のブルームフィルターアレイ401に存在して対応するエントリーを削除できる。ブルームフィルターアレイ401が充分に大きくない場合、キャッシュ制御器は新しいエントリーのための空間を備えるためブルームフィルターアレイ401の一部を削除する。本発明の他の実施例において、本発明のブルームフィルター401は全体のタグの範囲を包括できる、大きなブルームフィルターアレイ401が使用でき、又はキャッシュ制御器はブルームフィルター401がいっぱいになって、もっと多くのアレイが追加できない場合(ブルームフィルターが非効率的になる場合)、ブルームフィルター401を再設定する。
【0052】
図5は、本発明の一実施例によるキャッシュ制御器により、データ要請を遂行する順序図である。501ステップにおいて、ホストコンピュータからのデータアクセスの要請に応じて、ハイブリッドメモリーモジュールのキャッシュ制御器は、要請類型(例えば、読取り、書込み)と要請されたデータに対するホストアドレスを得るため、要請を復号化する。ホストアドレスはタグ(DRAMキャッシュタグ)、インデックス、そしてオフセットを含む。502ステップにおいて、キャッシュ制御器はMDC(メタデータキャッシュ)タグ及びMDCインデックスを含むメタデータアドレスを得るため、ホストアドレスのインデックスを復号化する。503ステップにおいて、キャッシュ制御器はハイブリッドメモリーモジュールのSRAMに保存されたメタデータキャッシュからマッチングするキャッシュラインを識別するため、メタデータアドレスのMDCインデックスを使用する。マッチングするキャッシュラインは一対のMDCタグ及びDRAMキャッシュタグを保存する。
504ステップにおいて、メタデータキャッシュにマッチングするキャッシュラインがなければ、キャッシュ制御器はDRAM制御器に、DRAMキャッシュのメタデータにアクセスして、DRAMキャッシュに要請されたデータのキャッシュされたコピーが存在するかを判定(即ち、真のDRAMキャッシュヒット又はミス)するように要請する。
【0053】
一方、504ステップにおいて、SRAMメタデータキャッシュにマッチングするキャッシュラインが識別されると、キャッシュ制御器はマッチングするキャッシュラインのMDCタグがメタデータアドレスのMDCタグとマッチするか否かを判定し、さらにマッチングするMDCタグによって参照されたホストタグが最初のホストタグとマッチングするか否かを判定する。ホストタグがマッチングすると(即ち、メタデータキャッシュヒット)、506ステップにおいて、キャッシュ制御器は要請されたデータがDRAMキャッシュにキャッシュされたと判定し、511ステップにおいて、DRAM制御器にDRAMキャッシュのメタデータにアクセスせずに、マッチングするホストタグを用いてDRAMキャッシュにアクセスし、DRAMキャッシュから要請されたデータを得るように要請する。
【0054】
そして、505ステップにおいて、キャッシュ制御器はDRAMキャッシュヒット又はミスを判定するため、マッチングするキャッシュラインのDRAMキャッシュタグ(又はホストアドレスのDRAMキャッシュタグ)を用いて、ブルームフィルターテストを遂行する。ブルームフィルターテストの結果が否定的であれば、509ステップにおいて、キャッシュ制御器はDRAMキャッシュに要請されたデータがキャッシュされていない(即ち、DRAMキャッシュミス)と結論づけ、512ステップにおいて、フラッシュ制御器にフラッシュメモリーにアクセスし、要請されたデータを得るように要請する。斯かる場合、DRAMキャッシュのメタデータに対するアクセスは省略され、フラッシュメモリーに対するデータアクセスの遅延時間は増加する。
【0055】
メタデータキャッシュとマッチングせずに(即ち、メタデータキャッシュミス)、ブルームフィルターテストの結果が肯定的(DRAMキャッシュヒットのフォールスポジティブでありうる)であれば、507ステップ及び508ステップにおいて、キャッシュ制御器は、DRAM制御器にDRAMキャッシュのメタデータに存在するエントリーとホストアドレスのタグ(DRAMキャッシュタグ)がマッチするか否かを判定するため、DRAMキャッシュのメタデータにアクセスするように要請する。510ステップにおいて、DRAMキャッシュタグがマッチすれば、キャッシュ制御器は要請されたデータがDRAMキャッシュにキャッシュされたと判定(即ち、DRAMキャッシュヒット)し、511ステップにおいて、DRAM制御器にDRAMキャッシュに存在して要請されたデータにアクセスするように要請する。509ステップにおいて、DRAMキャッシュタグがマッチに失敗すれば、キャッシュ制御器は、要請されたデータがDRAMキャッシュにキャッシュされていないと判定(即ち、DRAMキャッシュミス)し、512ステップにおいて、フラッシュ制御器にフラッシュメモリーに存在する要請されたデータにアクセスするように要請する。
【0056】
本発明のキャッシュ制御器は、メタデータキャッシュとブルームフィルターの中のいずれか一つ又は双方を支援するように、又は何一つも支援しないように、プログラムできる。例えば、キャッシュ制御器はメタデータキャッシュ及び/又はブルームフィルターの使用不能/使用可能を判定するため、キャッシュヒット比率をモニター(monitor)する。メタデータキャッシュのヒット比率が、予め定められた第一臨界値より高いと、キャッシュ制御器はブルームフィルターがDRAMキャッシュのメタデータにアクセスするためのオーバーヘッドを軽減させる効果がほぼ無いとみなされるのでブルームフィルターを非活性化できる。本発明の他の実施例において、メタデータキャッシュヒット比率が予め定められた第二の臨界値より低いと、キャッシュ制御器はブルームフィルターだけ残し、メタデータキャッシュを使用しないこともある。DRAMがフラッシュメモリーに対するキャッシュとして使用されないと、キャッシュ制御器はメタデータキャッシュとブルームフィルターの両方を使用しないこともある。
【0057】
本発明の一実施例によると、キャッシュ制御器は、比較結果を速く得るため、ブルームフィルターとメタデータキャッシュに同時にアクセスできる。本発明の他の実施例によると、キャッシュ制御器は、低電力の条件で順次にブルームフィルターとメタデータキャッシュにアクセスできる。キャッシュ制御器は、ブルームフィルターを先に確認し、ブルームフィルターの結果がメタデータキャッシュミスの場合、キャッシュ制御器はメタデータキャッシュを活性化しない。ブルームフィルターの結果がメタデータキャッシュヒットの場合、キャッシュ制御器はDRAMキャッシュヒット又はミスを確認するため、メタデータキャッシュを活性化できる。ブルームフィルターの結果がメタデータキャッシュヒットであるが、メタデータキャッシュがフォールス(false)の場合、キャッシュ制御器は、DRAMキャッシュタグにアクセスする。順次のアクセスの順序は反対となることができ、即ち、メタデータキャッシュ、ブルームフィルター、そしてDRAMキャッシュタグの順序にアクセスできる。
【0058】
本発明の一つの実施例によると、ハイブリッドメモリーモジュールの動作方法はダイナミックランダムアクセス記憶装置(DRAM)キャッシュ、フラッシュメモリー、そしてメタデータキャッシュを保存するスタティックランダムアクセス記憶装置(SRAM)を含むハイブリッドメモリーモジュールを提供するステップ、ここでDRAMキャッシュはフラッシュメモリーに保存されたデータのキャッシュされたコピー及びデータのキャッシュされたコピーに対応するメタデータを含み、メタデータキャッシュはDRAMキャッシュのメタデータの一部のキャッシュされたコピーを含み、ホストコンピュータからハイブリッドメモリーモジュールに保存されたデータに対するデータアクセスの要請を受信するステップ、データのアクセス要請を復号化してホストアドレスを獲得するステップ、ここでホストアドレスはDRAMキャッシュタグ及びDRAMキャッシュインデックスを含み、DRAMキャッシュインデックスからメタデータアドレスを獲得するステップ、ここでメタデータアドレスはメタデータキャッシュタグ及びメタデータキャッシュインデックスを含み、SRAMのメタデータキャッシュに存在してマッチングするメタデータエントリーの存在に基づいて、メタデータキャッシュのヒットを判定するステップ、ここでマッチングするメタデータキャッシュのエントリーは、メタデータキャッシュのタグ及びDRAMキャッシュタグをペアで含み、メタデータキャッシュヒットの場合、DRAMキャッシュのメタデータに対するアクセスを省略して、DRAMキャッシュからデータを獲得するステップ、そしてDRAMキャッシュから獲得されたデータをホストコンピュータに返還するステップを包含する。
【0059】
メタデータキャッシュのヒットを判定するステップは、メタデータキャッシュに存在してマッチングするメタデータキャッシュエントリーの存在を判定するため、メタデータアドレスのメタデータキャッシュタグを一つ以上のメタデータキャッシュエントリーのメタデータキャッシュタグと比較するステップを、さらに包含する。
【0060】
SRAMはブルームフィルターを、さらに保存でき、ハイブリッドメモリーモジュールの動作方法は、SRAMのメタデータキャッシュに存在してマッチングするメタデータキャッシュエントリーが存在しないことに基づいて、メタデータキャッシュミスを判定するステップ、ブルームフィルターによってブルームフィルターテストを遂行するステップ、ブルームフィルターテストの結果に基づいて、DRAMキャッシュのミス又は潜在的なDRAMキャッシュヒットを判定するステップ、DRAMキャッシュミスの場合、フラッシュメモリーからデータを獲得するステップ、そしてフラッシュメモリーから獲得されたデータをホストコンピュータに返還するステップをさらに包含する。
【0061】
メタデータキャッシュタグの比較とブルームフィルターは同時に遂行される。
【0062】
ハイブリッドメモリーモジュールの動作方法は、メタデータキャッシュミスと潜在的なDRAMキャッシュヒットの場合、DRAMキャッシュのメタデータにアクセスするステップ、ホストアドレスのDRAMキャッシュタグとDRAMキャッシュのメタデータの比較に基づいて、DRAMキャッシュにデータが保存されたか否かを判定するステップ、ホストアドレスのDRAMキャッシュタグにマッチングするエントリーがDRAMキャッシュのメタデータに存在する場合、DRAMキャッシュからデータを獲得して、DRAMキャッシュから獲得されたデータをホストコンピュータに返還するステップ、そしてホストアドレスのDRAMキャッシュタグにマッチングするエントリーがDRAMキャッシュのメタデータに存在しない場合、フラッシュメモリーからデータを獲得し、フラッシュメモリーから獲得したデータをホストコンピュータに返還するステップを、さらに包含する。
【0063】
ブルームフィルターは複数のエントリーを含むブルームフィルターアレイを包含し、ブルームフィルターテストはブルームフィルターアレイにハッシュ関数を適用し、肯定結果または否定結果を提供する。
【0064】
ハイブリッドメモリーモジュールの動作方法は、ブルームフィルターアレイを削除するか又はブルームフィルターアレイを再設定するステップを、さらに包含する。
【0065】
ハイブリッドメモリーモジュールの動作方法は、メタデータキャッシュヒット比率が臨界値より高い場合、ブルームフィルターを使用しないようにキャッシュ制御器をプログラムするステップを、さらに包含する。
【0066】
ハイブリッドメモリーモジュールの動作方法は、メタデータキャッシュヒット比率が臨界値より低い場合、メタデータキャッシュを使用しないようにキャッシュ制御器をプログラムするステップを、さらに包含する。
【0067】
ハイブリッドメモリーモジュールの動作方法は、低電力の条件でブルームフィルター及びメタデータキャッシュを順次にアクセスするステップを、さらに包含する。
【0068】
本発明の他の実施例によると、ハイブリッドメモリーモジュールはフラッシュメモリー、ダイナミックランダムアクセス記憶装置(DRAM)、ここでDRAMキャッシュはフラッシュメモリーに保存されたデータのキャッシュされたコピーとデータのキャッシュされたコピーに対応するメタデータを含み、DRAMキャッシュのメタデータの一部のキャッシュされたコピーを含むメタデータキャッシュを含むスタティックランダムアクセス記憶装置(SRAM)、ホストコンピュータにインターフェースを提供するメモリーインターフェース、DRAMキャッシュ及びフラッシュメモリーに保存されたデータにアクセスするメモリーアクセス制御器、DRAMキャッシュに対するアクセスを制御するDRAM制御器、フラッシュメモリーに対するアクセスを制御するフラッシュ制御器、そしてホストコンピュータから要請されたデータのキャッシュされたコピーの存在を判定するキャッシュ制御器を包含する。
【0069】
キャッシュ制御器は、データアクセスの要請を復号化してホストアドレスを獲得し、ここでホストアドレスはDRAMキャッシュタグ及びDRAMキャッシュインデックスを含み、DRAMキャッシュインデックスからメタデータのアドレスを獲得し、ここでメタデータアドレスはメタデータキャッシュタグ及びメタデータキャッシュインデックスを含み、SRAMのメタデータキャッシュに存在してマッチングするメタデータキャッシュエントリーの存在に基づいて、メタデータキャッシュヒットを判定し、ここで、マッチングするメタデータキャッシュエントリーはメタデータキャッシュタグ及びDRAMキャッシュタグのペアを含み、そしてメタデータキャッシュヒットの場合、DRAMキャッシュのメタデータに対するアクセスを省略して、DRAM制御器にDRAMキャッシュからデータを獲得するように指示するように構成される。メモリーアクセス制御器はDRAMキャッシュから獲得されたデータをホストコンピュータに返還するように構成される。
【0070】
キャッシュ制御器は、メタデータキャッシュに存在してマッチングするメタデータキャッシュエントリーの存在を判定するため、メタデータアドレスのメタデータキャッシュタグと一つ以上のメタデータキャッシュエントリーのメタデータキャッシュタグを比較するように、さらに構成される。
【0071】
SRAMはブルームフィルターをさらに保存できる。キャッシュ制御器は、SRAMのメタデータキャッシュに存在してマッチングするメタデータキャッシュエントリーの存在しないことに基づいて、メタデータキャッシュミスを判定し、ブルームフィルターでブルームフィルターテストを遂行し、ブルームフィルターテストの結果に基づいて、DRAMキャッシュミス又は潜在的なDRAMキャッシュヒットを決定し、DRAMキャッシュミスの場合、DRAMキャッシュのメタデータに対するアクセスを省略し、フラッシュ制御器にフラッシュメモリーからデータを獲得するように指示し、そしてフラッシュメモリーからデータを獲得するように、さらに構成され、メモリーアクセス制御器はフラッシュメモリーから獲得されたデータをホストコンピュータに返還するように構成される。
【0072】
キャッシュ制御器は、メタデータキャッシュタグの比較とブルームフィルターテストを同時に遂行する。
【0073】
メタデータキャッシュミスと潜在的なDRAMキャッシュヒットの場合、DRAM制御器は、DRAMキャッシュのメタデータにアクセスし、そしてホストアドレスのDRAMキャッシュタグとDRAMキャッシュのメタデータの比較に基づいて、DRAMキャッシュにデータが保存されているか否かを判定するように構成される。ホストアドレスのDRAMキャッシュタグにマッチングするエントリーが、DRAMキャッシュのメタデータに存在する場合、DRAM制御器はDRAMキャッシュからデータを獲得するように構成され、メモリーアクセス制御器はDRAMキャッシュから獲得されたデータをホストコンピュータに返還するように構成される。ホストアドレスのDRAMキャッシュタグにマッチングするエントリーが、DRAMキャッシュのメタデータに存在しない場合、フラッシュ制御器はフラッシュメモリーからデータを獲得するように構成され、メモリーアクセス制御器はフラッシュメモリーから獲得したデータをホストコンピュータに返還するように構成される。
【0074】
ブルームフィルターは複数のエントリーを含むブルームフィルターアレイを包含し、ブルームフィルターテストはブルームフィルターアレイにハッシュ関数を適用し、肯定結果又は否定結果を提供する。
【0075】
キャッシュ制御器は、ブルームフィルターアレイを削除するか又はブルームフィルターを再設定するように、さらに構成される。
【0076】
キャッシュ制御器は、メタデータキャッシュヒットの比率が臨界値より高い場合、ブルームフィルターを使用しないようにプログラムされる。
【0077】
キャッシュ制御器は、メタデータキャッシュヒットの比率が臨界値より低い場合、メタデータキャッシュを使用しないようにプログラムされる。
【0078】
キャッシュ制御器は、低電力の条件で、ブルームフィルターとメタデータキャッシュに順次にアクセスするように構成される。
【0079】
上述した本発明の実施例は、SRAMメタデータキャッシュ及びブルームフィルターを利用し、ハイブリッドメモリーモジュールに存在するDRAMキャッシュのメタデータアクセスに対するオーバーヘッドを軽減させるためのシステム及び動作方法を具現する、多様な実施例を説明した。上述した本発明の実施例からの多様な変形及び変更は当業者にとって明らかになるはずである。発明の範囲内に意図した本発明の思想は、添付した請求範囲により記述される。