(57)【要約】【課題】改善された性能を有するトランザクション基盤ハイブリッドメモリモジュールを提供する。【解決手段】ハイブリッドメモリモジュールはダイナミックランダムアクセスメモリ（ＤＲＡＭ）キャッシュ、フラッシュストレージ、及びメインコントローラを含む。前記ＤＲＡＭキャッシュは１つ以上のＤＲＡＭ装置とＤＲＡＭコントローラとを含み、前記フラッシュストレージは１つ以上のフラッシュ装置とフラッシュコントローラとを含む。前記メインコントローラは前記ＤＲＡＭコントローラ及び前記フラッシュコントローラとインターフェイシングする。【選択図】図１
2017045457.tif 000002
【特許請求の範囲】
【請求項１】
１つ以上のＤＲＡＭ装置とＤＲＡＭコントローラとを含むダイナミックランダムアクセスメモリ（ＤＲＡＭ）キャッシュと、
１つ以上のフラッシュ装置とフラッシュコントローラとを含むフラッシュストレージと、
前記ＤＲＡＭコントローラ及び前記フラッシュコントローラとインターフェイシングするメインコントローラと、
前記メインコントローラとホストメモリコントローラとを連結するように構成されたトランザクション基盤のメモリインターフェイスと、を含むことを特徴とするトランザクション基盤ハイブリッドメモリモジュール。
【請求項２】
前記メインコントローラは、臨時キャッシュデータを格納するように構成されたバッファと、キャッシュタッグを含むことを特徴とする請求項１に記載のトランザクション基盤ハイブリッドメモリモジュール。
【請求項３】
前記キャッシュタッグは、前記ホストメモリコントローラから受信されたメモリトランザクション要請がＤＲＡＭキャッシュをアクセスするための要請を含むか否かを示すことを特徴とする請求項２に記載のトランザクション基盤ハイブリッドメモリモジュール。
【請求項４】
前記メインコントローラは、前記ホストメモリコントローラから受信されたメモリトランザクション要請がリードヒット（ｒｅａｄ  ｈｉｔ）、リードミス、ライトヒット（ｗｒｉｔｅ  ｈｉｔ）、又はライトミスであるかを前記キャッシュタッグに基づいて決定することを特徴とする請求項３に記載のトランザクション基盤ハイブリッドメモリモジュール。
【請求項５】
前記メインコントローラは、前記フラッシュストレージのフラッシュページを前記ＤＲＡＭキャッシュの１つ以上のＤＲＡＭページに対してマッピングすることを特徴とする請求項１に記載のトランザクション基盤ハイブリッドメモリモジュール。
【請求項６】
前記トランザクション基盤のメモリインターフェイスは、前記ハイブリッドメモリモジュールのメモリアクセスレイテンシが決定されない場合に、前記ホストメモリコントローラがハイブリッドメモリモジュールをアクセスするようにすることを特徴とする請求項１に記載のトランザクション基盤ハイブリッドメモリモジュール。
【請求項７】
前記メインコントローラは、前記ホストメモリコントローラから受信されたメモリトランザクション要請が前記ＤＲＡＭキャッシュからのリード要請であるか、或いはＤＲＡＭキャッシュへのライト要請であるかをキャッシュタッグに基づいて決定し、前記ＤＲＡＭコントローラは、前記メモリトランザクション要請に応答して前記ＤＲＡＭキャッシュに対するメモリトランザクション及びコマンドスケジューリングを管理することを特徴とする請求項１に記載のトランザクション基盤ハイブリッドメモリモジュール。
【請求項８】
前記メインコントローラは、前記ホストメモリコントローラから受信されたメモリトランザクション要請が前記フラッシュストレージからのリード要請であるか、或いはフラッシュストレージへのライト要請であるかをキャッシュタッグに基づいて決定し、前記フラッシュコントローラは、前記メモリトランザクション要請に応答して前記フラッシュストレージに対するアドレス変換、ガーベッジコレクション（ｇａｒｂａｇｅ  ｃｏｌｌｅｃｔｉｏｎ）、ウェアレベリング（ｗｅａｒ  ｌｅｖｅｌｉｎｇ）、及びスケジューリングを管理することを特徴とする請求項１に記載のトランザクション基盤ハイブリッドメモリモジュール。
【請求項９】
ＤＲＡＭキャッシュとフラッシュストレージとを含むハイブリッドメモリモジュールを動作させる方法において、
ホストメモリコントローラからのメモリトランザクション要請を非同期的に受信し、
前記メモリトランザクション要請を前記ハイブリッドメモリモジュールのバッファ内に格納し、
前記ハイブリッドメモリモジュールのキャッシュタッグをチェックし、前記メモリトランザクション要請が前記ＤＲＡＭキャッシュ内に格納されたデータをアクセスするための要請を含んでいるか否かを決定し、
前記キャッシュタッグに基づいて前記メモリトランザクション要請を遂行することを含むことを特徴とするハイブリッドメモリモジュールを動作させる方法。
【請求項１０】
前記メモリトランザクション要請が前記ＤＲＡＭキャッシュからのリード要請であるか否かを前記キャッシュタッグに基づいて決定し、
前記メモリトランザクション要請に対応する前記ＤＲＡＭキャッシュからのＤＲＡＭデータを受信し、
前記ホストメモリコントローラへ前記ＤＲＡＭデータを提供することをさらに含むことを特徴とする請求項９に記載のハイブリッドメモリモジュールを動作させる方法。
【請求項１１】
前記メモリトランザクション要請と前記キャッシュタッグとを前記バッファに格納することをさらに含むことを特徴とする請求項９に記載のハイブリッドメモリモジュールを動作させる方法。
【請求項１２】
前記フラッシュストレージのフラッシュページを前記ＤＲＡＭキャッシュの１つ以上のＤＲＡＭページに対してマッピングすることをさらに含むことを特徴とする請求項９に記載のハイブリッドメモリモジュールを動作させる方法。
【請求項１３】
メモリトランザクション要請が前記ＤＲＡＭキャッシュからのリード要請であるか、或いはＤＲＡＭキャッシュへのライト要請であるかを前記キャッシュタッグに基づいて決定し、
前記メモリトランザクション要請に応答して前記ＤＲＡＭキャッシュに対するメモリトランザクション及びコマンドスケジューリングを管理することをさらに含むことを特徴とする請求項９に記載のハイブリッドメモリモジュールを動作させる方法。
【請求項１４】
メモリトランザクション要請が前記フラッシュストレージからのリード要請であるか、或いはフラッシュストレージへのライト要請であるかを前記キャッシュタッグに基づいて決定し、
前記メモリトランザクション要請に応答して前記フラッシュストレージに対するアドレス変換、ガーベッジコレクション、ウェアレベリング、及びスケジューリングを管理することをさらに含むことを特徴とする請求項９に記載のハイブリッドメモリモジュールを動作させる方法。
【請求項１５】
ＤＲＡＭキャッシュページがダーティであるか否か決定し、
ＤＲＡＭキャッシュページからダーティデータをリードし、
前記フラッシュストレージに前記ダーティデータをライトすることをさらに含むことを特徴とする請求項９に記載のハイブリッドメモリモジュールを動作させる方法。
【請求項１６】
前記ホストメモリコントローラから受信されたデータを前記ＤＲＡＭキャッシュにライトし、
前記ＤＲＡＭキャッシュをダーティとしてマーキングすることをさらに含むことを特徴とする請求項１５に記載のハイブリッドメモリモジュールを動作させる方法。
【請求項１７】
前記ＤＲＡＭキャッシュのＤＲＡＭキャッシュページのオープンを維持し、
前記オープンされたＤＲＡＭキャッシュページに対して一連のカラムアクセスを遂行することをさらに含むことを特徴とする請求項９に記載のハイブリッドメモリモジュールを動作させる方法。
【請求項１８】
前記フラッシュストレージ内に格納されたデータが前記ホストメモリコントローラによって頻繁に要請されるかを決定し、
前記ホストメモリコントローラによるデータ要請の頻繁度に基づいて前記フラッシュストレージ内に格納された前記データを前記ＤＲＡＭキャッシュにマッピングすることをさらに含むことを特徴とする請求項９に記載のハイブリッドメモリモジュールを動作させる方法。
【請求項１９】
前記ＤＲＡＭキャッシュ及びフラッシュストレージのアクセスレイテンシは非決定的であることを特徴とする請求項９に記載のハイブリッドメモリモジュールを動作させる方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はメモリモジュール及びそれを動作させる方法に係り、より詳しくは、トランザクション基盤のハイブリッドメモリモジュール及びそれを動作させる方法に関する。
【背景技術】
【０００２】
ソリッドステートドライブ（ＳＳＤ）はダイナミックランダムアクセスメモリ（ＤＲＡＭ）及びフラッシュメモリ（ｆｌａｓｈ  ｍｅｍｏｒｙ）等の非回転ストレージ媒体内にデータを格納する。ＤＲＡＭは速くて、低レイテンシ（ｌａｔｅｎｃｙ）及び反複的なリード／ライトサイクルに対して高耐久性（ｈｉｇｈ  ｅｎｄｕｒａｎｃｅ）を有する。フラッシュメモリは典型的に安く、リフレッシュを要求せず、電力の消耗は低い。これらの優位な特性によって、ＤＲＡＭは典型的に動作命令及び一時的データを格納するのに使用され、一方フラッシュメモリはアプリケーション及び使用者データを格納するのに使用される。
【０００３】
ＤＲＡＭ及びフラッシュメモリは多様なコンピューティング環境において共に使用される。例えば、データセンターは高容量、高性能、低電力、及び低費用メモリソリューションを要求する。データセンターに対する最近のメモリソリューションは主にＤＲＡＭに基づく。ＤＲＡＭは高性能を提供するが、フラッシュメモリはＤＲＡＭに比べて相対的に高密度であり、低電力消耗であり、さらに低廉である。
【０００４】
動作原理の差異点によって、別のメモリコントローラがＤＲＡＭとフラッシュメモリとを制御するのに使用される。例えば、ＤＲＡＭはバイト単位のアドレッシングであるのに比べて、フラッシュメモリはブロック単位のアドレッシングである。フラッシュメモリはウェアレベリング（ｗｅａｒ  ｌｅｖｅｌｉｎｇ）及びガーベッジコレクション（ｇａｒｂａｇｅ  ｃｏｌｌｅｃｔｉｏｎ）を要求する反面、ＤＲＡＭはリフレッシュを要求する。また、例えばＤＲＡＭ及びフラッシュメモリ、両方を含むハイブリッドメモリシステムはＤＲＡＭとフラッシュメモリとの間のデータ伝送のためのインターフェイスを要求する。さらに、ハイブリッドメモリシステムはＤＲＡＭとフラッシュメモリとの間のデータ伝送のためにマッピングテーブルを要求する。ＤＲＡＭとフラッシュメモリの間のアドレスマッピングテーブルはデータを格納し、伝送する時オーバーヘッド（ｏｖｅｒｈｅａｄ）をもたらす。結果的にハイブリッドメモリシステムの性能はオーバーヘッドによって低下する。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】米国特許第７，８５６，５３７号公報
【特許文献２】米国特許公開第２００７／０１３６５２３号明細書
【特許文献３】米国特許公開第２０１２／０１２４２９４号明細書
【特許文献４】米国特許公開第２０１０／０１１５１９１号明細書
【特許文献５】米国特許公開第２０１５／００９５５７８号明細書
【特許文献６】米国特許公開第２０１２／０１５９０８３号明細書
【特許文献７】米国特許公開第２０１３／０１３８８９２号明細書
【発明の概要】
【発明が解決しようとする課題】
【０００６】
本発明が解決しようとする技術的課題は、改善された性能を有するトランザクション基盤ハイブリッドメモリモジュールを提供することにある。
【課題を解決するための手段】
【０００７】
本発明の一実施形態によるハイブリッドメモリモジュールはダイナミックランダムアクセスメモリ（ＤＲＡＭ）キャッシュ、フラッシュストレージ、及びメモリコントローラを含む。前記ＤＲＡＭキャッシュは１つ以上のＤＲＡＭ装置とＤＲＡＭコントローラとを含み、前記フラッシュストレージは１つ以上のフラッシュメモリとフラッシュコントローラとを含む。メモリコントローラは前記ＤＲＡＭコントローラ及び前記フラッシュコントローラとインターフェイシングする。
【０００８】
一実施形態によるＤＲＡＭキャッシュとフラッシュストレージとを含むハイブリッドメモリモジュールを動作させる方法を開示する。前記方法は、ホストメモリコントローラからのメモリトランザクション要請を非同期的に受信し、前記メモリトランザクション要請を前記ハイブリッドメモリモジュールのバッファ内に格納し、前記ハイブリッドメモリモジュールのキャッシュタッグをチェックし、前記メモリトランザクション要請が前記ＤＲＡＭキャッシュ内に格納されたデータをアクセスするための要請を含んでいるか否かを決定し、そして前記キャッシュタッグに基づいて前記メモリトランザクション要請を遂行することを含む。
【０００９】
具現の多様な新規詳細及びイベントの組合を含む前記及び他の望ましい特徴は添付図面の参照により詳細に説明され、請求の範囲内において言及する。ここに説明する特別なシステム及び方法が制限されることではなく、図示の目的として示したことが理解される。本分野の熟練された者によって理解できることであって、ここに開示する原理及び特徴は本発明の開示の範囲を逸脱しなく、多様であり、数多い実施形態に適用される。
【発明の効果】
【００１０】
本発明のトランザクション基盤のハイブリッドメモリモジュールによれば、オーバーヘッドが減って性能が改善される。
【図面の簡単な説明】
【００１１】
【図１】本発明の一実施形態による例示的なハイブリッドメモリモジュールの構成を示す。
【図２】本発明の一実施形態によるリードヒット動作の例示的なフローチャートである。
【図３】本発明の一実施形態によるリードミス動作の例示的なフローチャートである。
【図４】本発明の一実施形態によるライトヒット動作の例示的なフローチャートである。
【図５】本発明の一実施形態によるライトミス動作の例示的なフローチャートである。
【００１２】
図面において、類似の構造又は機能の構成要素は全図面において類似な参照符号により図示する。図面は明細書に説明する多様な実施形態の説明を容易にするためのみに図示する。図面は本明細書に開示する教示のすべての側面を説明することではなく、請求項の範囲を制限しない。
【発明を実施するための形態】
【００１３】
本明細書に開示する特徴及び教示（ｔｅａｃｈｉｎｇ）は各々個別的に活用されるか、或いはトランザクション基盤のハイブリッドメモリモジュール及びその動作方法を提供するために他の特徴及び教示と共に活用される。このような追加の特徴及び教示を個別に或いは組合せ的に多く活用する代表的な例を、添付する図面を参照にさらに詳細に説明する。詳細な説明は単なる本分野の熟練した者に本教示の態様を実施するための追加的な詳細を教えるための意図のみであり、特許請求の範囲を限定しようとする意図ではない。したがって、詳細な説明において、開示する特徴の組合せは広い意味の教示を実施するのに必要としないこともあり得、その代わりに本教示の特に代表的な例を説明するだけのために示している。
【００１４】
以下において、説明の目的のみに、特定名称が本発明の完全な理解を提供するために説明する。しかし、このような特定細部事項は本発明の開示の教示を実施するのに要求されないことが当業者に明らかである。
【００１５】
詳細な説明の一部はアルゴリズム及びコンピュータメモリ内のデータビットに対する動作のシンボル表現の側面により提供する。これらのアルゴリズムの説明及び表現は効果的に他の当業者に作業の実体を伝達するためにデータ処理分野の当業者によって使用される。アルゴリズムは一般的に、望む結果に至る段階の自らの一貫性シークェンス（ｓｅｌｆ−ｃｏｎｓｉｓｔｅｎｔ  ｓｅｑｕｅｎｃｅ）であるとして案出される。前記段階は物理量の物理的操作が必要であるものである。一般的に、必須的でないが、これらの量は格納、伝達、結合、比較及び他の処理による電気又は磁気信号の形態を取る。この信号に対してビット、値、エレメント、シンボル、キャラクター、用語、数字等として指称することが主に共通的な使用の理由の下においてしばしば便利である。
【００１６】
しかし、これら及び類似な用語の全ては適切な物理量と連関され、単なるこのような量に適用される便利なラベルであることを留意しなければならない。特別に以下の説明において明確に記載されない限り、説明の全体を通じて“処理”、“コンピューティング”、“計算”、“決定”、“表示”等の用語を活用する論議は、コンピュータシステムや類似な電子コンピューティング装置の作用及び処理を指称するとして理解される。ここで、作用及び処理はコンピュータシステムのレジスター及びメモリ内における物理的（電子的）量として表れるデータを他のデータに操作及び変換することを意味する。前記他のデータは前記コンピュータシステムのメモリ又はレジスタ、他の情報ストレージ、又は伝送又は表示装置内における物理量として類似に現れるデータである。
【００１７】
本発明に提示するアルゴリズムは任意の特定コンピュータ又は他の装置に本質的に関連されない。多様な汎用システム、コンピュータサーバー、又は個人用コンピュータは本明細書の教示にしたがうプログラムと共に使用できる。又は要求された方法段階を遂行するためにさらに特別化された装置を構成することが便利であり得る。このような多様なシステムに必要である構造は以下の説明に示す。多様なプログラミング言語がここに開示されたような発明の教示を具現するのに使用されることが理解されるべきである。
【００１８】
また、代表的な実施形態の多様な特徴と従属請求項は本教示の追加的な有用な実施形態を提供するために列挙されない方式に結合できる。また、エンティティーグループのすべての値の範囲又は表示（ｉｎｄｉｃａｔｉｏｎｓ）は元の開示の目的のためはもちろん、請求された発明の思想を特定する意図としてすべての可能である中間値又は中間個体（エンティティー）を開示することが明示的に言及される。そして、図面内に示す構成要素の次元及び形状は本発明の教示がどのようにして実施されるかに対する理解を助けるために設定するだけであり、実施形態に示した次元及び形状に限定されないことがまた特別に言及される。
【００１９】
本発明は揮発性メモリ（例えば、ＤＲＡＭ）及び不揮発性メモリ（例えば、フラッシュメモリ）を含むトランザクション基盤のハイブリッドメモリモジュール及びその動作方法を提供する。一実施形態において、トランザクション基盤のハイブリッドメモリモジュールはＤＲＡＭキャッシュとフラッシュストレージとを含む。これと関連して、ハイブリッドメモリモジュールは、本明細書においてＤＲＡＭ−フラッシュ或いはＤＲＡＭ−フラッシュメモリモジュールと称される。ＤＲＡＭキャッシュは前端（ｆｒｏｎｔ−ｅｎｄ）メモリキャッシュとして使用され、フラッシュストレージは後端（ｂａｃｋ−ｅｎｄ）ストレージとして使用される。ホストメモリコントローラは前記ハイブリッドメモリモジュールに対してトランザクション基盤のメモリインターフェイス（ｔｒａｎｓａｃｔｉｏｎ−ｂａｓｅｄ  ｍｅｍｏｒｙ  ｉｎｔｅｒｆａｃｅ）を有する。ホストコンピュータ（又はホストコンピューターのＣＰＵ）からのメモリアクセス要請（ｒｅｑｕｅｓｔｓ）はトランザクションに基づいて非同期的に処理される。メモリアクセス要請はバッファ内に格納され、１回に１つずつ処理される。ＤＲＡＭキャッシュ及びフラッシュストレージの全ては同一のメモリモジュール上に常駐（ｒｅｓｉｄｅ）し、単一メモリアドレス空間（ｓｉｎｇｌｅ  ｍｅｍｏｒｙ  ａｄｄｒｅｓｓ  ｓｐａｃｅ）内において動作する。本発明によるトランザクション基盤のハイブリッドメモリモジュールはフラッシュのようなメモリ容量、パワー、コスト、及びＤＲＡＭのような性能（ｐｅｒｆｏｒｍａｎｃｅ）を提供できる。
【００２０】
ハイブリッドメモリモジュールはダイナミックランダムアクセスメモリ（ＤＲＡＭ）キャッシュ、フラッシュストレージ、及びメモリコントローラを含む。前記ＤＲＡＭキャッシュは１つ以上のＤＲＡＭ装置とＤＲＡＭコントローラとを含み、前記フラッシュストレージは１つ以上のフラッシュメモリとフラッシュコントローラとを含む。前記メモリコントローラは前記ＤＲＡＭコントローラ及び前記フラッシュコントローラとインターフェイシングする。前記メモリコントローラはバッファ及びキャッシュタッグを含む。トランザクション基盤のメモリインターフェイスは前記メモリコントローラとホストメモリコントローラとを連結するように構成される。前記メモリコントローラの前記バッファは前記ホストメモリコントローラから受信されたメモリトランザクション要請を格納し、前記キャッシュタッグは、前記ホストメモリコントローラから受信されたメモリトランザクション要請がＤＲＡＭキャッシュをアクセスするための要請を含むか否かを示す。
【００２１】
図１は本発明の一実施形態による例示的なハイブリッドメモリモジュールの構成を示す。ハイブリッドメモリモジュール１００はＤＲＡＭ装置１３１を含む前端（ｆｒｏｎｔ−ｅｎｄ）メモリキャッシュとしてのＤＲＡＭキャッシュ１１０、フラッシュ装置１４１を含む後端（ｂａｃｋ−ｅｎｄ）ストレージとしてのフラッシュストレージ１２０、及びメインコントローラ１５０を含む。メインコントローラ１５０はＤＲＡＭキャッシュ１１０のＤＲＡＭコントローラ１３０及びフラッシュストレージ１２０のフラッシュコントローラ１４０とインターフェイシングする。ハイブリッドメモリモジュール１００はトランザクション基盤（例えば、非同期）のメモリインターフェイス１５５を経由してホストメモリコントローラ１６０とインターフェイシングする。同期メモリインターフェイスとは異なり、本発明のトランザクション基盤のメモリインターフェイスは設計柔軟性のためにハイブリッドメモリモジュール１００をホストメモリコントローラ１６０から分離させる。トランザクション基盤のメモリインターフェイス１５５は連結されたハイブリッドメモリモジュール１００のメモリアクセスレイテンシが非決定的（ｎｏｎ−ｄｅｔｅｒｍｉｎｉｓｔｉｃ）である場合に使用される。
【００２２】
メインコントローラ１５０はキャッシュタッグ１５１及び前記キャッシュの臨時格納のためのバッファ１５２を含む。メインコントローラ１５０はキャッシュ管理及びフロー制御（ｃａｃｈｅ  ｍａｎａｇｅｍｅｎｔ  ａｎｄ  ｆｌｏｗ  ｃｏｎｔｒｏｌ）を担当する。ＤＲＡＭコントローラ１３０はＤＲＡＭ装置１３１のメモリコントローラとして動作し、メモリトランザクション及びコマンドスケジューリングはもちろん、メモリリフレッシュ等のＤＲＡＭ維持活動を管理する。フラッシュコントローラ１４０はフラッシュ装置１４１のＳＳＤコントローラとして動作し、アドレス変換（ａｄｄｒｅｓｓ  ｔｒａｎｓｌａｔｉｏｎ）、ガーベッジコレクション（ｇａｒｂａｇｅ  ｃｏｌｌｅｃｔｉｏｎ）、ウェアレベリング（ｗｅａｒ  ｌｅｖｅｌｉｎｇ）、及びスケジューリング（ｓｃｈｅｄｕｌｉｎｇ）を管理する。
【００２３】
ホストメモリコントローラ１６０とハイブリッドメモリモジュール１００間のメモリトランザクション及びメモリインターフェイス１５５の、関連した動作フローを参照して、４つの使用の場合を説明する。フラッシュメモリ対するリード／ライトグラニュラリティ（ｇｒａｎｕｌａｒｉｔｙ）はフラッシュ製品に対応して変わり、例えば４ＫＢである。行バッファ（又はページ）の大きさもフラッシュ製品に対応して変わり、例えば、２ＫＢである。以下の例示において、ＤＲＡＭキャッシュ１１０及びフラッシュストレージ１２０のアクセスグラニュラリティ（ａｃｃｅｓｓ  ｇｒａｎｕｌａｒｉｔｙ）は各々６４Ｂ及び４ＫＢであると仮定し、メモリコントローラのリード／ライト要請の大きさは６４Ｂであると仮定する。しかし、これらは例示的な大きさに過ぎず、ＤＲＡＭキャッシュ１１０及びフラッシュストレージ１２０のアクセスグラニュラリティの他の大きさ及びメモリコントローラのリード／ライト要請の大きさが本発明の技術的思想の範囲を逸脱しなくて使用されると理解するべきである。
【００２４】
図２は本発明の一実施形態によるリードヒット（ｒｅａｄ  ｈｉｔ）動作の例示的なフローチャートである。段階２０１においてトランザクション基盤のメモリインターフェイス１５５を通じてホストメモリコントローラ１６０からの要請が受信される時、メインコントローラ１５０は段階２０２においてキャッシュタッグ１５１をチェックする。ホストメモリコントローラ１６０から受信された要請はバッファ１５２内に格納される。また、バッファ１５２はＤＲＡＭキャッシュ１１０とフラッシュストレージ１２０との間及びメインコントローラ１５０とホストメモリコントローラ１６０との間のデータ伝送に対する一時的データを格納する。キャッシュタッグ１５１は前記要請がＤＲＡＭキャッシュ１１０に対する及びＤＲＡＭキャッシュ１１０からのメモリトランザクションを含むか否かを示す。
【００２５】
バッファ１５２内にペンディング要請がある時、メインコントローラ１５０は前記要請と関連されたメモリアドレス或いはメモリアドレスの範囲を決定するために前記要請をデコーディングする。メインコントローラ１５０は格納されたデータと関連された所定のデータ（例えば、頻繁に使用されるデータ）をＤＲＡＭキャッシュ内に格納し、キャッシュタッグ１５１を前記格納されたデータと関連されたメモリアドレスを示すために設定（ｓｅｔ）する。キャッシュタッグ１５１は前記メモリアドレスからデコーディングされ、要請されたデータが前記キャッシュ内にあるか否かを決定するのに使用される。キャッシュは多重キャッシュラインを含む。各キャッシュラインは自分の固有なインデックス及びタッグを有する。メモリ要請が入る時、メインコントローラ１５０のデコーダ（図示せず）は前記インデックス及び前記メモリアドレスと関連された前記キャッシュタッグを決定する。前記インデックス及びキャッシュタッグに基づいて、メインコントローラ１５０のキャッシュコントローラ（図示せず）はいずれのキャッシュラインが同一のインデックス及びキャッシュタッグを有するかを決定する。マッチ（ｍａｔｃｈ）すれば、これはキャッシュヒット（ｃａｃｈｅ  ｈｉｔ）とされる。マッチしなければ、これはキャッシュミス（ｃａｃｈｅ  ｍｉｓｓ）とされる。メインコントローラ１５０がキャッシュタッグ１５１を参照して、前記要請がリードコマンドを含むか否かを決定し、ＤＲＡＭキャッシュ１１０が前記リードアドレスと関連された前記データを含むことを決定する場合に、即ち、段階２０３においてリードヒットとされれば、メインコントローラ１５０はＤＲＡＭコントローラ１３０がＤＲＡＭキャッシュ１１０をアクセスすることを命令する。ＤＲＡＭコントローラ１３０は段階２０４においてＤＲＡＭキャッシュ１１０をアクセスし、段階２０５においてＤＲＡＭキャッシュ１１０から６４Ｂデータを受信する。ＤＲＡＭコントローラ１３０は段階２０６において前記６４Ｂデータをメインコントローラ１５０にリターン（ｒｅｔｕｒｎ）する。メインコントローラ１５０は段階２０７においてリンクバスを通じて前記６４Ｂデータをホストメモリコントローラ１６０へ送る。ＤＲＡＭキャッシュ１１０からリターンされるデータのタイミングは非決定的（ｎｏｎ−ｄｅｔｅｒｍｉｎｉｓｔｉｃ）である。なぜならば、ホストメモリコントローラ１６０とハイブリッドメモリモジュール１００との間のメモリインターフェイス１５５がトランザクション基盤であるためである。ＤＲＡＭキャッシュ１１０及びフラッシュストレージ１２０からリターンされるデータのディレイ（ｄｅｌａｙ）は異なってもよく、これについては以下においてさらに詳細に説明する。
【００２６】
図３は本発明の一実施形態によるリードミス動作の例示的なフローチャートである。キャッシュタッグ１５１が、ホストメモリコントローラ１６０からの要請が前記ＤＲＡＭキャッシュ内には格納されていないリードメモリトランザクションを含むことを示す時、データはフラッシュストレージ１２０から獲得される。即ち、図２内の段階２１１のようにリードミスとされる場合に、メインコントローラ１５０はデータがフラッシュストレージ１２０内に格納されているか否かを決定し、フラッシュコントローラ１４０がフラッシュストレージ１２０に対する対応メモリアドレスからデータをリードするように命令する。フラッシュコントローラ１４０は段階２１２においてフラッシュストレージ１２０をアクセスして、段階２１３においてフラッシュストレージ１２０から４ＫＢデータ（フラッシュストレージ１２０のアクセスグラニュラリティ）を受信する。フラッシュコントローラ１４０は段階２１４において前記４ＫＢデータをメインコントローラ１５０にリターンする。メインコントローラ１５０は段階２１５において、受信された４ＫＢデータに関連された６４Ｂ（ＤＲＡＭキャッシュ１１０のアクセスグラニュラリティ）を選択し、選択された６４Ｂを前記リンクバスを通じてホストメモリコントローラ１６０へ送る。
【００２７】
メインコントローラ１５０はまた立退き（ｅｖｉｃｔ）のためにＤＲＡＭキャッシュページ（４ＫＢ）を探す。段階２１６において、前記４ＫＢデータに対応するＤＲＡＭキャッシュページがクリーン（ｃｌｅａｎ）であれば、メインコントローラ１５０は前記４ＫＢデータをＤＲＡＭコントローラ１３０にライトし、続いてＤＲＡＭコントローラ１３０は前記４ＫＢデータをＤＲＡＭキャッシュ１１０にライトする（段階２１７）。ＤＲＡＭキャッシュ１１０はフラッシュストレージ１２０内に格納された４ＫＢデータに更新（ｕｐｄａｔｅ）する。キャッシュ内の多重キャッシュラインは各々インデックス（ｉｎｄｅｘ）、タッグ（ｔａｇ）、及びダーティビット（ｄｉｒｔｙ  ｂｉｔ）を有する。メインコントローラ１５０は前記ダーティビットを参照してキャッシュラインのダーティ程度（ｄｉｒｔｉｎｅｓｓ）を決定する。初期において、すべてのダーティビットは０に設定される。ここで、０はキャッシュラインがクリーン（ｃｌｅａｎ）であることを意味する。キャッシュ内のデータはフラッシュストレージ１２０内のデータのサブセット（ｓｕｂｓｅｔ）である。クリーンは同一アドレスに対してキャッシュ内のデータとフラッシュストレージ１２０内のデータとが同一であることを意味する。逆に、ダーティは同一アドレスに対してキャッシュ内のデータがフラッシュストレージ１２０内のデータから更新されたことを意味する。したがって、フラッシュストレージ１２０内のデータは陳腐（ｓｔａｌｅ）であることを示す。ダーティキャッシュラインが立退きであれば、フラッシュストレージ１２０内の対応するデータは更新されなければならない。クリーンキャッシュラインが立ち退かれる場合に更新は必要としない。
【００２８】
ＤＲＡＭキャッシュ１１０が段階２１６においてダーティであれば、メインコントローラ１５０はＤＲＡＭコントローラ１３０がＤＲＡＭキャッシュ１１０から４ＫＢダーティデータをリードするように命令する。ＤＲＡＭコントローラ１３０は段階２１８においてＤＲＡＭキャッシュ１１０から４ＫＢダーティデータをアクセスして受信する。ＤＲＡＭコントローラ１３０は４ＫＢダーティデータをメインコントローラ１５０にリターンし、メインコントローラ１５０はフラッシュコントローラ１４０が４ＫＢダーティデータをフラッシュストレージ１２０にライトバックするように命令する（段階２１９）。メインコントローラ１５０は新しい４ＫＢデータをＤＲＡＭコントローラ１３０にライトし、ＤＲＡＭコントローラ１３０は前記新しい４ＫＢデータをＤＲＡＭキャッシュ１１０にライトする（段階２２０）。ＤＲＡＭキャッシュ１１０はフラッシュストレージ１２０内に格納された新しい４ＫＢデータにより更新される。
【００２９】
次に、ライトヒット（ｗｒｉｔｅ  ｈｉｔ）及びライトミス動作を図１のハイブリッドメモリモジュール１００の構造を参照に説明する。図４及び図５を参照して説明する例示的なフローチャートはライトスルーキャッシュ方策（ｗｒｉｔｅ−ｔｈｒｏｕｇｈ  ｃａｃｈｅ  ｐｏｌｉｃｙ）を採用している。しかし、本発明は本発明の技術的思想を逸脱しない範囲内において他のキャッシュ方策を採用できることを理解するべきである。ライトスルーキャッシュ方策において、ライト要請は前端ストレージとしてのＤＲＡＭキャッシュ１１０及び後端フラッシュとしてのフラッシュストレージ１２０の全てに対して同期的に処理される。図４は本発明の一実施形態によるライトヒット動作の例示的なフローチャートである。段階３０１においてホストメモリコントローラ１６０からの要請がトランザクション基盤のメモリインターフェイス１５５を通じて受信されれば、メインコントローラ１５０は段階３０２においてキャッシュタッグ１５１をチェックして、ホストメモリコントローラ１６０から受信された前記要請がＤＲＡＭキャッシュ１１０に対するライトコマンドを含むか否かを決定する（段階３０３）。即ち、段階３０３においてはライトヒットとして示している。ライトヒットの場合に、メモリトランザクションは以下のシークェンスを発生する。メインコントローラ１５０は段階３０４において、ホストメモリコントローラ１６０から受信された６４ＢデータをＤＲＡＭコントローラ１３０にライトする。ＤＲＡＭコントローラ１３０は６４Ｂデータを段階３０５においてＤＲＡＭキャッシュ１１０にライトする。メインコントローラ１５０は前記キャッシュページをダーティとしてマークし、ＤＲＡＭキャッシュ１１０内のデータは段階３０６において更新される。ダーティとしてマークされた前記キャッシュページは前記キャッシュページに対する連続的なリードミスが図３の段階２１８乃至２２０におけるように生じる場合に立ち退かれる。
【００３０】
図５は本発明の一実施形態によるライトミス動作の例示的なフローチャートである。メインコントローラ１５０はホストメモリコントローラ１６０から受信された前記要請がフラッシュストレージ１２０に対するライトコマンドを含むか否かを決定するために段階３１１において、キャッシュタッグ１５１をチェックする。ここではライトミスとして示している。ライトミスの場合に、メモリトランザクションは次のようなシークェンスを発生する。先ず、メインコントローラ１５０はＤＲＡＭキャッシュページがクリーン或いはダーティであるかを段階３１２において決定する。ＤＲＡＭキャッシュページがダーティであれば、メインコントローラ１５０はＤＲＡＭコントローラ１３０が４ＫＢダーティデータをＤＲＡＭキャッシュ１１０からリードするように命令する。段階３１３において、ＤＲＡＭコントローラ１３０はＤＲＡＭキャッシュ１１０から４ＫＢダーティデータをアクセスしてリードし、４ＫＢダーティデータをメインコントローラ１５０へリターンする。メインコントローラ１５０は４ＫＢダーティデータをフラッシュコントローラ１４０にライトバックし、フラッシュコントローラ１４０は４ＫＢダーティデータをフラッシュストレージ１２０にライトする（段階３１４）。
【００３１】
メインコントローラ１５０がＤＲＡＭキャッシュページがクリーンになったか（段階３１２）、又はダーティデータがフラッシュストレージにライトされた後であるか（段階３１４）を決定した場合に、メインコントローラ１５０はホストメモリコントローラ１６０から受信されたデータを前記キャッシュページ内に更新する準備をする。メインコントローラ１５０はホストメモリコントローラ１６０から受信された６４ＢデータをＤＲＡＭコントローラ１３０にライトする（段階３１５）。ＤＲＡＭコントローラ１３０は前記６４ＢデータをＤＲＡＭキャッシュ１１０にライトする（段階３１６）。メインコントローラ１５０は段階３１７においてキャッシュページをダーティとしてマークする。
【００３２】
幾つかの実施形態において、メインコントローラ１５０は本発明の技術的思想を逸脱しない範囲内で多様なキャッシュ方策を採用できる。一実施形態において、メインコントローラ１５０はライトバックキャッシュ方策を採用する。メインコントローラ１５０がライトバックキャッシュ方策を採用する場合にメインコントローラ１５０はＤＲＡＭキャッシュ１１０に初期にライトを行い、データを含むキャッシュブロックが新しいデータに変更されるか、或いは置き換える時までフラッシュストレージ１２０へのライトを延期する。データが新しいデータによりライトされた場合にアドレスを追跡するために、メインコントローラ１５０はオーバーライトされたアドレスを“ダーティ”としてマーク（表示）する。新しいデータは、データがＤＲＡＭキャッシュ１１０から立ち退かれた時、フラッシュストレージ１２０にライトされる。
【００３３】
他の実施形態において、メインコントローラ１５０はライトアラウンドキャッシュ方策（ｗｒｉｔｅ−ａｒｏｕｎｄ  ｃａｃｈｅ  ｐｏｌｉｃｙ）を採用する。前記ライトアラウンドキャッシュ方策は前記ライトスルーキャッシュ方策と類似であるが、データがＤＲＡＭキャッシュ１１０をバイパスしてフラッシュストレージ１２０に直接的にライトされる。これはライト要請（後続的に再リードされる）で溢れるキャッシュを減らす。
【００３４】
さらに良い性能と速い応答を得るために、本発明のハイブリッドメモリモジュール１００はフラッシュページをＤＲＡＭページにマッピングする。ＤＲＡＭキャッシュ１１０とフラッシュストレージ１２０１との間のページマッピングは本発明のハイブリッドメモリモジュール１００がオープンページ方策を採用できるようにする。前記オープンページ方策はＤＲＡＭキャッシュ１１０内のページをアクセルする時に、メモリアクセスをより速くする。例えば、ＤＲＡＭキャッシュ１１０からデータをリードする時或いはＤＲＡＭキャッシュ１１０にデータをライト時に、本発明のハイブリッドメモリモジュール１００は単なる１つのＤＲＡＭ行活性化を必要とし、ＤＲＡＭ行バッファをオープンに置くので、オープンページ方策の長所を採択してカラムアクセスのシークェンスを発行する。ＤＲＡＭメモリに対して、オープンページ方策を使用する時、アクセスのシークェンスが同一の行において生じる場合（ここでは行バッファヒットとして示す）に、本発明のトランザクション基盤ハイブリッドメモリモジュール１００は行のクロージング（閉鎖）及びリオープン（再開）に対するオーバーヘッドを避ける。したがって、さらに良い且つ速い性能が得られる。
【００３５】
ＤＲＡＭメモリ及びフラッシュストレージの両方を含む本発明のハイブリッドメモリ構造において、ＤＲＡＭメモリはフラッシュストレージのキャッシュとして機能する。さらに頻繁にアクセスされるデータはフラッシュストレージ１２０からＤＲＡＭキャッシュ１１０に移動され、頻繁ではなくアクセスされるデータはＤＲＡＭキャッシュ１１０からフラッシュストレージ１２０に移動される。ＤＲＡＭキャッシュ１１０とフラッシュストレージ１２０との間のデータの頻繁な移動はコスト（費用）が掛かる。コストを最小化するために本発明のハイブリッドメモリはフラッシュページをＤＲＡＭページにマッピングしてオープンページ方策を採用する。例えば、４ＫＢのフラッシュページは２つの、２ＫＢのＤＲＡＭページにマッピングされる。
【００３６】
一実施形態による本発明のハイブリッドメモリモジュール１００はチェックポインティング（ｃｈｅｃｋｐｏｉｎｔｉｎｇ）を支援する。チェックポイントが生じる時毎に（例えば、ＤＲＡＭロケーションからフラッシュロケーションにデータをコピー）、メインコントローラ１５０はＤＲＡＭキャッシュ１１０からフラッシュストレージ１２０へのデータライトバックを遂行する。
【００３７】
一実施形態によれば本発明のハイブリッドメモリモジュール１００はプリフェッチング（ｐｒｅｆｅｔｃｈｉｎｇ）を支援する。メインコントローラ１５０は性能を改善するために多重フラッシュページをフェッチする。前記多重フラッシュページは予め、ＤＲＡＭキャッシュ１１０の特別なページと密接に関連されているページである。
【００３８】
本発明の一実施形態によれば、ハイブリッドメモリモジュール１００は、１つ以上のＤＲＡＭ装置とＤＲＡＭコントローラとを含むダイナミックランダムアクセスメモリ（ＤＲＡＭ）キャッシュ１１０、１つ以上のフラッシュ装置１４１とフラッシュコントローラ１４０とを含むフラッシュストレージ１２０、ＤＲＡＭコントローラ１３０及びフラッシュコントローラ１４０とインターフェイシングするメインコントローラ１５０、及びメインコントローラ１５０とホストメモリコントローラ１６０とを連結するように構成されたトランザクション基盤のメモリインターフェイス１５５を含む。
【００３９】
メインコントローラ１５０は臨時キャッシュデータを格納するように構成されたバッファ１５２と、キャッシュタッグ１５１を含む。キャッシュタッグ１５１はホストメモリコントローラ１６０から受信されたメモリトランザクション要請がＤＲＡＭキャッシュ１１０をアクセスするための要請を含むか否かを示す。
【００４０】
メインコントローラ１５０はホストメモリコントローラ１６０から受信されたメモリトランザクション要請がリードヒット、リードミス、ライトヒット、又はライトミスであるかをキャッシュタッグ１５１に基づいて決定する。
【００４１】
メインコントローラ１５０はフラッシュストレージ１２０のフラッシュページをＤＲＡＭキャッシュ１１０の１つ以上のＤＲＡＭページに対してマッピングする。
【００４２】
トランザクション基盤のインターフェイス１５５はハイブリッドメモリモジュール１００のメモリアクセスレイテンシが決定されない場合に、ホストメモリコントローラ１６０がハイブリッドメモリモジュール１００をアクセスするようにする。
【００４３】
メインコントローラ１５０は、ホストメモリコントローラ１６０から受信されたメモリトランザクション要請がＤＲＡＭキャッシュ１１０からのリード要請であるか、或いはＤＲＡＭキャッシュ１１０へのライト要請であるかをキャッシュタッグ１５１に基づいて決定し、ＤＲＡＭコントローラ１３０は前記メモリトランザクション要請に応答してＤＲＡＭキャッシュ１１０に対するメモリトランザクション及びコマンドスケジューリングを管理する。
【００４４】
メインコントローラ１５０は、ホストメモリコントローラ１６０から受信されたメモリトランザクション要請がフラッシュストレージ１２０からのリード要請であるか、或いはフラッシュストレージ１２０へのライト要請であるかをキャッシュタッグ１５１に基づいて決定し、フラッシュコントローラ１４０は前記メモリトランザクション要請に応答してフラッシュストレージ１２０に対するアドレス変換、ガーベッジコレクション、ウェアレベリング、及びスケジューリングを管理する。
【００４５】
一実施形態によれば、ＤＲＡＭキャッシュ１１０とフラッシュストレージ１２０とを含むハイブリッドメモリモジュール１００を動作させる方法は、ホストメモリコントローラ１６０からのメモリトランザクション要請を非同期的に受信し、前記メモリトランザクション要請をハイブリッドメモリモジュール１００のバッファ１５２内に格納し、ハイブリッドメモリモジュール１００のキャッシュタッグ１５１をチェックして前記メモリトランザクション要請がＤＲＡＭキャッシュ１１０内に格納されたデータをアクセスするための要請を含んでいるか否かを決定し、そしてキャッシュタッグ１５１に基づいて前記メモリトランザクション要請を遂行することを含む。
【００４６】
前記方法は、前記メモリトランザクション要請がＤＲＡＭキャッシュ１１０からのリード要請であるか否かをキャッシュタッグ１５１に基づいて決定し、前記メモリトランザクション要請に対応するＤＲＡＭキャッシュ１１０からのＤＲＡＭデータを受信し、そしてホストメモリコントローラ１６０へ前記ＤＲＡＭデータを提供することをさらに含む。
【００４７】
前記方法は前記メモリトランザクション要請とキャッシュタッグ１５１とをバッファ１５２に格納することをさらに含む。
【００４８】
前記方法はフラッシュストレージ１２０のフラッシュページをＤＲＡＭキャッシュ１１０の１つ以上のＤＲＡＭページに対してマッピングすることをさらに含む。
【００４９】
前記方法は前記メモリトランザクション要請がＤＲＡＭキャッシュ１１０からのリード要請であるか、或いはＤＲＡＭキャッシュ１１０へのライト要請であるかをキャッシュタッグ１５１に基づいて決定し、前記メモリトランザクション要請に応答してＤＲＡＭキャッシュ１１０に対するメモリトランザクション及びコマンドスケジューリングを管理することをさらに含む。
【００５０】
前記方法は、メモリトランザクション要請がフラッシュストレージ１２０からのリード要請であるか、或いはフラッシュストレージ１２０へのライト要請であるかをキャッシュタッグ１５１に基づいて決定し、前記メモリトランザクション要請に応答してフラッシュストレージ１２０に対するアドレス変換、ガーベッジコレクション、ウェアレベリング、及びスケジューリングを管理することをさらに含む。
【００５１】
前記方法はＤＲＡＭキャッシュページがダーティであるか否かを決定し、ＤＲＡＭキャッシュページからダーティデータをリードし、前記フラッシュストレージ１２０に前記ダーティデータをライトすることをさらに含む。
【００５２】
前記方法は、ホストメモリコントローラ１６０から受信されたデータをＤＲＡＭキャッシュ１１０にライトし、ＤＲＡＭキャッシュ１１０をダーティとしてマーキングすることをさらに含む。
【００５３】
前記方法は、ＤＲＡＭキャッシュ１１０のＤＲＡＭキャッシュページのオープンを維持し、前記オープンされたＤＲＡＭキャッシュページに対して一連のカラムアクセスを遂行することをさらに含む。
【００５４】
前記方法は、フラッシュストレージ１２０内に格納されたデータがホストメモリコントローラ１６０によって頻繁に要請されるか否かを決定し、ホストメモリコントローラ１６０によるデータ要請の頻繁度に基づいてフラッシュストレージ１２０内に格納された前記データをＤＲＡＭキャッシュ１１０にマッピングすることをさらに含む。
【００５５】
前記方法は、ＤＲＡＭキャッシュ１１０及びフラッシュストレージ１２０のアクセスレイテンシは非決定的である。
【００５６】
上記した例示的な実施形態は、コプロセッサと入出力装置をメインコントローラを経由してインターフェイシングするシステム及び方法を具現する多様な実施形態を説明するために上述したように開示した。開示した例示的な実施形態から多様な変更及び出発が本分野の通常の知識を有する者において生じることができる。本発明の範囲以内に意図される技術的思想は以下の請求項において言及される。
【符号の説明】
【００５７】
１００  ハイブリッドメモリモジュール
１１０  ＤＲＡＭキャッシュ
１２０  フラッシュストレージ
１３０  ＤＲＡＭコントローラ
１３１  ＤＲＡＭ装置
１４０  フラッシュコントローラ
１４１  フラッシュ装置
１５０  メインコントローラ
１５１  キャッシュタッグ
１５２  バッファ
１５５  メモリインターフェイス
１６０  ホストメモリコントローラ
【図１】
2017045457.tif 000003
【図２】
2017045457.tif 000004
【図３】
2017045457.tif 000005
【図４】
2017045457.tif 000006
【図５】
2017045457.tif 000007