(57)【要約】      （修正有）【課題】フロントエンドメモリからエビクション（ｅｖｉｃｔｉｏｎ）のために、データの複数のキャッシュラインからエビクションするキャッシュラインを選択する方法を提供する。【解決手段】キャッシュの複数のウェーのそれぞれのウェーにベースライン交替点数を割り当てるステップ、ウェーのそれぞれはキャッシュラインを格納し、それぞれのウェーに格納されたキャッシュラインの有効性の程度に基づいてそれぞれのウェーに有効性点数を割り当てるステップ、ウェーに対するベースライン交替点数及びウェーに対する有効性点数を根拠にしてそれぞれのウェーに対するエビクション決定点数を割り当てるステップ、及び最も高いエビクション決定点数を有するウェーのキャッシュラインをエビクションのためのキャッシュラインに選択するステップを含む。【選択図】図４
2018181336.tif 000002
【特許請求の範囲】
【請求項１】
フロントエンドメモリからエビクション（ｅｖｉｃｔｉｏｎ、放逐）のために、データの複数のキャッシュラインからエビクションするキャッシュラインを選択する方法において，
キャッシュの複数のウェーのそれぞれのウェーにベースライン交替点数を割り当てるステップと、
ここで、前記ウェーのそれぞれはキャッシュラインを格納し、
それぞれのウェーに格納された前記キャッシュラインの有効性の程度に基づいてそれぞれのウェーに有効性点数を割り当てるステップと、
前記ウェーに対する前記ベースライン交替点数及び前記ウェーに対する前記有効性点数を根拠にして、それぞれのウェーに対するエビクション決定点数を割り当てるステップと、
最も高いエビクション決定点数を有するウェーのキャッシュラインをエビクションのためのキャッシュラインに選択するステップと、を含むことを特徴とする、方法。
【請求項２】
前記ベースライン交替点数は、前記ウェーのキャッシュラインの使用の最新性又は前記ウェーの前記キャッシュラインの使用の頻度に対応することを特徴とする、請求項１に記載の方法。
【請求項３】
前記有効性点数に加重ファクターを割り当てるステップ又は前記ベースライン交替点数に加重ファクターを割り当てるステップをさらに含むことを特徴とする、請求項１に記載の方法。
【請求項４】
ＤＲＡＭから前記エビクションのために選択されたキャッシュラインをエビクションするステップをさらに含むことを特徴とする、請求項１に記載の方法。
【請求項５】
使用者入力によって、前記有効性点数に対応する加重ファクター又は前記ベースライン交替点数に対応する加重ファクターのうち、いずれか１つを調節するステップをさらに含むことを特徴とする、請求項１に記載の方法。
【請求項６】
前記ベースライン交替点数は乱数点数であり、
乱数発生器によって、前記乱数点数を発生するステップをさらに含むことを特徴とする、請求項１に記載の方法。
【請求項７】
それぞれのキャッシュラインの有効ビットを読み込むことによって前記有効性点数を判別するステップと、
前記それぞれのキャッシュラインの有効なビットの累積記録を実行するステップと、をさらに含むことを特徴とする、請求項１に記載の方法。
【請求項８】
前記エビクションのために選択されたキャッシュラインをエビクションするステップをさらに含むことを特徴とする、請求項１に記載の方法。
【請求項９】
メモリモジュールで予め読み込み動作を具現するためのメモリキャッシュコントローラーにおいて、
バックエンドメモリ又はフロントエンドメモリがビジー（Ｂｕｓｙ）状態であるかを判別し、
前記バックエンドメモリ又は前記フロントエンドメモリのうち、いずれもビジー状態ではないとき、書き込みバッファセットカウンタを根拠にして、書き込みバッファの書き込みバッファメタデータをインデックスし、
前記書き込みバッファの有効なビットを読み込みして、
前記書き込みバッファの全てのキャッシュラインが完全に有効であるかの有無を判別し、
前記書き込みバッファの全てのキャッシュラインが完全に有効なものと判別されると、前記書き込みバッファセットカウンタを１増加させ、
前記書き込みバッファのキャッシュラインの全てが完全に有効なものではないと判別されると、完全に有効ではない前記書き込みバッファのキャッシュラインをエビクション（ｅｖｉｃｔｉｏｎ）のための交替ラインに選択し、
前記バックエンドメモリから前記交替ラインを予め読み込みして、
書き込みバッファセットカウンタを１増加させることを特徴とする、メモリキャッシュコントローラー。
【請求項１０】
メモリモジュールを用いて読み込み−修正−書き込み動作を行う方法において、
バックエンドメモリの混雑度の程度及びフロントエンドメモリの混雑度の程度を根拠にして、いつ予め読み込み動作を行うかを決定するステップと、
書き込みバッファのキャッシュラインの有効性を根拠にして、いずれのキャッシュラインを予め読み込みするかを決定するステップと、を含むことを特徴とする、方法。
【請求項１１】
前記いつ予め読み込み動作を行うかを決定するステップは、前記バックエンドメモリのメディアコントローラーに伝送された未処理要請を追跡するためのＭＳＨＲ（Ｍｉｓｓ  Ｓｔａｔｕｓ  Ｈａｎｄｌｉｎｇ  Ｒｅｇｉｓｔｅｒ）を維持するステップを含むことを特徴とする、請求項１０に記載の方法。
【請求項１２】
前記ＭＳＨＲが臨界値以下であるときに、前記予め読み込み動作を行うために前記バックエンドメモリに読み込み要請を伝送するステップをさらに含むことを特徴とする、請求項１１に記載の方法。
【請求項１３】
前記臨界値は、前記バックエンドメモリの特性を根拠にすることを特徴とする、請求項１２に記載の方法。
【請求項１４】
動作条件を根拠にして、前記臨界値を調節するステップをさらに含むことを特徴とする、請求項１２に記載の方法。
【請求項１５】
前記書き込みバッファのキャッシュラインの有効性を根拠にしていずれのキャッシュラインを予め読み込みするかを決定するステップは、前記書き込みバッファの有効ビットを読み込みするステップをさらに含むことを特徴とする、請求項１０に記載の方法。
【請求項１６】
前記書き込みバッファの有効ビットを読み込みするステップは、
前記フロントエンドメモリのキャッシュ内のデータのセットを選択するステップと、
前記セットのそれぞれのラインを個別的に選択するステップと、
それぞれの選択されたラインのデータの有効性を検査するステップと、を含むことを特徴とする、請求項１５に記載の方法。
【請求項１７】
ベースライン交替点数及びデータ有効点数を根拠にして、エビクションのためのデータの前記セット内のキャッシュラインを選択するステップをさらに含むことを特徴とする、請求項１６に記載の方法。
【請求項１８】
前記フロントエンドメモリのコントローラー内のトランザクションキューをモニタリングするステップをさらに含み、前記フロントエンドメモリの混雑度の程度は前記トランザクションキューに対応することを特徴とする、請求項１０に記載の方法。
【請求項１９】
前記いずれのキャッシュラインを予め読み込みするかを決定するステップは、
前記フロントエンドメモリの前記混雑度の程度が第１臨界値以下であり、前記バックエンドメモリの前記混雑度の程度が第２臨界値以下であるものと判別された後に行われることを特徴とする、請求項１０に記載の方法。
【請求項２０】
書き込みバッファセットカウンタを維持するステップと、
前記書き込みバッファセットカウンタを根拠にして、エビクションのための前記フロントエンドメモリのキャッシュ内のデータのセットのラインを選択するステップと、をさらに含むことを特徴とする、請求項１０に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリ装置の構造及びメモリ装置の管理方法に係り、より詳しくは、ハイブリッドＤＲＡＭ／ＮＡＮＤメモリにおける読み込み−修正−書き込みのオーバーヘッドを減少させるための方法、及びそのためのメモリキャッシュコントローラーに関する。
【背景技術】
【０００２】
メモリストレージの分野において、大容量メモリを格納するデータセンタは、高容量、高性能、低消費電力及び低費用を達成しようとする。フラッシュメモリは、ＤＲＡＭ（Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ−Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）と比べると、低費用で高容量及び効率的な消費電力を提供できるので、フラッシュメモリがデータセンタの有力な候補になりうる。例えば、フラッシュメモリはモジュール当たり、テラバイト（Ｔｅｒａｂｙｔｅｓ）の格納空間を提供でき、これは、ＤＲＡＭ技術を使用して達成できるよりも１０倍も大きい。なお、さらには、フラッシュメモリは低い待機電力を実現する。
【０００３】
あいにく、フラッシュメモリは、ＤＲＡＭと比べると、一般的に制限された耐久性を有し、さらに低い性能を提供する。例えば、特定タイプのフラッシュメモリ（例えば、ＺＮＡＮＤ）は、ＤＲＡＭ技術を使用して達成されたものよりも、読み込み動作、及び書き込み動作に対する非常に長いレイテンシ（Ｌａｔｅｎｃｙ）を有する。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】米国  特許出願公開公報第２０１５／０１０６５６３号
【特許文献２】米国  特許出願公開公報第２０１６／０１９１２５０号
【特許文献３】米国  特許出願公開公報第２０１６／０３５００３０号
【特許文献４】米国  特許出願公開公報第２０１６／０３６４１５３号
【特許文献５】米国  特許登録公報第９，５２９，７０７号
【特許文献６】国際出願公開公報第ＷＯ２０１５／００４５７０号
【発明の概要】
【発明が解決しようとする課題】
【０００５】
本発明は、低オーバーヘッド及び低消費電力で読み込み−修正−書き込み（Ｒｅａｄ−Ｍｏｄｉｆｙ−Ｗｒｉｔｅ）を含むメモリ管理動作の方法、及びそのためのメモリキャッシュコントローラーを提供する。
【課題を解決するための手段】
【０００６】
一部の実施例によると、フロントエンドメモリからエビクション（ｅｖｉｃｔｉｏｎ、放逐）のために、データの複数のキャッシュラインからエビクションするキャッシュラインを選択する方法が提供され、前記方法は、キャッシュの複数のウェーのそれぞれのウェーにベースライン交替点数を割り当てるステップと、ここで前記ウェーのそれぞれは前記キャッシュラインを格納し、それぞれのウェーに格納された前記キャッシュラインの有効性の程度に基づいてそれぞれのウェーに有効性点数を割り当てるステップと、前記ウェーに対する前記ベースライン交替点数及び前記ウェーに対する前記有効性点数を根拠にして、それぞれのウェーに対するエビクション決定点数を割り当てるステップと、最も高いエビクション決定点数を有するウェーのキャッシュラインをエビクションのためのキャッシュラインに選択するステップを含む。
【０００７】
前記ベースライン交替点数は、前記ウェーのキャッシュラインの使用の最新性又は前記ウェーの前記キャッシュラインの使用の頻度に対応する。
【０００８】
前記方法は、前記有効性点数に加重ファクターを割り当てるステップ又は前記ベースライン交替点数に加重ファクターを割り当てるステップをさらに含む。
【０００９】
前記方法は、ＤＲＡＭから前記エビクションのために選択されたキャッシュラインをエビクションするステップをさらに含む。
【００１０】
前記方法は、使用者入力によって、前記有効性点数に対応する加重ファクター又は前記ベースライン交替点数に対応する加重ファクターのうち、いずれか１つを調節するステップをさらに含む。
【００１１】
前記ベースライン交替点数は乱数点数であり、前記方法は乱数発生器によって、前記乱数点数を発生するステップをさらに含む。
【００１２】
前記方法は、それぞれのキャッシュラインの有効ビットを読み込むことによって前記有効性点数を判別するステップ及び前記それぞれのキャッシュラインの有効なビットの累積記録を実行するステップをさらに含む。
【００１３】
前記方法は、前記エビクションのために選択されたキャッシュラインをエビクションするステップをさらに含む。
【００１４】
一部の実施例によると、メモリモジュールで予め−読み込み動作を具現するためのメモリキャッシュコントローラーが提供され、メモリキャッシュコントローラーは、バックエンドメモリ又はフロントエンドメモリがビジー（Ｂｕｓｙ）状態であるかを判別し、前記バックエンドメモリ又は前記フロントエンドメモリのうち、いずれもビジー状態ではないとき、書き込みバッファセットカウンタを根拠にして、書き込みバッファの書き込みバッファメタデータをインデックスし、前記書き込みバッファの有効なビットを読み込みして、前記書き込みバッファの全てのキャッシュラインが完全に有効であるかの有無を判別し、前記書き込みバッファの全てのキャッシュラインが完全に有効なものと判別されると、前記書き込みバッファセットカウンタを１増加させ、前記書き込みバッファのキャッシュラインの全てが完全に有効なものではないと判別されると、完全に有効ではない前記書き込みバッファのキャッシュラインをエビクション（ｅｖｉｃｔｉｏｎ）のための交替ラインに選択し、前記バックエンドメモリから前記交替ラインを予め読み込みして、書き込みバッファセットカウンタを１増加させる。
【００１５】
一部の実施例によると、メモリモジュールを用いて読み込み−修正−書き込み動作を行う方法が提供され、前記方法は、バックエンドメモリの混雑度の程度及びフロントエンドメモリの混雑度の程度を根拠にして、いつ予め読み込み動作を行うかを決定するステップ、及び書き込みバッファのキャッシュラインの有効性を根拠にして、いずれのキャリラインを予め読み込みするかを決定するステップを含む。
【００１６】
前記いつ予め読み込み動作を行うかを決定するステップは、前記バックエンドメモリのメディアコントローラーに伝送された未処理要請を追跡するためのＭＳＨＲ（Ｍｉｓｓ  Ｓｔａｔｕｓ  Ｈａｎｄｌｉｎｇ  Ｒｅｇｉｓｔｅｒ）を維持するステップを含む。
【００１７】
前記方法は、前記ＭＳＨＲが臨界値以下であるときに、前記予め読み込み動作を行うために前記バックエンドメモリに読み込み要請を伝送するステップをさらに含む。
【００１８】
前記臨界値は、前記バックエンドメモリの特性を根拠にする。
【００１９】
前記方法は、動作条件を根拠にして、前記臨界値を調節するステップをさらに含む。
【００２０】
前記書き込みバッファのキャッシュラインの有効性を根拠にしていずれのキャッシュラインを予め読み込みするかを決定するステップは、前記書き込みバッファの有効ビットを読み込みするステップをさらに含む。
【００２１】
前記書き込みバッファの有効ビットを読み込みするステップは、前記フロントエンドメモリのキャッシュ内のデータのセットを選択するステップ、前記セットのそれぞれのラインを個別的に選択するステップ、それぞれの選択されたラインのデータの有効性を検査するステップを含む。
【００２２】
前記方法は、ベースライン交替点数及びデータ有効点数を根拠にして、エビクションのためのデータの前記セット内のキャッシュラインを選択するステップをさらに含む。
【００２３】
前記方法は、前記フロントエンドメモリのコントローラー内のトランザクションキューをモニタリングするステップをさらに含み、前記フロントエンドメモリの混雑度の程度は前記トランザクションキューに対応する。
【００２４】
前記いずれのキャッシュラインを予め読み込みするかを決定するステップは、前記フロントエンドメモリの前記混雑度の程度が第１臨界値以下であり、前記バックエンドメモリの前記混雑度の程度が第２臨界値以下であるものと判別された後に行われる。
【００２５】
前記方法は、書き込みバッファセットカウンタを維持するステップ、及び前記書き込みバッファセットカウンタを根拠にして、エビクションのための前記フロントエンドメモリのキャッシュ内のデータのセットのラインを選択するステップをさらに含む。
【００２６】
従って、本開示の実施例のＺＤＩＭＭは、ベースライン交替政策及びデータ有効性の間の加重均衡を提供でき、実施例は、放逐のためのデータの新規洗濯方法を提供し、そして、システム性能を向上させながら、ＲＭＷ動作の電力オーバーヘッドを減少させる。
【発明の効果】
【００２７】
本発明によれば、いずれのデータをエビクション（ｅｖｉｃｔｉｏｎ）するかを決定するときに、ベースライン交替政策及びキャッシュライン有効性の全てを考慮することで、ＲＭＷ（読み込み−修正−書き込み）動作のオーバーヘッドが減少する。
【図面の簡単な説明】
【００２８】
一部の実施例は、添付した図面と共に次の説明により、より詳しく理解できる。
【図１】本発明の一実施例によるＺＤＩＭＭ（ＺＮＡＮＤ、Ｄｕａｌ  Ｉｎ−ｌｉｎｅ  Ｍｅｍｏｒｙ  Ｍｏｄｕｌｅ）のブロック図である。
【図２】本発明の一実施例による書き込み動作を図示したブロック図である。
【図３】本発明の一実施例による加重エビクション政策に基づいて、データエビクションのためのデータキャッシュのウェーを選択するためのテーブルの一例である。
【図４】本発明の一実施例による方法を例示的に図示したフローチャートである。
【発明を実施するための形態】
【００２９】
本発明の概念及びその実施方法の特徴は、次の実施例及び添付した図面を参照すると、より容易に理解できる。以下、添付した図面を参照して、実施例を詳細に説明し、同じ参照番号は、同じ要素を称する。しかしながら、本発明は、多様な形態で具体化でき、ここに図示した実施例のみに限定されるものと解釈してはいけない。むしろ、これらの実施例は、本開示が徹底且つ完全に成り立つように当業者に本発明の様相及び特徴を十分に伝達するための例として提供する。よって、本発明の様相及び特徴の完全な理解のために、当業者に不必要なプロセス、要素、及び技術は説明しないこともある。特に言及がない限り、添付した図面及び詳細な説明の全般に渡って同じ参照符号は同じ要素を表し、よって、その説明は繰り返さないこともある。図面によっては、エレメント、層及び領域の相対的な大きさは、明確性のために誇張されることもある。
【００３０】
以下の説明にて、多くの特定の詳細な態様を実施例の完全なる理解が得られるように説明する。しかしながら、多様な実施例がこのような特定細部事項なしに又は１つ以上の等価の構成なしに実施できることは自明である。他の例にて、公知の構造及び装置は、不必要に多様な実施例を曖昧にすることを避けるために、ブロック図形態で図示する。
【００３１】
「第１」、「第２」、「第３」等の用語を、本明細書にて、多様な構成要素、エレメント、領域、階層及び／又はセクションを説明するために使用するが、これらの構成要素、エレメント、領域、階層及び／又はセクションは、これらの用語によって制限されない。これらの用語は、１つの要素、エレメント、領域、層又はセクションを他の要素、エレメント、領域、層又はセクションと区別するために使用する。よって、以下で説明する第１要素、エレメント、領域、層又はセクションは、本発明の思想及び範囲を逸脱することなく、第２要素、エレメント、領域、階層又はセクションに称することができる。
【００３２】
「下に」、「下部に」、「低い」、「上部」、「上に」のような空間的に関連された用語は、本明細書で説明の便宜のために、１つのエレメント又は特徴と異なるエレメント又は特徴の間の関係を容易に説明するために使用する。空間的に関連された用語は、図面にて示される方向に加えて、使用又は動作の間に装置の相違する方向を含むように意図されたものである。例えば、図の装置が覆られると、他のエレメント又は特徴の「下」又は「下に」又は「下部の」で記述された要素は、他のエレメント又は特徴の「上に」向くはずである。よって、「下」及び「下に」の例示的な用語は、上と下の方向の全てを含む。装置は、異なる方向に向かうことができ（例えば、９０度又は他の方向に回転できる）、空間的に相対的な技術用語は、それに応じて解釈されるべきである。
【００３３】
エレメント又は階層が他のエレメント又は階層に「連結され」又は「結合され」たものと言及されるときに、これは、他のエレメント又は階層に直接に連結されたり、結合できたり、又は１つ以上の介在されたエレメント又は階層が存在しえる。なお、１つ以上のエレメント又は階層が２つ以上のエレメント又は階層の「間に」あるものと言及されるときに、２つのエレメント又は層の間の唯一なエレメント又は階層、又は１つ以上の中間にあるエレメント又は階層が存在しえる。
【００３４】
本明細書の目的にて、「Ｘ、Ｙ及びＺのうち、少なくとも１つ」及び「Ｘ、Ｙ及びＺから成るグループから選択された少なくとも１つ」は、Ｘのみであると解釈できうるし、Ｙのみであると解釈できうるし、Ｚのみ、又はＸＹＺ、ＸＹＹ、ＹＺ及びＺＺのようなＸ、Ｙ及びＺのうち、２つ以上の任意の組み合わせ含む。本明細書にて同じ番号は同じ要素を称する。本明細書にて使用された「及び／又は」との用語は、１つ以上の関連の列挙された項目の任意及び全ての組み合わせを含む。
【００３５】
本明細書にて使用する用語は、単に特定実施様態を説明するためのものであり、本発明を制限しようとするものではない。本願で使用する単数形態は、文脈上特に指示しない限り、複数の形態を含む。本明細書にて使用する「含む」、「含める」、「備える」及び「備えられる」の用語は、明示された特徴、整数、ステップ、動作、エレメント及び／又は構成要素の存在を特定し、１つ以上の他の特徴、整数、ステップ、動作、エレメント、構成要素及び／又はこれらのグループの存在又は追加を排除しない。本明細書にて使用する「及び／又は」という用語は、１つ以上の関連の列挙された項目の任意及び全ての組合せを含む。「少なくとも１つ」のような表現は、エレメントの前で、エレメントの全体のリストを修飾し、リストの個別エレメントを修飾しない。
【００３６】
本明細書にて使用する用語「実質的に」、「略」及び類似した用語は、近似の用語として使用され、程度（Ｄｅｇｒｅｅ）の用語としては使用せず、測定された又は計算された値の固有の変化を説明するためのものである。なお、本発明の実施例を説明するときに、「できる」を使用することは、「本発明の１つ以上の実施例」を意味する。本明細書にて使用する用語「使用する」、「使用し」及び「使用される」は、「活用する」、「活用し」、「活用される」と同意語としてみなされる。なお、「例示的な」の用語は、事例又は例示を示す。
【００３７】
特定実施例が、別の方法で具現できる場合、特定の処理順は、説明した順とは異なる順で行われることもできる。例えば、２つの連続的に説明したプロセスは、実質的に同時に行われるか、又は説明した順とは反対順に行われる。
【００３８】
なお、本願に開示し及び／又は引用した任意の数値範囲は、範囲内に含まれる同じ数値精密度の全ての下位範囲を含む。例えば、「１．０から１０．０」の範囲は、指定された最小値１．０と指定された最大値１０．０の間の全ての部分範囲、即ち、最小値は、１．０と同じ若しくは大きく、そして最大値は、１０．０と同じ若しくは小さい部分範囲を含む  （例えば、２．４ないし７．６のような）。本発明に引用した最大数値の制限は、ここに含まれる全てのさらに低い数値制限を含み、本明細書に引用した任意の最初数値の制限は、ここに含まれる全てのさらに高い数値制限を含める。よって、出願人は、本明細書に明示的に列挙された範囲内に含む任意の下位範囲を明示するために、請求範囲を含む本明細書を修正する権利を有する。このように全ての範囲を、本明細書にて記述する。
【００３９】
特に定義しない限り、本明細書にて使用するすべての用語（技術用語及び科学用語を含む）は、本発明が属する技術分野の当業者にとって一般的に理解されるのと同じ意味を持つ。なお、一般的に使用される辞典で定義された用語と同じ用語は、関連技術及び／又は本明細書に関連してその意味と一致する意味を持つものと解釈されるべきであり、理想的であったり、極めて形式的な意味として解釈されるべきではない。
【００４０】
本明細書にて説明する本開示の実施例による電子又は電気装置及び／又は任意の他の関連装置又は構成要素は、任意の適合なハードウェア、ファームウェア（例えば、特定用途向け集積回路（Ａｐｐｌｉｃａｔｉｏｎ−Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ））、ソフトウェア又はソフトウェア、ファームウェア及びハードウェアの組み合わせを用いて具現できる。例えば、この装置の多様な構成要素は、１つの集積回路（ＩＣ）チップ上に又は個別ＩＣチップ上に形成できる。なお、この装置の多様な構成要素は、フレキシブルプリント基板（Ｆｌｅｘｉｂｌｅ  Ｐｒｉｎｔｅｄ  Ｃｉｒｃｕｉｔ  Ｆｉｌｍ）、テープキャリアパッケージ（Ｔａｐｅ  Ｃａｒｒｉｅｒ  Ｐａｃｋａｇｅ、ＴＣＰ）、印刷回路基板（Ｐｒｉｎｔｅｄ  Ｃｉｒｃｕｉｔ  Ｂｏａｒｄ、ＰＣＢ）又は１つの基板上に具現できる。なお、これらの装置の多様な構成要素は、１つ以上のコンピューティング装置内に１つ以上のプロセッサで実行（Ｒｕｎｎｉｎｇ）され、ここに説明する多様な機能を行うために、他のシステム構成要素と相互作用するコンピュータプログラム命令を実行（Ｅｘｅｃｕｔｉｎｇ）するプロセス（Ｐｒｏｃｅｓｓ）又はスレッド（Ｔｈｒｅａｄ）でありうる。コンピュータプログラム命令は、例えば、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）のように標準メモリ装置を使用するコンピューティング装置で具現できるメモリに格納される。なお、コンピュータプログラム命令は、例えば、ＣＤ−ＲＯＭ、フラッシュドライブ等の非一時的なコンピュータ判読可能媒体に格納できる。なお、当業者は、本開示の例示的な実施例の精神及び範囲を逸脱しない限り、多様なコンピューティング装置の機能が単一コンピューティング装置に結合されたり統合でき、又は特定コンピューティング装置の機能が１つ以上の他のコンピューティング装置に亘って分散できることを理解すべきである。
【００４１】
上述したとおり、ＲＭＷ（読み込み−修正−書き込み）動作は性能オーバーヘッド（Ｐｅｒｆｏｒｍａｎｃｅ  Ｏｖｅｒｈｅａｄ）及び電力オーバーヘッド（Ｐｏｗｅｒ  Ｏｖｅｒｈｅａｄ）をもたらす。
【００４２】
図１は、本開示の実施例によるＺＤＩＭＭ（ＺＮＡＮＤ  Ｄｕａｌ  Ｉｎ−ｌｉｎｅ  Ｍｅｍｏｒｙ  Ｍｏｄｕｌｅ）のブロック図である。図２は、本開示の一実施例による書き込み動作を図示したブロック図である。
【００４３】
図１を参照すると、ＺＤＩＭＭ（ＺＮＡＮＤ、Ｄｕａｌ  Ｉｎ−ｌｉｎｅ  Ｍｅｍｏｒｙ  Ｍｏｄｕｌｅ）１００は、単一メモリモジュール上に、キャッシュメモリで動作するＤＲＡＭ（Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ−Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）キャッシュ／ＤＲＡＭ１７０及びメインメモリで動作するＺＮＡＮＤタイプフラッシュメモリ（例えば、ＺＮＡＮＤ１３０）を含む。ＤＲＡＭキャッシュ／ＤＲＡＭ１７０は、キャッシュメタデータ１２０、読み込み動作に最適化された読み込み／書き込みキャッシュ（Ｒｅａｄ／Ｗｒｉｔｅ  Ｃａｃｈｅ、ＲＷＣ）１８０及び書き込み動作に最適化された書き込みバッファ１４０（Ｗｒｉｔｅ  Ｂｕｆｆｅｒ、ＷＢ）を含む。
【００４４】
ＺＤＩＭＭ１００はキャッシュコントローラー１６０をさらに含み、高容量バックエンドメモリストレージ（Ｈｉｇｈ  Ｃａｐａｃｉｔｙ  Ｂａｃｋｅｎｄ  Ｍｅｍｏｒｙ  Ｓｔｏｒａｇｅ）として動作するＺＮＡＮＤ１３０に接続するためのホストコントローラー１９０を含む。
【００４５】
以下の説明は、図に示したＺＤＩＭＭ１００を参照するが、本発明の実施例は、次の特徴を有する任意のハードウェアアーキテクチァーに適用できる
（１）キャッシュメモリとして動作する１つのメモリタイプと、メインメモリとして動作する他のメモリタイプを含む２つ以上のメモリタイプの存在
（２）キャッシュメモリのアクセス粒度（Ａｃｃｅｓｓ  Ｇｒａｎｕｌａｒｉｔｙ）が、メインメモリに対応する粒度より小さく、データの一貫性を維持するために、読み込み−修正−書き込み（Ｒｅａｄ−Ｍｏｄｉｆｙ−Ｗｒｉｔｅ）動作が使用され、
（３）メインメモリによる動作は、キャッシュメモリによる動作よりも遅い。
【００４６】
図２を参照すると、読み込み−修正−書き込み（ＲＭＷ）動作を含むＺＤＩＭＭ１００のメモリ管理は、限界に至った。このような限界は、プロセッサ１１０からの書き込み要請１１２が６４バイト（６４Ｂ）の粒度を有するのに対し、（ＺＮＡＮＤ技術に対して）ＷＢ１４０のライトバック（Ｗｒｉｔｅｂａｃｋ）１１４の粒度が２Ｋｉｌｏｂｙｔｅ（２ＫＢ）のキャッシュラインであることに起因する。よって、ＺＮＡＮＤ１３０に書き込まれるデータは２ＫＢチャンク（Ｃｈｕｎｋ）に書き込み１１４されなければならない。なお、例えば、２ＫＢキャッシュラインのうち、単に６４Ｂに対してアップデートを行うために、２ＫＢキャッシュラインの全てのデータがＺＮＡＮＤ１３０からキャッシュ階層（例えば、ＲＷＣ１８０）に読み込みされ、全体の２ＫＢがＺＮＡＮＤ１３０に書き込み１１４されるので、６４Ｂの読み込み動作の結果として望ましくないオーバーヘッドが引き起こされる。
【００４７】
キャッシュアクセス粒度がメインメモリアクセス粒度より小さい場合、読み込み−修正−書き込み動作が必ずしも有益ではないという点に留意すべきである。例えば、ＤＲＡＭは、バイト−アドレスが可能で（Ｂｙｔｅ−Ａｄｄｒｅｓｓａｂｌｅ）、「Ｉｎ−Ｐｌａｃｅ  Ｗｒｉｔｅ」を使用して書き込みができるため、ＤＲＡＭでは６４Ｂブロックの内の８Ｂアップデートが可能である。
【００４８】
一方、ＮＡＮＤはバイト−アドレスが可能でなく、ＮＡＮＤ書き込み動作は「Ｏｕｔ−Ｏｆ−Ｐｌａｃｅ」であり、これは、書き込み動作がデータを維持するメモリページを直接アップデートしないことを意味する。代わりに、書き込み動作のために新たなページが割り当てられ、以前のページは無効化される（Ｉｎｖａｌｉｄａｔｅｄ）。よって、書き込み粒度がページの大きさより小さい場合、一部の有用なデータが意図してないのにも関わらず、無効化されうる。
【００４９】
ＲＭＷ動作はキャッシュ階層で管理される。  即ち、キャッシュコントローラー１６０が２ＫＢデータをＷＢ１４０からＺＮＡＮＤ１３０に書き込みするとき、２ＫＢデータが完全に有効でなければならない。その結果、もし、ＷＢ１４０内の２ＫＢデータが単に部分的に有効な場合（例えば、プロセッサ１１０が６４Ｂ粒度でＷＢ１４０に書き込み１１８をするため）、２ＫＢを完全に有効にするために、キャッシュコントローラー１６０はＺＮＡＮＤ１３０から読み込んで有効なデータの残りを獲得しなければならない。即ち、キャッシュコントローラー１６０は、先に有効なデータの残りを獲得するために、ＺＮＡＮＤ１３０から読み込み、データの２ＫＢチャンクの全体を埋めて、完全に有効なキャッシュデータの２ＫＢラインを作る。
【００５０】
よって、ＲＭＷ動作は性能オーバーヘッド及び電力オーバーヘッドを招く。例えば、ＲＭＷ動作は有効なデータを獲得するために、ＺＮＡＮＤ１３０から付加的な読み込みを要求し、部分的に有効な２ＫＢキャッシュラインを完全に有効にするために、ＷＢ１４０に付加的な読み込み１１５を要求する。他の実施例にて、付加的な読み込み１１５はＺＮＡＮＤ１３０からの２ＫＢ読み込み、及び２ＫＢのうちの一部のＷＢ１４０への書き込みを伴うこともある。よって、ＺＮＡＮＤ読み込みがクリティカルパス（Ｃｒｉｔｉｃａｌ  Ｐａｔｈ）上にあり、ＺＮＡＮＤ読み込みがテールレイテンシ（Ｔａｉｌ  Ｌａｔｅｎｃｙ）を経験するときに、ＲＭＷオーバーヘッドは性能を低下させる。
【００５１】
さらに、ＤＲＡＭキャッシュ／ＤＲＡＭ１７０は、実質的にキャッシュとして動作する。しかしながら、ＤＲＡＭキャッシュ／ＤＲＡＭ１７０の容量には制限があり、メモリ管理上、しばしばＤＲＡＭキャッシュ／ＤＲＡＭ１７０の古いデータを放出しＺＮＡＮＤ１３０に戻すようにして、新たなデータが入るための空間を作らざるを得ない（即ち、データのエビクション（Ｅｖｉｃｔｉｏｎ））。しかしながら、ＤＲＡＭキャッシュ／ＤＲＡＭ１７０からいずれのデータをエビクションするかを選択することは、具現されたエビクション政策に依存する。
【００５２】
図１及び図２を参照すると、本開示の実施例は、ＲＭＷ性能を向上するための新規の加重エビクション政策（Ｗｅｉｇｈｔｅｄ  Ｅｖｉｃｔｉｏｎ  Ｐｏｌｉｃｙ）を使用する。以下に説明する実施例にて、ＲＭＷ動作は、キャッシュ階層において管理される。しかしながら、他の実施例において、後述する実施例の特徴はいずれの機能ブロック（Ｅｎｔｉｔｙ）がＲＭＷ動作を管理するか関係せずに適用できるので、ＲＭＷ動作がキャッシュ層において管理されない設計がありうる。
【００５３】
例えば、ＲＭＷ動作に関して、ＤＲＡＭキャッシュ／ＤＲＡＭ１７０からエビクションされるべき２ＫＢキャッシュライン（即ち、ＺＮＡＮＤ１３０にライトバックされるべき２ＫＢキャッシュラインの書き込み１１４）が完全に有効であるとき、２つの仮定ができる。第１に、ＺＮＡＮＤ１３０からＷＢ１４０への読み込み１１５は、キャッシュラインが完全に有効であるため、不必要になる。即ち、完全に有効な２ＫＢキャッシュラインが、既にＤＲＡＭキャッシュ／ＤＲＡＭ１７０に位置するため、ＺＮＡＮＤ１３０から同じデータを読み込む必要がない。第２に、情報がＷＢ１４０に既に含まれているため、ＷＢ１４０にデータを書き込みするために、ＷＢ１４０にデータを提供することは不必要である。
【００５４】
しかしながら、ＤＲＡＭキャッシュ／ＤＲＡＭ１７０からエビクションされる２ＫＢキャッシュラインが部分的に有効であると、データの一貫性を保障するために、ＺＮＡＮＤ１３０から有効データの読み込み１１５が行われる。即ち、ＺＮＡＮＤ１３０から読み込み１１５をする理由は、ＺＮＡＮＤ１３０にライトバックされるか、又はコピーされる２ＫＢキャッシュラインが完全に有効であることを保障するためのものである。なお、ＷＢ１４０に対する読み込み１１５の回数はＤＲＡＭキャッシュ／ＤＲＡＭ１７０内の２ＫＢキャッシュラインのどのくらいのパーセントが有効であるかに対する有効比率に依存する（例えば、ＤＲＡＭキャッシュ／ＤＲＡＭ１７０内の２ＫＢキャッシュラインで有効の６４Ｂサブラインの数が多くなるほど、有効データにＺＮＡＮＤ１３０によってアップデートされる必要がある６４Ｂサブラインの数は少なくなる）。例えば、ＤＲＡＭキャッシュ／ＤＲＡＭ１７０からエビクションされるべき２ＫＢキャッシュラインのデータの略９１％が有効であると、データの残りの９％のみがアップデートされる必要がある。
【００５５】
例示的な例として、ＷＢ１４０での２ＫＢは、初期には完全に無効である（即ち、ＷＢ１４０は空いている）。初期化された後に、プロセッサ１１０はＷＢ１４０に一部有用なデータを記録し、その結果、その２ＫＢ内の６４Ｂエントリのうち、一部を有効にする。プロセッサ１１０が６４ＢデータをＷＢ１４０に継続して記録すると、この６４Ｂデータは、その２ＫＢ内の可能な６４Ｂエントリそれぞれに埋められ、２ＫＢは完全に有効になるはずである。しかしながら、プロセッサ１１０は多数の６４ＢエントリをＷＢ１４０に記入しない場合もあり、又は６４Ｂエントリが２ＫＢの全てを埋めずに２ＫＢの一部のみを有効になし得る。その後、キャッシュコントローラー１６０がＷＢ１４０からＺＮＡＮＤ１３０に２ＫＢをエビクションすると、ＷＢ１４０の２ＫＢを完全に有効にできる有効な６４Ｂデータを含む２ＫＢをＺＮＡＮＤ１３０から読み込みすることによってＲＭＷ動作が行われる。プロセッサ１１０はＲＭＷプロセスに関与しない。
【００５６】
よって、本一実施例は、エビクションされるキャッシュラインを決定する際の有効性の概念を用いる。いずれのキャッシュラインをエビクションするかを決定するためのエビクション決定（Ｅｖｉｃｔｉｏｎ  Ｄｅｃｉｓｉｏｎ）は、ベースラインエビクション／交替政策の関数及びキャッシュライン有効性関数（即ち、分析中の２ＫＢ−ＺＮＡＮＤキャッシュライン内の有効な６４Ｂサブラインの数の関数）の双方による。即ち、本発明の実施例は、古く、且つ伝統的なエビクション政策と共に、新たなエビクション政策を提供する。これは、ベースライン交替政策及びキャッシュラインの有効性の２つの要素によるエビクション決定に基づく。
【００５７】
例えば、ＤＲＡＭからいずれのデータをエビクションするかを決定するに当たって、従来のベースライン交替政策のみが考慮されると（例えば、多くの有効なエントリを有するキャッシュラインのエビクションによって）、多数のＲＭＷ動作が必要である。
【００５８】
同様に、もしどのデータをエビクションするかの決定に当たって、キャッシュライン有効性のみが考慮されると、キャッシュラインは好ましくないほど、未熟なままエビクションされうる（例えば、将来再使用に適したキャッシュラインがエビクションされうるし、その場合そのキャッシュラインが再びロードされることが要求される）。例えば、キャッシュラインを再使用することが有益になり、最も最近にロードされたキャッシュラインをエビクションするとエビクションされたキャッシュラインが再びアクセスされる可能性が高くなり、以後再びロードされる必要がある。よって、場合によって、頻繁に使用されるキャッシュラインより、使用されていない、又は頻繁に使用されていないキャッシュラインをエビクションすることが有益になる。
【００５９】
図３は、本発明の一実施例による加重エビクション政策に基づいて、データエビクションのためのデータキャッシュのウェーを選択するためのテーブルの一例である。
【００６０】
図３を参照すると、本発明の一実施例によって、いずれのデータをエビクションするかを決定するときに、ベースライン交替政策及びキャッシュライン有効性の全てを考慮することで、ＲＭＷオーバーヘッドが減少する。本実施例の加重エビクション政策の例を、以下に説明する。
【００６１】
本実施例の例示として、ＤＲＡＭキャッシュ／ＤＲＡＭ１７０の一例として４−ウェーキャッシュを用いる。本例示のベースライン交替政策は、ＬＲＵ（Ｌｅａｓｔ  Ｒｅｃｅｎｔｌｙ  Ｕｓｅｄ）交替政策である。４−ウェーキャッシュの第１ウェー（例えば、Ｗａｙ０）は、１から４までの段階（Ｓｃａｌｅ）の４のＬＲＵ点数（Ｓｃｏｒｅ）を有し（第１ウェーが最近において最低使用であることを表す）、第２ウェー（例えば、Ｗａｙ１）は、３のＬＲＵ点数を有し、第３ウェー（例えば、Ｗａｙ２）は２のＬＲＵ点数を有し、そして第４ウェー（例えば、Ｗａｙ３）は１のＬＲＵ点数を有する（第４ウェーは最も最近に使用された）。他の実施例にて、ＤＲＡＭキャッシュ／ＤＲＡＭ１７０は相違する個数のウェーを有し、個別的なウェーの順位のために相違するスケールが使用される。なお、他の実施例にて、相違するベースライン交替政策（例えば、最少頻度使用（Ｌｅａｓｔ  Ｆｒｅｑｕｅｎｔｌｙ  Ｕｓｅｄ、ＬＦＵ）、先入先出（Ｆｉｒｓｔ−Ｉｎ  Ｆｉｒｓｔ−Ｏｕｔ、ＦＩＦＯ）、ランダム等）が使用される。
【００６２】
本実施例にて、キャッシュライン有効性は、分析中の２ＫＢキャッシュラインの有効６４Ｂサブラインの数の合計で単純化された有効性点数によって決定される。この例において、第１ウェーは有効性点数が２０である（例えば、キャッシュラインの３２個の６４バイトサブラインで、２０個のサブラインが有効である）。第２ウェーは、有効性点数が３２である（例えば、２ＫＢキャッシュラインは完全に有効である。即ち、３２個のサブラインが全て有効であることを意味する）、第３ウェーは有効性点数が１０であり、第４ウェーは有効性点数が５である。
【００６３】
本実施例は、ベースライン交替政策点数（本実施例のＬＲＵ点数）及びウェーのそれぞれの有効性点数の全て又はいずれか１つを加重し、ウェーのそれぞれに対する２つの加重点数を加算して、各ウェーに対する個別的に合算された点数／エビクション決定点数を有するようにし、そのとき、格納されたデータのエビクションに対する最も高いエビクション決定点数を有するウェーを選択する。
【００６４】
本実施例にて、エビクション決定点数はＬＲＵ点数にｘを掛けて、有効性点数にｙを掛けたものを足したものと同じである（即ち、（ｘ＊ＬＲＵ点数）＋（ｙ＊有効点数））。ここで、ｘとｙは加重ファクター（Ｗｅｉｇｈｔｅｄ  Ｆａｃｔｏｒ）である。図３に図示した本実施例にて、ｘは１０に等しく、ｙは１に等しいが他の加重値が使用されうるし、特定用途によって変更できる。よって、第１ウェーに対するエビクション決定点数は、６０（１０＊４＋１＊２０）であり、第２ウェーに対するエビクション決定点数は、６２（１０＊３＋１＊３２）、第３ウェーに対するエビクション決定点数は、３０（１０＊２＋１＊１０）であり、そして第４ウェーに対するエビクション決定点数は、１５（１０＊１＋１＊５）である。
【００６５】
よって、本実施例の第２ウェーは、最も高いエビクション決定点数を有するので、第２ウェーはデータがエビクションされるように選択されるウェーである。よって、本実施例は複数の与えられたウェーのそれぞれに格納され、分析されたキャッシュラインの有効性の程度に基づいてエビクション／交替政策と、従来のベースライン交替政策の均衡を維持してエビクション決定を判別するための新規のアプローチを提供できる。
【００６６】
本実施例の加重エビクション政策を具現するために、交替点数は、例えば、ＬＲＵ点数（例えば、各ウェーのデータの使用タイミングに基づいた点数）、ＬＦＵ点数（例えば、各ウェーのデータの使用頻度に基づいた点数）又はＦＩＦＯ点数でありうるし、この中の任意のものは交替ビットによって獲得される。対案的に、交替点数は乱数発生器によって獲得しえる乱数点数（Ｒａｎｄｏｍ  Ｓｃｏｒｅ）でありうる（例えば、各ウェーに対するベースライン交替点数はランダムでありうるし、その加重有効性点数から獲得された値に加算できる）。同様のアプローチがｎＭＲＵ（ｎｏｔ  Ｍｏｓｔ  Ｒｅｃｅｎｔｌｙ  Ｕｓｅｄ、最も最近に使用されたものではない）のような他の交替政策、又はＺＤＩＭＭ１００のキャッシュコントローラー１６０によって具現される任意の他の既存の交替政策に対して適用できる。
【００６７】
なお、有効性点数は有効ビットを単純に判別し、キャッシュライン／ウェー当たり有効なビットの累積記録を実行することで決定できる。なお、エビクション決定点数は加重ファクター（例えば、ｘ及びｙ）をプログラミングできるようにして、レジスタに格納することで調整されうるし、ロジックを使用することで（例えば、乗算−加算ハードウェアを具現することで）具現できる。
【００６８】
本開示の他の実施例に関して、上述したとおりＲＭＷオーバーヘッドはＺＮＡＮＤ読み込みがクリティカルパス上にあるとき、及びＺＮＡＮＤ読み込みがテールレイテンシを経験するときに性能を妨害する。以下に説明するとおり、本実施例は、クリティカルパスの読み込み及びテールレイテンシを避けるために予め読み込み（Ｐｒｅ−ｒｅａｄ）動作を可能にする。これは、いつ予め読み込みをするかを選択し、いずれを予め読み込みするかを選択することによって達成できる。即ち、他の実施例によると、予め読み込み動作を行うことで、クリティカルパスの読み込みを回避し、テールレイテンシを回避するために、データ読み込みによって発生する性能低下を回避することでＲＭＷオーバーヘッドを減少できる。
【００６９】
例えば、予め読み込みに関する条件は、ＺＮＡＮＤ混雑度（Ｂｕｓｙｎｅｓｓ）、ＤＲＡＭ混雑度、ＷＢセットインデックス（Ｓｅｔ  Ｉｎｄｅｘ）及び／又は交替政策の関数である。この関数はＺＮＡＮＤ１３０の予め読み込みが、ＺＮＡＮＤ１３０がビジー（Ｂｕｓｙ）状態ではないときに発生しなければならず、ＷＢ１４０の有効ビットがフロントエンド（Ｆｒｏｎｔｅｎｄ）であるＤＲＡＭキャッシュ／ＤＲＡＭ１７０がビジー状態ではないときに検査されなければならず、キャッシュラインはセットの全体に亘って均等に事前アップデート（Ｐｒｅ−ｕｐｄａｔｅ）されなければならず、セット内でこれからエビクションされる可能性の最も高いキャッシュラインは、事前アップデートされなければならない。
【００７０】
より詳しく説明すると、本実施例は予め読み込みする時点の発生がＺＮＡＮＤ（バックエンドメモリ（Ｂａｃｋｅｎｄ  Ｍｅｍｏｒｙ））混雑度及びＤＲＡＭ（フロントエンドメモリ（Ｆｒｏｎｔｅｎｄ  Ｍｅｍｏｒｙ））混雑度に依存するように具現される。
【００７１】
ＺＮＡＮＤ混雑度の関数として、ＺＮＡＮＤ１３０が非常にビジー（Ｂｕｓｙ）な場合、予め読み込み動作を行うことは好ましくない。しかしながら、ＺＮＡＮＤ１３０が遊休（Ｉｄｌｅ）状態であるときに、ＺＮＡＮＤ１３０からの予め読み込みは、システム性能に否定的な影響を及ぼさない。よって、本実施例にて、いつ予め読み込み動作を行うかを決定するために、キャッシュコントローラー１６０はＺＮＡＮＤメディアコントローラーに伝送された未処理（ｏｕｔｓｔａｎｄｉｎｇ）要請を追跡するためのＭＳＨＲ（Ｍｉｓｓ  Ｓｔａｔｕｓ  Ｈａｎｄｌｉｎｇ  Ｒｅｇｉｓｔｅｒ）１６２を維持する。ＭＳＨＲ１６２をモニタリングすることで、キャッシュコントローラー１６０はＺＮＡＮＤ１３０のビジー（Ｂｕｓｙ）程度を測定（ｅｓｔｉｍａｔｅ）できる（例えば、ＺＮＡＮＤ１３０に対する多数の未処理要請はＺＮＡＮＤ１３０がその時にビジーであることを表す）。よって、ＭＳＨＲ１６２がＺＮＡＮＤ１３０に対する未処理要請の数が臨界値（Ｔｈｒｅｓｈｏｌｄ  Ｎｕｍｂｅｒ、例えば、ＺＮＡＮＤ要請臨界値）より小さいと表示すると、予め読み込み動作のためにＺＮＡＮＤ１３０に対して読み込み要請を伝送できる。臨界値は調整可能値（例えば、動作条件に基づいて調整される）である。例えば、診断テストを行い、診断テストの結果をキャッシュコントローラー１６０に伝送し、キャッシュコントローラー１６０は臨界値が過剰に高く設定されたかを判別できる（例えば、ＺＮＡＮＤ１３０がビジー状態と予想されないことを表す臨界値であるのに、多数の未処理要請による混雑に起因して、ＺＮＡＮＤ１３０の性能が許容できないぐらいに低くなる）。よって、キャッシュコントローラー１６０は臨界値を減少させ、アップデートされた臨界値が、ＺＮＡＮＤ１３０がさらに少ない未処理要請を有するときもビジーを表すようにする。なお、臨界値はＺＮＡＮＤ１３０の特性に基づいて（例えば、バックエンドメモリの特性に基づいて）予め定義できる。
【００７２】
いつ予め読み込み動作を行うかを決定したあとに、キャッシュコントローラー１６０はＤＲＡＭ混雑度の推定を根拠にして、いずれのキャッシュラインを予め読み込みするか（例えば、キャッシュ内のいずれの位置を予め読み込みするか）を決定する。よって、キャッシュコントローラー１６０は、いずれのキャッシュラインを予め読み込みするかを決定するために書き込みバッファ（ＷＢ）有効ビットを読み込みする。ＷＢ有効ビットを読み込みすることによって、キャッシュコントローラー１６０は完全に有効なキャッシュラインを予め読み込みすることを避ける。ＷＢ有効ビットの読み込みは、キャッシュメタデータ１２０に格納されるＤＲＡＭメタデータにアクセスするキャッシュコントローラー１６０によって達成される。これは、キャッシュ階層の内のキャッシュコントローラー１６０上に位置したＤＲＡＭキャッシュコントローラー／ＤＲＡＭコントローラー１２２によって可能になる。
【００７３】
なお、ＤＲＡＭキャッシュコントローラ／ＤＲＡＭコントローラー１２２はトランザクションキュー１７２を含み、ＤＲＡＭキャッシュ／ＤＲＡＭ１７０に伝送された全ての未処理命令を格納する。ＤＲＡＭキャッシュコントローラ／ＤＲＡＭコントローラー１２２は、ＤＲＡＭキャッシュ／ＤＲＡＭ１７０の混雑度を推定するために、ＤＲＡＭキャッシュコントローラ／ＤＲＡＭコントローラー１２２の内のトランザクションキュー１７２をモニタリングする。ＤＲＡＭメタデータに対するキャッシュコントローラー１６０のアクセスが重要なＤＲＡＭキャッシュアクセスに影響を及ぼさないようにするために、ＤＲＡＭキャッシュコントローラ／ＤＲＡＭコントローラー１２２はＤＲＡＭキャッシュ／ＤＲＡＭ１７０の混雑度を推定するために、ＤＲＡＭキャッシュコントローラ／ＤＲＡＭコントローラー１２２の内のトランザクションキュー１７２をモニタリングする。もし、ＤＲＡＭキャッシュ／ＤＲＡＭ１７０の未処理要請の数が臨界値（例えば、ＤＲＡＭ要請臨界値）より小さいと、キャッシュコントローラー１６０はキャッシュラインの有効ビットを読み込みするために、読み込み要請をＤＲＡＭキャッシュ／ＤＲＡＭ１７０に伝送する。ＺＮＡＮＤ要請臨界値の数及びＤＲＡＭ要請臨界値の数はプログラムできる値であるか、又はＤＲＡＭキャッシュ／ＤＲＡＭ１７０の１つ以上の特性を根拠にして予め設定できる値である。
【００７４】
本実施例によると、上述したとおり、予め読み込み動作はＺＮＡＮＤ１３０又はＤＲＡＭキャッシュ／ＤＲＡＭ１７０のうちいずれもがビジー状態ではないときにのみなされる。即ち、本実施例は、ＺＮＡＮＤメディアコントローラーに伝送された未処理要請の数がＺＮＡＮＤ要請臨界値以下であり、そして、ＤＲＡＭキャッシュ／ＤＲＡＭ１７０に伝送された未処理要請の数がＤＲＡＭ要請臨界値以下であると判別されたときにのみ、予め読み込みを決定するプロトコルを有する。
【００７５】
いずれを（即ち、ＤＲＡＭキャッシュ／ＤＲＡＭ１７０のいずれの位置）を予め読み込みするかを決定するときに、書き込みバッファ（ＷＢ）セットインデックスが使用される。キャッシュコントローラー１６０がまず、データの与えられたセットを選択し、次にデータのラインを選択することによってキャッシュコントローラー１６０は、いずれのキャッシュラインを予め読み込みするかを決定する。即ち、キャッシュコントローラー１６０はＤＲＡＭキャッシュ／ＤＲＡＭ１７０の複数のウェーを選択できる。次にキャッシュコントローラー１６０は、ＤＲＡＭキャッシュ／ＤＲＡＭ１７０の複数のウェーのうち、１つ対する加重エビクション決定をなすために、加重エビクション政策（例えば、図３にて説明した加重エビクション政策）を実行する。その後、キャッシュコントローラー１６０は対応するウェーの内に含まれたデータのラインを予め読み込みする。
【００７６】
データの与えられたセットを選択した後、キャッシュコントローラー１６０は、ラウンドロビンセット選択プロトコルのような多くの選択プロトコルのうち、１つを実行する。例えば、キャッシュコントローラー１６０はデータの第１行／セットを検査し、最後の行に至るまで、次々に次の行を検査し、その後、第１行はキャッシュコントローラー６０によって再び検査される。データの行／セットそれぞれの検査において、キャッシュコントローラー１６０は（例えば、ＬＲＵのようなベースライン交替政策を根拠にして）行のそれぞれに対応するウェーのうち、いずれのウェーがエビクションの目標になるかを決定する。しかしながら、もしキャッシュコントローラー１６０がエビクションのために目標としたウェーの検査で目標としたウェーが完全に有効なものであると結論すると、キャッシュコントローラーは完全に有効ではないウェーが探せるまで、次の適切なウェー（例えば、２つ目に最も最近に使用されたウェー）に移動する。
【００７７】
ラウンドロビンセット選択プロトコルを具現するために、キャッシュコントローラー１６０は、書き込みバッファ（ＷＢ）セットインデックス（例えば、カウンタが３の値を示すときに、第３セットを選択することを示す）に対応するカウンタを有する。カウンタは予め読み込みが実行される度に１ずつ増加する。データの与えられたセット内の全てのキャッシュラインが完全に有効であると、カウンタは１増加され、キャッシュコントローラー１６０によってデータの第２セットが選択される。
【００７８】
即ち、キャッシュコントローラー１６０のカウンタは１に初期化でき、キャッシュコントローラー１６０は検査のために、第１データセット／第１行を選択する。次にキャッシュコントローラー１６０は、第１データセットに対して予め読み込み動作を実行し、第１データセット内の全てのキャッシュラインが完全に有効であるかを判別する。よって、キャッシュコントローラー１６０は、第１データセット内に予め読み込まれるものがないと判別し、カウンタを２に増加させる。キャッシュコントローラー１６０は、カウンタによって表示される値によって、検査のために第２データセットを選択する。このようなプロセスの繰り返しによって、キャッシュコントローラー１６０は、多様なデータセットを「ラウンドロビン」方式で継続して検査する。
【００７９】
その後、交替政策が具現される。例えば、セットが選択された後、セットの内に選択されるキャッシュライン（即ち、いずれかのウェー）が上記で例示的に説明した加重エビクション決定点数を根拠にして判別できる。加重エビクション決定点数は、適用可能なベースライン交替政策及びデータ有効性によって判別する。よって、もしベースライン交替政策でＬＲＵ政策が使用されると、キャッシュコントローラー１６０は、最も最近に使用されたキャッシュラインを目標として選択する。しかしながら、もし、ＬＲＵ政策（即ち、最も最近に使用されたャッシュライン）によって選択されたキャッシュラインが完全に有効であると、キャッシュコントローラー１６０は、２つ目に最も最近使用されたもののキャッシュラインを目標として選択する。なお、もしベースライン交替政策がランダム（Ｒａｎｄｏｍ）であると、完全に有効でない任意のキャッシュラインがキャッシュコントローラー１６０によって選択される。
【００８０】
図４は、本発明の一実施例による方法を例示的に図示したフローチャートである。
【００８１】
図４を参照すると、本開示の一実施例によると、キャッシュコントローラー１６０は、ＺＮＡＮＤ１３０がビジー（Ｂｕｓｙ）状態であるかを推定するためにＭＳＨＲ１６２をモニタリングし、ＤＲＡＭキャッシュ／ＤＲＡＭ１７０がビジー状態であるかを推定するためにＤＲＡＭコントローラートランザクションキュー１７２をモニタリングする（Ｓ１０１）。キャッシュコントローラー１６０は、ＺＮＡＮＤ１３０又はＤＲＡＭキャッシュ／ＤＲＡＭ１７０のうち、１つがビジー状態であるかの有無を判別する（Ｓ１０２）。キャッシュコントローラー１６０がＺＮＡＮＤ１３０又はＤＲＡＭキャッシュ／ＤＲＡＭ１７０のうち、１つがビジー状態であると判別すると、キャッシュコントローラー１６０は何の動作もしないように決定する（Ｓ１０３）。しかしながら、キャッシュコントローラー１６０がＺＮＡＮＤ１３０又はＤＲＡＭキャッシュ／ＤＲＡＭ１７０のうち、いずれもビジー状態ではないと判別すると、キャッシュコントローラー１６０は、いずれのデータを予め読み込み（Ｐｒｅ−ｒｅａｄ）するかを決定する（Ｓ１０４）（即ち、データセットの行を選択するために、書き込みバッファ（ＷＢ）セットカウンタを根拠にして、書き込みバッファ（ＷＢ）メタデータ（Ｍｅｔａｄａｔａ）をインデックシング（Ｉｎｄｅｘｉｎｇ）することで、いずれのデータを予め読み込みするかを決定する）。キャッシュコントローラー１６０はＷＢ１４０の内の有効ビットを読み込みする（Ｓ１０５）。キャッシュコントローラー１６０はラインが完全に有効であるかの有無を判別する（Ｓ１０６）。キャッシュコントローラー１６０が読み込みした有効なビットから全てのラインが完全に有効であると判別すると、書き込みバッファ（ＷＢ）セットカウンタは、１増加する（Ｓ１０７）。しかしながら、キャッシュコントローラー１６０が全てのラインが完全に有効ではないと判別すると、キャッシュコントローラー１６０は完全に有効ではないキャッシュラインを「交替ライン（Ｒｅｐｌａｃｅ  Ｌｉｎｅ）」として選択し、ＺＮＡＮＤ１３０からそのラインを予め読み込みする（Ｓ１０８）。その後、キャッシュコントローラー１６０は、ＷＢセットカウンタを１増加させ（Ｓ１０７）、ＤＲＡＭキャッシュコントローラ／ＤＲＡＭコントローラー１２２の混雑度及びＺＮＡＮＤ１３０の混雑度をモニタリングするステップ（Ｓ１０１）にリターンする。
【００８２】
よって、本開示の実施例は、読み込み−修正−書き込み（ＲＭＷ）オーバーヘッド及び消費電力を減少させる加重エビクション政策を提供する。なお、説明した実施例は、交替点数、有効性点数及びそれぞれの点数と関連したそれぞれの加重値を根拠にしてエビクション決定関数を提供する。
【００８３】
さらに、本開示の実施例は、ＺＮＡＤ混雑度、ＤＲＡＭ混雑度、書き込みバッファセットの公正性及びキャッシュラインのエビクション等に基づき、ＲＭＷの性能が最悪である場合を回避することを可能にする予め読み込み機能を提供する。
【００８４】
よって、説明した実施例は、エビクション決定関数を実行するハードウェア具現及び予め読み込み決定関数を実行するハードウェアメカニズムを提供する。
【符号の説明】
【００８５】
１００  ＺＤＩＭＭ
１１０  プロセッサ
１１２  書き込み要請
１１４、１１８  書き込み
１１５  読み込み
１２０  キャッシュメタデータ
１２２  ＤＲＡＭキャッシュコントローラ／ＤＲＡＭコントローラー
１３０  ＺＮＡＮＤ
１４０  書き込みバッファ（ＷＢ）
１６０  キャッシュコントローラー
１６２  ＭＳＨＲ
１７０    ＤＲＡＭキャッシュ／ＤＲＡＭ
１７２  トランザクションキュー
１８０  読み込み／書き込みキャッシュ（ＲＷＣ）
１９０  ホストコントローラー
【図１】
2018181336.tif 000003
【図２】
2018181336.tif 000004
【図３】
2018181336.tif 000005
【図４】
2018181336.tif 000006