(57)【特許請求の範囲】
【請求項１】
プロセッサ、Cacheおよびハイブリッドメモリを含むコンピュータシステム内で適用するデータキャッシング方法であって、前記方法は前記Cacheによって実行され、且つ、
前記プロセッサによって送信されるデータアクセス要求を受信するステップであって、前記データアクセス要求はアクセスアドレスを含む、ステップと、
前記アクセスアドレスに従って、アクセスされるべきデータが前記Cache内にキャッシュされているかどうかを決定するステップと、
前記アクセスされるべきデータが前記Cache内にキャッシュされていないとき、前記Cache内のCache lineの過去のアクセス頻度および前記Cache lineに対応するメモリのタイプに従って、第1の事前に設定された条件を満たすCache lineが前記Cache内に存在するかどうかを決定するステップであって、前記第1の事前に設定された条件を満たす前記Cache lineはその過去のアクセス頻度が事前に設定された頻度よりも低く、且つ、ダイナミック・ランダム・アクセス・メモリ（DRAM）タイプのメモリに対応しているCache lineを含み、前記ハイブリッドメモリは前記DRAMタイプの前記メモリおよび不揮発性メモリ（NVM）タイプのメモリを含む、ステップと、
前記第1の事前に設定された条件を満たす前記Cache lineが前記Cache内に存在するとき、前記第1の事前に設定された条件を満たす前記Cache lineから置き換えられるべき第1のCache lineを選択するステップと、
前記アクセスアドレスに従って、前記ハイブリッドメモリから前記アクセスされるべきデータを読み出すステップと、
前記第1のCache lineを第2のCache lineで置き換えるステップであって、前記第2のCache lineは前記アクセスアドレスおよび前記アクセスされるべきデータを含む、ステップと、
前記アクセスされるべきデータを前記プロセッサに送信するステップと
を含む、方法。
【請求項２】
第1の事前に設定された条件を満たすCache lineが前記Cache内に存在するかどうかを決定する前記ステップは、
前記DRAMタイプの前記メモリに対応するCache lineが前記Cacheの最近最も使用されていない（LRU）リンクリスト内の最初のM個のCache line内に存在するかどうかを決定するステップであって、前記LRUリンクリスト内の前記最初のM個のCache lineが、その過去のアクセス頻度が前記事前に設定された頻度よりも低いCache lineである、ステップを含み、
前記第1の事前に設定された条件を満たす前記Cache lineが前記Cache内に存在するとき、前記第1の事前に設定された条件を満たす前記Cache lineから置き換えられるべき第1のCache lineを選択する前記ステップは、
前記DRAMタイプの前記メモリに対応する前記Cache lineが前記LRUリンクリスト内の前記最初のM個のCache line内に存在するとき、前記第1のCache lineとして、前記DRAMタイプの前記メモリに対応しているとともに前記最初のM個のCache line内にある決定されたCache lineを選択するステップを含む、請求項1に記載の方法。
【請求項３】
前記DRAMタイプの前記メモリに対応するCache lineが前記Cacheの前記LRUリンクリスト内の最初のM個のCache line内に存在するかどうかを決定する前記ステップは、
前記Cache内のCache lineの位置フラグビットに従って、前記DRAMタイプの前記メモリに対応するCache lineが前記Cacheの前記LRUリンクリスト内の最初のM個のCache line内に存在するかどうかを決定するステップであって、前記Cache lineの前記位置フラグビットは、前記Cache lineに対応するメモリのタイプがDRAMタイプまたはNVMタイプであることを示すように構成される、ステップ
を含む、請求項2に記載の方法。
【請求項４】
前記第1の事前に設定された条件を満たすCache lineが前記Cache内に存在しないとき、第2の事前に設定された条件を満たすCache lineが前記Cache内に存在するかどうかを決定するステップであって、前記第2の事前に設定された条件を満たす前記Cache lineは、その過去のアクセス頻度が前記事前に設定された頻度よりも低く、且つ、前記NVMタイプの前記メモリに対応している変更されていないCache lineを含む、ステップと、
前記第2の事前に設定された条件を満たす前記Cache lineが前記Cache内に存在するとき、前記第2の事前に設定された条件を満たす前記Cache lineから前記置き換えられるべき第1のCache lineを選択するステップと
をさらに含む、請求項1乃至3のいずれか1項に記載の方法。
【請求項５】
第2の事前に設定された条件を満たすCache lineが前記Cache内に存在するかどうかを決定する前記ステップは、
前記NVMタイプの前記メモリに対応しているとともにそのModifyフラグビットがcleanを表すCache lineが前記Cacheの前記LRUリンクリスト内の最初のN個のCache line内に存在するかどうかを決定するステップであって、前記最初のN個のCache lineはその過去のアクセス頻度が前記事前に設定された頻度よりも低いCache lineであり、前記Nは前記M以下である、ステップを含み、
前記第2の事前に設定された条件を満たす前記Cache lineが前記Cache内に存在するとき、前記第2の事前に設定された条件を満たす前記Cache lineから前記置き換えられるべき第1のCache lineを選択する前記ステップは、
前記NVMタイプの前記メモリに対応しているとともにそのModifyフラグビットがcleanである前記Cache lineが前記LRUリンクリスト内の前記最初のN個のCache line内に存在するとき、前記第1のCache lineとして、前記NVMタイプの前記メモリに対応しているとともにそのModifyフラグビットがcleanである、前記最初のN個のCache line内の決定されたCache lineを選択するステップを含む、
請求項4に記載の方法。
【請求項６】
前記第2の事前に設定された条件を満たすCache lineが前記Cache内に存在しないとき、前記LRUリンクリストの最前端のCache lineが前記第1のCache lineであると決定するステップ
をさらに含む、請求項5に記載の方法。
【請求項７】
前記第1のCache lineを第2のCache lineで置き換える前記ステップの後、
前記ハイブリッドメモリ内にあるとともに前記アクセスアドレスによって示される記憶媒体のタイプに従って、前記第2のCache lineに対応するメモリのタイプを記録するステップ
をさらに含む、請求項1乃至6のいずれか1項に記載の方法。
【請求項８】
Cacheであって、
コンピュータシステムのプロセッサによって送信されるデータアクセス要求を受信するように構成される受信モジュールであって、前記データアクセス要求はアクセスアドレスを含み、前記コンピュータシステムは、前記Cache、ハイブリッドメモリおよび前記Cacheおよび前記ハイブリッドメモリに結合されている前記プロセッサを含む、受信モジュールと、
前記アクセスアドレスに従って、アクセスされるべきデータが前記Cache内にキャッシュされているかどうかを決定するように構成されるヒット決定モジュールと、
前記アクセスされるべきデータが前記Cache内にキャッシュされていないとき、前記Cache内のCache lineの過去のアクセス頻度および前記Cache lineに対応するメモリのタイプに従って、第1の事前に設定された条件を満たすCache lineが前記Cache内に存在するかどうかを決定し、前記第1の事前に設定された条件を満たす前記Cache lineが前記Cache内に存在するとき、前記第1の事前に設定された条件を満たす前記Cache lineから置き換えられるべき第1のCache lineを選択するように構成される置き換え決定モジュールであって、前記第1の事前に設定された条件を満たす前記Cache lineはその過去のアクセス頻度が事前に設定された頻度よりも低く、且つ、ダイナミック・ランダム・アクセス・メモリ（DRAM）タイプのメモリに対応しているCache lineを含み、前記ハイブリッドメモリは前記DRAMタイプの前記メモリおよび不揮発性メモリ（NVM）タイプのメモリを含む、置き換え決定モジュールと、
前記アクセスアドレスに従って、前記ハイブリッドメモリから前記アクセスされるべきデータを読み出すように構成される読み出しモジュールと、
前記第1のCache lineを第2のCache lineで置き換えるように構成される置き換えモジュールであって、前記第2のCache lineは前記アクセスアドレスおよび前記アクセスされるべきデータを含む、置き換えモジュールと、
前記アクセスされるべきデータを前記プロセッサに送信するように構成される送信モジュールと
を含む、Cache。
【請求項９】
前記置き換え決定モジュールは、具体的には、
前記DRAMタイプの前記メモリに対応するCache lineが前記Cacheの最近最も使用されていない（LRU）リンクリスト内の最初のM個のCache line内に存在するかどうかを決定し、
前記DRAMタイプの前記メモリに対応する前記Cache lineが前記LRUリンクリスト内の前記最初のM個のCache line内に存在するとき、前記第1のCache lineとして、前記DRAMタイプの前記メモリに対応しているとともに前記最初のM個のCache line内にある決定されたCache lineを選択するように構成され、前記LRUリンクリスト内の前記最初のM個のCache lineが、その過去のアクセス頻度が前記事前に設定された頻度よりも低いCache lineである、請求項8に記載のCache。
【請求項１０】
前記置き換え決定モジュールは、具体的には、
前記Cache内のCache lineの位置フラグビットに従って、前記DRAMタイプの前記メモリに対応するCache lineが前記Cacheの前記LRUリンクリスト内の最初のM個のCache line内に存在するかどうかを決定するように構成され、前記Cache lineの前記位置フラグビットは、前記Cache lineに対応するメモリのタイプがDRAMタイプまたはNVMタイプであることを示すように構成される、請求項9に記載のCache。
【請求項１１】
前記置き換え決定モジュールは、
前記第1の事前に設定された条件を満たすCache lineが前記Cache内に存在しないとき、第2の事前に設定された条件を満たすCache lineが前記Cache内に存在するかどうかを決定し、
前記第2の事前に設定された条件を満たす前記Cache lineが前記Cache内に存在するとき、前記第2の事前に設定された条件を満たす前記Cache lineから前記置き換えられるべき第1のCache lineを選択するようにさらに構成され、前記第2の事前に設定された条件を満たす前記Cache lineは、その過去のアクセス頻度が前記事前に設定された頻度よりも低く、且つ、前記NVMタイプの前記メモリに対応している変更されていないCache lineを含む、請求項8乃至10のいずれか1項に記載のCache。
【請求項１２】
前記置き換え決定モジュールは、具体的には、
前記NVMタイプの前記メモリに対応しているとともにそのModifyフラグビットがcleanを表すCache lineが前記Cacheの前記LRUリンクリスト内の最初のN個のCache line内に存在するかどうかを決定し、
前記NVMタイプの前記メモリに対応しているとともにそのModifyフラグビットがcleanである前記Cache lineが前記LRUリンクリスト内の前記最初のN個のCache line内に存在するとき、前記第1のCache lineとして、前記NVMタイプの前記メモリに対応しているとともにそのModifyフラグビットがcleanである、前記最初のN個のCache line内の決定されたCache lineを選択するように構成され、前記最初のN個のCache lineはその過去のアクセス頻度が前記事前に設定された頻度よりも低いCache lineであり、前記Nは前記M以下である、請求項11に記載のCache。
【請求項１３】
前記置き換え決定モジュールは、
前記第2の事前に設定された条件を満たすCache lineが前記Cache内に存在しないとき、前記LRUリンクリストの最前端のCache lineが前記第1のCache lineであると決定するようにさらに構成される、請求項12に記載のCache。
【請求項１４】
前記置き換えモジュールは、
前記第1のCache lineが前記第2のCache lineで置き換えられた後、前記ハイブリッドメモリ内にあるとともに前記アクセスアドレスによって示される記憶媒体のタイプに従って、前記第2のCache lineに対応するメモリのタイプを記録するようにさらに構成される、請求項8乃至13のいずれか1項に記載のCache。
【請求項１５】
プロセッサ、Cacheおよびハイブリッドメモリを含むコンピュータシステム内で適用するデータキャッシング方法であって、
前記Cacheによって、前記プロセッサによって送信されるデータアクセス要求を受信するステップであって、前記データアクセス要求はアクセスアドレスを含む、ステップと、
前記Cacheによって、且つ、前記アクセスアドレスに従って、アクセスされるべきデータが前記Cache内にキャッシュされているかどうかを決定するステップと、
前記Cacheによって、且つ、前記Cache内のCache lineの過去のアクセス頻度および前記Cache lineに対応するメモリのタイプに従って、前記アクセスされるべきデータが前記Cache内にキャッシュされていないとき、第1の事前に設定された条件を満たすCache lineが前記Cache内に存在するかどうかを決定するステップであって、前記第1の事前に設定された条件を満たす前記Cache lineはその過去のアクセス頻度が事前に設定された頻度よりも低く、且つ、ダイナミック・ランダム・アクセス・メモリ（DRAM）タイプのメモリに対応しているCache lineを含み、前記ハイブリッドメモリは前記DRAMタイプの前記メモリおよび不揮発性メモリ（NVM）タイプのメモリを含む、ステップと、
前記Cacheによって、前記第1の事前に設定された条件を満たすCache lineが前記Cache内に存在しないとき、第2の事前に設定された条件を満たすCache lineが前記Cache内に存在するかどうかを決定するステップであって、前記第2の事前に設定された条件を満たす前記Cache lineは、その過去のアクセス頻度が前記事前に設定された頻度よりも低く、且つ、前記NVMタイプの前記メモリに対応している変更されていないCache lineを含む、ステップと、
前記Cacheによって、前記第2の事前に設定された条件を満たす前記Cache lineが前記Cache内に存在するとき、前記第2の事前に設定された条件を満たす前記Cache lineから置き換えられるべき第1のCache lineを選択するステップと、
前記Cacheによって、前記アクセスアドレスに従って、前記ハイブリッドメモリから前記アクセスされるべきデータを読み出すステップと、
前記Cacheによって、前記第1のCache lineを第2のCache lineで置き換えるステップであって、前記第2のCache lineは前記アクセスアドレスおよび前記アクセスされるべきデータを含む、ステップと、
前記Cacheによって、前記アクセスされるべきデータを前記プロセッサに送信するステップと
を含む、方法。
【請求項１６】
第1の事前に設定された条件を満たすCache lineが前記Cache内に存在するかどうかを決定する前記ステップは、
前記Cacheによって、前記DRAMタイプの前記メモリに対応するCache lineが前記Cacheの最近最も使用されていない（LRU）リンクリスト内の最初のM個のCache line内に存在するかどうかを決定するステップであって、前記LRUリンクリスト内の前記最初のM個のCache lineが、その過去のアクセス頻度が前記事前に設定された頻度よりも低いCache lineである、ステップ
を含む、請求項15に記載の方法。
【請求項１７】
前記DRAMタイプの前記メモリに対応するCache lineが前記Cacheの前記LRUリンクリスト内の最初のM個のCache line内に存在するかどうかを決定する前記ステップは、
前記Cacheによって、且つ、前記Cache内のCache lineの位置フラグビットに従って、前記DRAMタイプの前記メモリに対応するCache lineが前記Cacheの前記LRUリンクリスト内の最初のM個のCache line内に存在するかどうかを決定するステップであって、前記Cache lineの前記位置フラグビットは、前記Cache lineに対応するメモリのタイプがDRAMタイプまたはNVMタイプであることを示すように構成される、ステップ
を含む、請求項16に記載の方法。
【請求項１８】
第2の事前に設定された条件を満たすCache lineが前記Cache内に存在するかどうかを決定する前記ステップは、
前記Cacheによって、前記NVMタイプの前記メモリに対応しているとともにそのModifyフラグビットがcleanを表すCache lineが前記Cacheの前記LRUリンクリスト内の最初のN個のCache line内に存在するかどうかを決定するステップであって、前記最初のN個のCache lineはその過去のアクセス頻度が前記事前に設定された頻度よりも低いCache lineであり、前記Nは前記M以下である、ステップを含み、
前記第2の事前に設定された条件を満たす前記Cache lineから前記置き換えられるべき第1のCache lineを選択する前記ステップは、
前記NVMタイプの前記メモリに対応しているとともにそのModifyフラグビットがcleanである前記Cache lineが前記LRUリンクリスト内の前記最初のN個のCache line内に存在するとき、前記Cacheによって、前記第1のCache lineとして、前記NVMタイプの前記メモリに対応しているとともにそのModifyフラグビットがcleanである、前記最初のN個のCache line内の決定されたCache lineを選択するステップを含む、
請求項16または17に記載の方法。
【請求項１９】
前記Cacheによって、前記第2の事前に設定された条件を満たすCache lineが前記Cache内に存在しないとき、前記LRUリンクリストの最前端のCache lineが前記第1のCache lineであると決定するステップ
をさらに含む、請求項15乃至18のいずれか1項に記載の方法。
【請求項２０】
前記Cacheによって、前記アクセスアドレスに対応するメモリのタイプを取得するステップと、
前記Cacheによって、且つ、前記アクセスアドレスに対応する前記メモリのタイプに従って、前記第2のCache lineに対応するメモリのタイプを記録するステップと
をさらに含む、請求項15乃至18のいずれか1項に記載の方法。
【請求項２１】
Cache、ハイブリッドメモリおよび前記Cacheおよび前記ハイブリッドメモリに結合されているプロセッサを含むコンピュータシステムであって、前記Cacheは請求項1乃至7のいずれか1項に記載の前記方法を実行するように構成される、コンピュータシステム。
【請求項２２】
Cache、ハイブリッドメモリおよび前記Cacheおよび前記ハイブリッドメモリに結合されているプロセッサを含むコンピュータシステムであって、前記Cacheは請求項15乃至20のいずれか1項に記載の前記方法を実行するように構成される、コンピュータシステム。
【請求項２３】
プログラムコードとともにコンピュータ可読記憶媒体に記憶されるコンピュータプログラムであって、前記プログラムコードに含まれる命令は、請求項1乃至7のいずれか1項に記載の前記方法を実行するために使用される、コンピュータプログラム。
【請求項２４】
プログラムコードとともにコンピュータ可読記憶媒体に記憶されるコンピュータプログラムであって、前記プログラムコードに含まれる命令は、請求項15乃至20のいずれか1項に記載の前記方法を実行するために使用される、コンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は記憶技術に関し、詳細には、データキャッシング方法、キャッシュおよびコンピュータシステムに関する。
【背景技術】
【０００２】
現在、インターネットアプリケーションおよびビッグデータアプリケーション等のデータ中心型アプリケーションがより増えている。これらのアプリケーションは、強力な記憶サポートを必要とする。
【０００３】
従来技術では、ダイナミック・ランダム・アクセス・メモリ（Dynamic Random-Access Memory, DRAM）がコンピュータシステムにおいて一般的に使用される。しかしながら、技術によって制限されて、DRAMは容量が比較的小さく、且つ比較的多くのエネルギーを消費し、従って、大容量および低エネルギー消費のためのアプリケーションの要件を満たすことは難しい。最近、不揮発性メモリ（Non-Volatile Memory, NVM）が広く使用されている。大記憶容量および低エネルギー消費という利点によって、NVMはDRAMに取って代わり、且つコンピュータシステムとして使用され、このことは、大容量および低エネルギー消費のためのアプリケーションの要件を満たすことができる。しかしながら、DRAMと比較すると、NVMは比較的長い読み出し/書き込み遅延を有する。DRAMおよびNVMのそれぞれがそれら自身の利点および欠点を有するため、低エネルギー消費を有し、且つアプリケーションのための大容量および高性能のメモリを提供するために、DRAMおよびNVMを含むハイブリッドメモリが従来技術においてさらに使用される。
【発明の概要】
【課題を解決するための手段】
【０００４】
本発明の実施形態は、データキャッシング方法、キャッシュおよびコンピュータシステムを提供する。
【０００５】
第1の態様によると、本発明の実施形態はデータキャッシング方法を提供し、ここで、方法はCacheによって実行され、且つ、
CPUによって送信されるデータアクセス要求を受信するステップであって、ここで、データアクセス要求はアクセスアドレスを含む、ステップと、
アクセスアドレスに従って、アクセスされるべきデータがCache内にキャッシュされているかどうかを決定するステップと、
アクセスされるべきデータがCache内にキャッシュされていないとき、Cache内のCache lineの過去のアクセス頻度およびCache lineに対応するメモリのタイプに従って、第1の事前に設定された条件を満たすCache lineがCache内に存在するかどうかを決定するステップであって、ここで、第1の事前に設定された条件を満たすCache lineはその過去のアクセス頻度が事前に設定された頻度よりも低く、且つ、ダイナミック・ランダム・アクセス・メモリDRAMタイプのメモリに対応しているCache lineを含み、メモリはDRAMタイプのメモリおよび不揮発性メモリNVMタイプのメモリを含む、ステップと、
第1の事前に設定された条件を満たすCache lineがCache内に存在するとき、第1の事前に設定された条件を満たすCache lineから置き換えられるべき第1のCache lineを選択するステップと、
アクセスアドレスに従って、メモリからアクセスされるべきデータを読み出すステップと、
第1のCache lineを第2のCache lineで置き換えるステップであって、ここで、第2のCache lineはアクセスアドレスおよびアクセスされるべきデータを含む、ステップと、
Cacheによって、アクセスされるべきデータをCPUに送信するステップと
を含む。
【０００６】
第2の態様によると、本発明の実施形態はCacheを提供し、Cacheは、
CPUによって送信されるデータアクセス要求を受信するように構成される受信モジュールであって、ここで、データアクセス要求はアクセスアドレスを含む、受信モジュールと、
アクセスアドレスに従って、アクセスされるべきデータがCache内にキャッシュされているかどうかを決定するように構成されるヒット決定モジュールと、
アクセスされるべきデータがCache内にキャッシュされていないとき、Cache内のCache lineの過去のアクセス頻度およびCache lineに対応するメモリのタイプに従って、第1の事前に設定された条件を満たすCache lineがCache内に存在するかどうかを決定し、第1の事前に設定された条件を満たすCache lineがCache内に存在するとき、第1の事前に設定された条件を満たすCache lineから置き換えられるべき第1のCache lineを選択するように構成される置き換え決定モジュールであって、ここで、第1の事前に設定された条件を満たすCache lineはその過去のアクセス頻度が事前に設定された頻度よりも低く、且つ、ダイナミック・ランダム・アクセス・メモリDRAMタイプのメモリに対応しているCache lineを含み、メモリはDRAMタイプのメモリおよび不揮発性メモリNVMタイプのメモリを含む、置き換え決定モジュールと、
アクセスアドレスに従って、メモリからアクセスされるべきデータを読み出すように構成される読み出しモジュールと、
第1のCache lineを第2のCache lineで置き換えるように構成される置き換えモジュールであって、ここで、第2のCache lineはアクセスアドレスおよびアクセスされるべきデータを含む、置き換えモジュールと、
アクセスされるべきデータをCPUに送信するように構成される送信モジュールと
を含む。
【０００７】
第3の態様によると、本発明の実施形態はプロセッサと、ハイブリッドメモリと、前述の第2の態様に係るCacheとを含むコンピュータシステムを提供し、ここで、ハイブリッドメモリはDRAMおよびNVMを含み、プロセッサ、ハイブリッドメモリおよびCacheはバスを使用することによって接続される。
【０００８】
本発明の実施形態では、アクセス要求のミスが生じるとともにCacheが置き換えられるべきCache lineを決定する必要があるとき、Cache lineの過去のアクセス頻度だけでなくCache lineに対応するメモリのタイプもまた考慮される必要がある。従って、DRAMタイプに対応するCache lineは優先して置き換えられてよく、このことは、DRAM内に記憶されるデータのためのCache内のキャッシング量を低減する。CacheはNVM内に記憶されるデータのためのキャッシング量を増加させることができ、NVM内に記憶されるデータへのアクセス要求のために、対応するデータが可能な限りCache内で見つけられることができ、それによって、NVMからデータを読み出すケースを低減し、NVMからデータを読み出すことにおける遅延を低減し、アクセス効率を効果的に改善する。
【図面の簡単な説明】
【０００９】
本発明の実施形態における、または従来技術における技術的解決手段をより明確に説明するために、以下では、実施形態または従来技術を説明するために必要とされる添付図面を簡潔に説明する。明らかに、以下の説明における添付図面は本発明のいくつかの実施形態を示し、当業者は、創造的努力なしにこれらの添付図面から他の図面をさらに導出することができる。
【００１０】
【図１】図1は、本発明の実施形態に係るコンピュータシステムの構築的な図である。
【図２】図2は、本発明の実施形態に係るデータキャッシング方法のフローチャートである。
【図３】図3は、本発明の実施形態に係るCacheの概略構成図である。
【発明を実施するための形態】
【００１１】
本発明の実施形態の目的、技術的解決手段および利点をより明確にするために、以下では、本発明の実施形態における添付図面を参照して、本発明の実施形態における技術的解決手段を明確に説明する。明らかに、説明される実施形態は、本発明の実施形態の一部であるが全てではない。創造的努力なしに本発明の実施形態に基づいて当業者によって得られる全ての他の実施形態は、本発明の保護範囲に包含されるべきである。
【００１２】
図1は、本発明の実施形態に係るコンピュータシステムの構築的な図である。図1に示されるように、コンピュータシステムはプロセッサ（Processor）11およびハイブリッドメモリ（Hybrid Memory）12を含む。Processor11はCPU111、キャッシュ（Cache）112およびメモリコントローラ（Memory controller）113を含んでよく、Hybrid Memory12はDRAM121およびNVM122を含んでよい。Processor11、Hybrid Memory12およびキャッシュ（Cache）112は、バスを使用することによって接続される。Hybrid Memory12およびMemory controller113はメモリバス（Memory Bus）13を使用することによって接続されてよい。
【００１３】
データアクセス中、CPUはデータアクセス要求をCacheに送信してよく、ここで、データアクセス要求はアクセスアドレスを含む。Hybrid Memory内のいくつかのデータは、応答速度を向上するためにCache内にキャッシュされる。従って、Cacheは最初に、アクセスアドレスに従って、CPUがアクセスすることを要求するデータがCache内にキャッシュされているかどうかを決定する。換言すると、Cacheは最初に、アクセスアドレスに従って、Cache内でアクセスされるように要求されるデータに対してヒットが生じることができるかどうかを決定する。Cache内でヒットが生じるとき、すなわち、アクセスされるべきデータがCache内にキャッシュされているとき、CacheはCPUに、CPUがアクセスすることを要求するデータを直接返してよい。Cache内でミスが生じるとき、すなわち、アクセスされるべきデータがCache内にキャッシュされていないとき、データアクセス要求は、Memory controllerを使用することによって、Hybrid Memoryに送信され、その結果、CPUがアクセスすることを要求するデータはHybrid Memoryから読み出される。
【００１４】
Cache内のキャッシュ空間は一般に比較的小さいため、データアクセスプロセスでは、Cacheは、変化するアクセス要件を満たすために、アクセスケースに従って、Cache内のキャッシュされているコンテンツを絶えず更新する必要がある。具体的には、現在のデータアクセスに対してCache内でヒットが生じるとき、キャッシュライン（Cache line）は置き換えられも更新されもせず、現在のデータアクセスに対してCache内でミスが生じるとき、Cacheは、現在キャッシュされているキャッシュライン（Cache line）から置き換えられるべきCache lineを決定し、そのCache lineをメモリから読み出された新しいCache lineで置き換える必要がある。
【００１５】
当業者は、Cacheとメモリとの間のデータ交換がCache Controllerを使用することによって実行されることを知ることができる。Cache lineは、Cache Controllerにおける最小操作単位である。換言すると、Cache Controllerがデータをメモリに書き込むとき、Cache ControllerはデータのlineをCache line の単位でメモリに書き込み、Cache Controllerがメモリからデータを読み出すとき、データはまた、Cache lineに従って読み出される。説明の容易さのために、本発明の実施形態では、1つのCache lineは1つのCache line内のデータを表すことができる。本発明の実施形態における「Cache lineを置き換える」は、Cache内の1つのCache lineにおけるデータをメモリから読み出された1つのCache lineにおけるデータで置き換えることを指す。前述のプロセスでは、Cacheは、最も低いアクセス頻度を有するCache lineについて現在キャッシュされているCache lineを検索し、最も低いアクセス頻度を有するCache lineは置き換えられるべきCache lineであると決定する。しかしながら、Cacheは置き換えられるべきCache lineに対応するメモリのタイプがDRAMタイプであるかまたはNVMタイプであるかを理解せず、すなわち、置き換えられるべきCache lineがDRAMから来るかまたはNVMから来るかを知らない。
【００１６】
DRAMおよびNVMのいくつかのタイプに対して行われる分析から、DRAMの読み出し/書き込み性能とNVMの読み出し/書き込み性能との間に違いがあることが発見される。本発明の実施形態では、NVMは相変化メモリ（Phase Change Memory, PCM）、スピントランスファートルク磁気ランダムアクセスメモリ（Spin Transfer Torque-Magnetic Random Access Memory, STT-MRAM）および抵抗性ランダムアクセスメモリ（Resistive Random Access Memory, RRAM（登録商標））を含むがそれらに限定はされない。DRAMの読み出し/書き込み性能およびNVMの読み出し/書き込み性能は、具体的には、表1に示されることができる。
【００１７】
【表１】
0006277572.tif 000002
【００１８】
表1から、NVMの記憶容量はDRAMの記憶容量よりも大きく、且つ、NVMはDRAMよりも少ないエネルギーを消費するが、NVMの読み出し/書き込み遅延はDRAMの読み出し/書き込み遅延よりも長く、且つ、NVMは書き込み数に対して制限を有することがわかることができる。
【００１９】
従って、前述の従来技術によると、Cacheによって決定される置き換えられるべきCache lineに対応するメモリのタイプがNVMタイプである場合、置き換えられるべきCache lineはCacheから削除されることになり、且つ、データは次のアクセス要求のためにHybrid MemoryのNVMから呼び出される必要がある。NVMの読み出し/書き込み遅延はDRAMの読み出し/書き込み遅延よりも長いため、アクセス遅延の問題が必然的に生じ、且つ、アクセス遅延に対するアプリケーションの比較的高い要件が満たされることができない。
【００２０】
従って、方法の実施形態では、Cacheが置き換えられるべきCache lineを決定するとき、各現在キャッシュされているCache lineの過去のアクセス頻度が考慮される必要があるだけでなく、各Cache lineに対応するメモリのタイプもまたさらに考慮される必要がある。そのタイプがDRAMタイプであるメモリに対応するCache lineが優先して考慮され、すなわち、そのタイプがDRAMタイプであるメモリに対応するCache lineが優先して置き換えられる。このようにして、例えDRAMのCache lineがCacheから削除され、且つ、次のデータアクセスにおいてデータがDRAMから呼び出される必要があるときでも、DRAMのアクセス遅延は極端に長くはない。そのタイプがDRAMタイプであるメモリに対応するCache lineは、Cache line内のデータがメモリのDRAM内に記憶されていることを表す。そのタイプがNVMタイプであるメモリに対応するCache lineは、Cache line内のデータがメモリのNVM内に記憶されていることを表す。
【００２１】
本発明の技術的解決手段は、以下の具体的な実施形態を使用することによって詳細に説明される。
【００２２】
図2は、本発明の実施形態に係るデータキャッシング方法のフローチャートである。方法はCacheによって実行されてよく、且つ、具体的には、Cache内のCache Controllerによって実行されてよい。図1および図2内に示されるように、本実施形態における方法は以下を含んでよい：
【００２３】
S201. Cacheは、CPUによって送信されるデータアクセス要求を受信し、ここで、データアクセス要求はアクセスアドレスを含む。
【００２４】
S202. Cacheは、アクセスアドレスに従って、アクセスされるべきデータがCache内にキャッシュされているかどうかを決定し、アクセスされるべきデータがCache内にキャッシュされている場合、S207が実行され、アクセスされるべきデータがCache内にキャッシュされていない場合、S203が実行される。
【００２５】
具体的には、CPUはアプリケーションによって送信されるデータアクセス要求を受信するとともにデータアクセス要求をCacheに送信してよい。CacheはCPUによって要求されるアクセスアドレスをCache内にキャッシュされている全てのCache lineのアドレスと比較して、要求されているデータがCache内にキャッシュされているかどうか、すなわち、ヒットが生じるかどうかを決定してよい。具体的な実施では、Cacheのマッピング戦略が連想マッピングである場合、Cacheはキャッシング範囲全体内で検索および比較を実行し、Cacheのマッピング戦略が連想マッピングではないがセット連想マッピングである場合、Cacheは、アクセスアドレス内のインデックス（index）ビットに従って、Cache内のアクセスアドレスが属するセットを決定して、アクセスアドレス内のタグ（tag）ビットに従って、アクセスアドレスがセット内に含まれているかどうかをさらに決定してよい。アクセスアドレスがセット内に含まれているとき、Cacheは、有効ビットに従って、キャッシュされているデータが有効であるかどうかを決定してよい。データが有効である場合、対応するデータが、アクセスアドレス内のデータオフセットに従って発見されてよく、且つ、データはCPUに返される。
【００２６】
S203. Cacheは、Cache内のCache lineの過去のアクセス頻度およびCache lineに対応するメモリのタイプに従って、第1の事前に設定された条件を満たすCache lineがCache内に存在するかどうかを決定し、第1の事前に設定された条件を満たすCache lineがCache内に存在する場合、S204が実行され、第1の事前に設定された条件を満たすCache lineがCache内に存在しない場合、S208が実行される。
【００２７】
第1の事前に設定された条件を満たすCache lineは、その過去のアクセス頻度が事前に設定された頻度よりも低く、且つ、ダイナミック・ランダム・アクセス・メモリDRAMタイプのメモリに対応しているCache lineを含み、且つ、メモリはDRAMタイプのメモリおよび不揮発性メモリNVMタイプのメモリを含む。
【００２８】
S204. 第1の事前に設定された条件を満たすCache lineから置き換えられるべき第1のCache lineを選択する。
【００２９】
アクセスされるべきデータがCache内にキャッシュされていないとき、すなわち、ミスが生じるとき、Cacheは、Cache lineを現在キャッシュされているCache lineから置き換えられるべきCache lineとして決定する必要があり、ここで、置き換えられるべきCache lineとして決定されるCache lineは、第1のCache lineである。第1のCache lineが決定されているとき、全ての現在キャッシュされているCache lineの過去のアクセス頻度に対してだけでなく、全てのCache lineに対応するメモリのタイプに対してもまた参照が行われる必要がある。Cache lineの過去のアクセス頻度は、対応するキャッシュされているデータのアクセス温度を表すために使用され、且つ、Cache lineに対応するメモリのタイプは、Cache lineのソースがDRAMであるかまたはNVMであるかを表す。
【００３０】
本実施形態では、Cacheが第1のCache lineを決定する戦略は、過去のアクセス頻度に基づいて、そのタイプがDRAMであるメモリに対応するCache lineを可能な限り置き換えること、すなわち、そのタイプがDRAMタイプであるメモリに対応するCache lineを優先して置き換えることであってよい。
【００３１】
例えば、Cacheは最初に、その過去のアクセス頻度が事前に設定された頻度よりも低いいくつかのCache lineを全てのキャッシュされているCache lineから選択して、次いで、いくつかのCache lineのそれぞれに対応するメモリのタイプに従って、DRAMタイプのメモリに対応するCache lineが置き換えられるべき第1のCache lineとして使用されると決定してよい。いくつかのCache lineがそのタイプがDRAMタイプであるメモリに対応する2つ以上のCache lineを含む場合、その過去のアクセス頻度が最も低いCache lineが置き換えられるべき第1のCache lineとして決定されてよい。
【００３２】
S205. Cacheは、アクセスアドレスに従って、メモリからアクセスされるべきデータを読み出す。
【００３３】
置き換えられるべき第1のCache lineを決定した後、Cacheは、アクセスアドレスに従って、アクセスされるべきデータをメモリから読み出してよく、ここで、アクセスされるべきデータはDRAM内に記憶されてよく、またはNVM内に記憶されてよい。
【００３４】
S206. Cacheは、第1のCache lineを第2のCache lineで置き換え、ここで、第2のCache lineはアクセスアドレスおよびアクセスされるべきデータを含む。
【００３５】
アクセスされるべきデータを読み出した後、Cacheは第1のCache lineを第2のCache lineで置き換えてよい。本発明の本実施形態では、説明の容易さのために、Cache line内にあるとともにメモリから読み出されたデータは、第2のCache lineと呼ばれることは留意されるべきである。第1のCache lineを第2のCache lineで置き換えることは、Cache内で、メモリから読み出されるデータをキャッシュして、第1のCache line内のデータを削除するか、または第1のCache line内のデータをメモリにライトバックすることを指す。具体的な実施では、locationフラグビットがCache内の各Cache lineに追加されてよく、このフラグビットは、Cache lineに対応するメモリのタイプがDRAMタイプであるかまたはNVMタイプであるかを見分けるために使用される。
【００３６】
Cacheは、メモリ内にあるとともにアクセスアドレスによって示される記憶媒体のタイプに従って、第2のCache lineに対応するメモリのタイプを記録してよい。換言すると、フラグビットは第2のCache lineに追加されることができる。例えば、フラグビットのために、1つのbitが使用されてよい。bitが1であるとき、第2のCache lineに対応するメモリタイプがDRAMタイプであることを表し、bitが0であるとき、第2のCache lineに対応するメモリタイプがNVMタイプであることを表す。
【００３７】
第1のCache lineがCacheから削除されているとき、置き換えられるべき第1のCache lineのModifyフラグビットがクリーン（clean）である場合、第1のCache line内のデータは変更されておらず、メモリ内に記憶されているデータと一致していることを表す。この場合、第1のCache line内のデータは、メモリにライトバックされる必要はなく、第1のCache line内のデータは直接削除されてよい。置き換えられるべき第1のCache lineの変更フラグビットがダーティ（dirty）である場合、第1のCache line内のデータは変更されており、メモリ内に記憶されているデータと一致していないことを表す。この場合、第1のCache line内のデータは、最初にメモリにライトバックされる必要があり、次いで、第1のCache lineは削除される。
【００３８】
S207. Cacheは、アクセスされるべきデータをCPUに送信し、手順は終了する。
【００３９】
前述の操作を完了した後、Cacheは、CPUに、読み出されたアクセスされるべきデータを送信してよい。
【００４０】
結論として、本実施形態における方法では、アクセス要求のミスが生じるとともにCacheが置き換えられるべきCache lineを決定する必要があるとき、Cache lineの過去のアクセス頻度だけでなくCache lineに対応するメモリのタイプもまた考慮される必要がある。従って、DRAMタイプに対応するCache lineは優先して置き換えられてよく、このことは、DRAM内に記憶されるデータのためのCache内のキャッシング量を低減する。CacheはNVM内に記憶されるデータのためのキャッシング量を増加させることができ、NVM内に記憶されるデータへのアクセス要求のために、対応するデータが可能な限りCache内で見つけられることができ、それによって、NVMからデータを読み出すケースを低減し、NVMからデータを読み出すことにおける遅延を低減し、アクセス効率を効果的に改善する。
【００４１】
前述の実施形態では、全てのCache lineの過去のアクセス頻度は、最近最も使用されていない（Least Recently Used, LRU）リンクリストの助けを借りて取得されることができる。
【００４２】
具体的には、LRUリンクリストでは、Cache lineはアクセス頻度の昇順で記録され、Cacheによって第1の事前に設定された条件を満たすCache lineがCache内に存在するかどうかを決定するステップは、具体的には、
DRAMタイプのメモリに対応するCache lineがCacheの最近最も使用されていないLRUリンクリスト内の最初のM個のCache line内に存在するかどうかを決定するステップであって、ここで、LRUリンクリスト内の最初のM個のCache lineが、その過去のアクセス頻度が事前に設定された頻度よりも低いCache lineである、ステップと、
DRAMタイプのメモリに対応するCache lineがLRUリンクリスト内の最初のM個のCache line内に存在するとき、第1のCache lineとして、DRAMタイプのメモリに対応しているとともに最初のM個のCache line内にある決定されたCache lineの1番目を選択するステップとであってよい。
【００４３】
「第1の」は、DRAMタイプのメモリに対応するCache lineの、LRUリンクリスト内の最初のM個のCache lineにおける最前に位置するCache lineを指す。
【００４４】
Mの値が比較的大きく設定される場合、そのタイプがDRAMタイプであるメモリに対応するCache lineを置き換える確率は高くなることができることは留意されるべきである。しかしながら、Mの値は過度に大きく設定されることはできず、そうでなければ、DRAM内に記憶されているデータはCacheに入ることはできない。当業者は、Mの値を適宜設定してよい。
【００４５】
S208. Cacheは、第2の事前に設定された条件を満たすCache lineがCache内に存在するかどうかを決定し、第2の事前に設定された条件を満たすCache lineがCache内に存在する場合、S209が実行され、第2の事前に設定された条件を満たすCache lineがCache内に存在しない場合、S210が実行される。
【００４６】
第2の事前に設定された条件を満たすCache lineは、その過去のアクセス頻度が事前に設定された頻度よりも低く、且つ、NVMタイプのメモリに対応している変更されていないCache lineを含む。
【００４７】
具体的には、Cacheが第1の事前に設定された条件を満たすCache lineがCache内に存在しないと決定するとき、Cacheは、そのタイプがNVMであるメモリに対応するCache lineを置き換える必要があり得る。
【００４８】
Cache lineのModifyフラグビットがcleanである場合、すなわち、Cache line内のデータが変更されておらずメモリ内に記憶されているデータと一致している場合、Cache line内のデータは置き換え中にメモリにライトバックされる必要はなく、Cache lineのModifyフラグビットがdirtyである場合、すなわち、Cache line内のデータが変更されておりメモリ内に記憶されているデータと一致していない場合、Cache line内のデータは置き換え中にメモリに最初にライトバックされる必要があることが分析によって発見される。しかしながら、NVMは書き込み数に対して制限を有する。従って、そのタイプがNVMであるメモリに対応するCache lineが置き換えられる必要があるとき、NVMに対する書き込み数を可能な限り低減するために、そのModifyフラグビットがcleanであるCache lineが優先して置き換えられてよい。
【００４９】
S209. 第2の事前に設定された条件を満たすCache lineから置き換えられるべき第1のCache lineを選択し、S205が実行される。
【００５０】
Cacheによって、第2の事前に設定された条件を満たすCache lineがCache内に存在するかどうかを決定するステップは、具体的には、
NVMタイプのメモリに対応しているとともにそのModifyフラグビットがcleanを表すCache lineがCacheのLRUリンクリスト内の最初のN個のCache line内に存在するかどうかを決定するステップであって、ここで、最初のN個のCache lineはその過去のアクセス頻度が事前に設定された頻度よりも低いCache lineである、ステップと、
NVMタイプのメモリに対応しているとともにそのModifyフラグビットがcleanであるCache lineがLRUリンクリスト内の最初のN個のCache line内に存在するとき、第1のCache lineとして、NVMタイプのメモリに対応しているとともにそのModifyフラグビットがcleanである、最初のN個のCache line内の決定されたCache lineの1番目を選択するステップとであってよい。
【００５１】
具体的な実施では、MおよびNの値は、アプリケーションの挙動に従って調整されてよい。異なるタイプのメモリに対応するCache lineを置き換えることにおける遅延はDRAM < NVM (clean) < NVM (dirty)という関係を有するため、Cache内で、NVMキャッシュからのCache lineを記憶するための時間は、適切に延長されてよい。従って、N≦Mが一般に設定されてよい。
【００５２】
S210. Cacheは、第1のCache lineとして、最も低い過去のアクセス頻度を有するCache lineを選択し、S205が実行される。
【００５３】
さらに、第2の事前に設定された条件を満たすCache lineがCache内に存在しないとき、LRUリンクリストの最前端のCache lineが第1のCache lineである。
【００５４】
具体的には、そのタイプがNVMタイプであるメモリに対応するとともにそのModifyフラグビットがcleanであるCache lineがLRUリンクリスト内の最初のN個のCache line内に存在しない場合、Cacheは、LRUリンクリストの最前端の第1のCache lineが第1のCache lineであると決定してよい。この場合、決定された第1のCache lineは、そのタイプがNVMタイプであるメモリに対応するとともにそのModifyフラグビットがdirtyであるCache lineである。
【００５５】
本発明の別の実施形態では、Cacheは、メモリ内にあるとともにアクセスアドレスによって示される記憶媒体のタイプに従って、第2のCache lineに対応するメモリのタイプをさらに記録してよい。
【００５６】
具体的には、Cacheは、以下の2つの実施方式で、Cache lineに対応するメモリのタイプを取得してよい。
【００５７】
方式1: 第2のCache lineに対応するメモリのタイプが、メモリ内のアクセスアドレスが属するアドレス範囲に従って決定されて記録される。
【００５８】
具体的には、この方式では、Hybrid Memoryにおける物理アドレスは連続的であり、例えば、前のn GBはDRAMであり、後ろのn GBはNVMである。
【００５９】
従って、CacheはアクセスアドレスがDRAMアドレス範囲に属するかまたはNVMアドレス範囲に属するかを決定してよい。アクセスアドレスがDRAMアドレス範囲に属する場合、Cacheは、第2のCache lineに対応するメモリのタイプがDRAMタイプであると記録してよく、アクセスアドレスがNVMアドレス範囲に属する場合、Cacheは、第2のCache lineに対応するメモリのタイプがNVMタイプであると記録してよい。
【００６０】
方式2: 第2のCache lineに対応するメモリのタイプが、Memory Controllerによってフィードバックされる情報に従って決定されて記録される。
【００６１】
具体的には、この方式では、マッピングテーブルがMemory Controller内に記憶されてよく、ここで、マッピングテーブルはDRAMアドレス範囲またはNVMアドレス範囲を記録し、またはDRAMアドレス範囲とNVMアドレス範囲の両方を記録してよい。アドレス範囲は、連続的であっても不連続であってもよい。Memory Controllerは、アクセスアドレスおよびマッピングテーブルに従って、Hybrid Memory内のアクセスアドレスの記憶位置を決定してよい。加えて、Memory ControllerとCacheとの間のデータ交換中、フラグビットが追加されてよく、Memory Controllerは、追加されたフラグビットを使用することによって、Hybrid Memory内のアクセスアドレスの記憶位置をCacheに送信してよい。
【００６２】
具体的な実施では、ミスが生じるとき、Cacheはデータアクセス要求をMemory Controllerに送信する必要があり、ここで、データアクセス要求はアクセスアドレスを含む。Memory Controllerは、データアクセス要求に従って、Hybrid Memoryからアクセスされるべきデータを読み出してよく、且つ、Memory Controllerは、アクセスアドレスおよびマッピングテーブルに従って、Hybrid Memory内のアクセスアドレスの記憶位置を取得してよい。その後、Memory Controllerはデータ読み出し応答をCacheに送信してよく、ここで、データ読み出し応答は、アクセスされるべきデータとHybrid Memory内のアクセスアドレスの記憶位置とを含む。それに応じて、Cacheは、Memory Controllerによって送信されるデータ読み出し応答に含まれる記憶位置に従って、第2のCache lineに対応するメモリのタイプを記録してよい。
【００６３】
前述の実施形態の技術的解決手段は、以下の2つの具体的な例を使用することによって詳細に説明される。
【００６４】
Hybrid Memoryでは、前の2 GBはDRAMであり、後ろの2 GBはNVMであり、Cacheのマッピング戦略は連想マッピングであり、CPUはCacheからのデータを要求し、アクセスアドレスは0x08000000であり、アクセスアドレスはHybrid Memoryの第1GB内に配置され、データバスは32ビットを有すると仮定される。
【００６５】
例1: ローカル検索の後、Cacheが対応するデータを発見しない場合、このことは、ミスが生じることを示し、CacheはLRUリンクリスト内の最初の5個のCache lineを検索し、最初の5個のCache lineのlocationフラグビットに従って、そのタイプがDRAMであるメモリに対応するCache lineが見つからないと決定する。その後、CacheがLRUリンクリスト内の最初の3個のCache lineのModifyフラグビットをチェックするとともに2番目のCache lineのModifyフラグビットが0であることを発見する場合、これはcleanを示し、そのCache lineは置き換えられるべき第1のCache lineである。Cacheは、第1のCache lineを置き換えるために、そのアクセスアドレスが0x08000000であるデータを含むCache lineをCache内に読み出して、読み出されたデータをCPUに返してよい。加えて、Cacheはアクセスアドレス（0x08000000）に従って、データがDRAM内に記憶されていると決定してよい。従って、Cacheは新たに読み出されたCache line、すなわち第2のCache lineを、LRUリンクリストの末尾に追加し、Cache lineのlocationフラグビットを0に設定し（第2のCache lineがDRAMから来ることを表す）、Modifyフラグビットを0に設定する（第2のCache line内のデータが変更されていないことを表す）。
【００６６】
例2: ローカル検索の後、Cacheが対応するデータを発見しない場合、このことは、ミスが生じることを示し、CacheはLRUリンクリスト内の最初の5個のCache lineを検索し、最初の5個のCache lineのlocationフラグビットに従って、そのタイプがDRAMであるメモリに対応するCache lineが見つかるとともにそのCache lineが置き換えられるべき第1のCache lineであると決定する。DRAMのModifyフラグビットが1である（第1のCache line内のデータが変更されていることを表す）場合、Cacheは第1のCache line内のデータを最初にライトバックし、次いで、Cacheは、第1のCache lineを置き換えるために、そのアクセスアドレスが0x08000000であるデータを含むCache lineをCache内に読み出して、読み出されたデータをCPUに返してよい。加えて、Cacheはアクセスアドレス（0x08000000）に従って、データがDRAM内に記憶されていると決定してよい。従って、Cacheは新たに読み出されたCache line、すなわち第2のCache lineを、LRUリンクリストの末尾に追加し、Cache lineのlocationフラグビットを0に設定し（第2のCache lineがDRAMから来ることを表す）、Modifyフラグビットを0に設定する（第2のCache line内のデータが変更されていないことを表す）。
【００６７】
本発明の本実施形態では、Cacheが置き換えられるべきCache lineを決定しているとき、そのタイプがDRAMであるメモリに対応するCache lineが優先して置き換えられ、その結果、NVMからデータを読み出すことにおける遅延を回避するために、そのタイプがNVMであるメモリに対応するCache lineは可能な限り保持されることは前述のプロセスからわかることができる。そのタイプがDRAMであるメモリに対応するCache lineが置き換えられることができないとき、可能な限りNVMに対する書き込み数を低減するとともにメモリの寿命を延長するために、そのタイプがNVMであるメモリに対応するとともにそのModifyフラグビットがcleanであるCache lineが優先して置き換えられる。
【００６８】
図3は、本発明の実施形態に係るCacheの概略構成図である。図3に示されるように、本実施形態におけるCacheは、
CPUによって送信されるデータアクセス要求を受信するように構成される受信モジュール31であって、ここで、データアクセス要求はアクセスアドレスを含む、受信モジュール31と、
アクセスアドレスに従って、アクセスされるべきデータがCache内にキャッシュされているかどうかを決定するように構成されるヒット決定モジュール32と、
アクセスされるべきデータがCache内にキャッシュされていないとき、Cache内のCache lineの過去のアクセス頻度およびCache lineに対応するメモリのタイプに従って、第1の事前に設定された条件を満たすCache lineがCache内に存在するかどうかを決定し、第1の事前に設定された条件を満たすCache lineがCache内に存在するとき、第1の事前に設定された条件を満たすCache lineから置き換えられるべき第1のCache lineを選択するように構成される置き換え決定モジュール33であって、ここで、第1の事前に設定された条件を満たすCache lineはその過去のアクセス頻度が事前に設定された頻度よりも低く、且つ、ダイナミック・ランダム・アクセス・メモリDRAMタイプのメモリに対応しているCache lineを含み、メモリはDRAMタイプのメモリおよび不揮発性メモリNVMタイプのメモリを含む、置き換え決定モジュール33と、
アクセスアドレスに従って、メモリからアクセスされるべきデータを読み出すように構成される読み出しモジュール34と、
第1のCache lineを第2のCache lineで置き換えるように構成される置き換えモジュール35であって、ここで、第2のCache lineはアクセスアドレスおよびアクセスされるべきデータを含む、置き換えモジュール35と、
アクセスされるべきデータをCPUに送信するように構成される送信モジュール36と
を含んでよい。
【００６９】
さらに、置き換え決定モジュール33は、具体的には、
DRAMタイプのメモリに対応するCache lineがCacheの最近最も使用されていないLRUリンクリスト内の最初のM個のCache line内に存在するかどうかを決定し、
DRAMタイプのメモリに対応するCache lineがLRUリンクリスト内の最初のM個のCache line内に存在するとき、第1のCache lineとして、DRAMタイプのメモリに対応しているとともに最初のM個のCache line内にある決定されたCache lineの1番目を選択するように構成され、ここで、LRUリンクリスト内の最初のM個のCache lineが、その過去のアクセス頻度が事前に設定された頻度よりも低いCache lineである。
【００７０】
さらに、置き換え決定モジュール33は、
第1の事前に設定された条件を満たすCache lineがCache内に存在しないとき、第2の事前に設定された条件を満たすCache lineがCache内に存在するかどうかを決定し、
第2の事前に設定された条件を満たすCache lineがCache内に存在するとき、第2の事前に設定された条件を満たすCache lineから置き換えられるべき第1のCache lineを選択するようにさらに構成され、ここで、第2の事前に設定された条件を満たすCache lineは、その過去のアクセス頻度が事前に設定された頻度よりも低く、且つ、NVMタイプのメモリに対応している変更されていないCache lineを含む。
【００７１】
さらに、置き換え決定モジュール33は、具体的には、
NVMタイプのメモリに対応しているとともにそのModifyフラグビットがcleanを表すCache lineがCacheのLRUリンクリスト内の最初のN個のCache line内に存在するかどうかを決定し、
NVMタイプのメモリに対応しているとともにそのModifyフラグビットがcleanであるCache lineがLRUリンクリスト内の最初のN個のCache line内に存在するとき、第1のCache lineとして、NVMタイプのメモリに対応しているとともにそのModifyフラグビットがcleanである、最初のN個のCache line内の決定されたCache lineの1番目を選択するように構成され、ここで、最初のN個のCache lineはその過去のアクセス頻度が事前に設定された頻度よりも低いCache lineである。
【００７２】
さらに、置き換え決定モジュール33は、
第2の事前に設定された条件を満たすCache lineがCache内に存在しないとき、LRUリンクリストの最前端のCache lineが第1のCache lineであると決定するようにさらに構成される。
【００７３】
さらに、置き換えモジュール35は、
第1のCache lineが第2のCache lineで置き換えられた後、メモリ内にあるとともにアクセスアドレスによって示される記憶媒体のタイプに従って、第2のCache lineに対応するメモリのタイプを記録するようにさらに構成される。
【００７４】
本実施形態におけるCacheは、前述の方法の実施形態における技術的解決手段を実行するために使用されてよく、その実施原理および技術的効果は同様であり、詳細はここでは説明されない。
【００７５】
本発明の実施形態は、コンピュータシステムの実施形態をさらに提供してよい。コンピュータシステムの実施形態の概略構成図については、図1に示されるアーキテクチャに対して参照が行われてよい。すなわち、プロセッサ（Processor）11およびハイブリッドメモリ（Hybrid Memory）12が含まれ、ここで、Processor11はCPU111、CPUキャッシュ（Cache）112およびメモリコントローラ（Memory controller）113を含んでよく、Hybrid Memory12はDRAM121およびNVM122を含んでよく、Hybrid Memory12およびMemory controller113はメモリバス（Memory Bus）13を使用することによって接続されてよい。
【００７６】
Cache112は、Cacheの前述の実施形態で説明される構造を使用してよく、Cache112は、前述の方法の実施形態における技術的解決手段を実行してよい。その実施原理および技術的効果は同様であり、詳細はここでは説明されない。
【００７７】
当業者は、方法の実施形態のステップの全てまたはいくつかが関連するハードウェアに命令するプログラムによって実施されてよいことを理解することができる。プログラムはコンピュータ可読記憶媒体内に記憶されてよい。プログラムが動作すると、方法の実施形態のステップが実行される。前述の記憶媒体は、ROM、RAM、磁気ディスクまたは光ディスク等のプログラムコードを記憶することができる任意の媒体を含む。
【００７８】
最後に、前述の実施形態は単に、本発明を限定するためではなく、本発明の技術的解決手段を説明するために意図されることは留意されるべきである。本明細書で提供される実施形態は単なる例示的なものである。当業者は、説明の便利さおよび簡潔さのために、前述の実施形態では、実施形態は異なる側面を強調し、1つの実施形態で詳細に説明されない部分については、別の実施形態の関連する説明に対して参照が行なわれてよいことを明確に知ることができる。本発明の実施形態、請求項および添付図面で開示される特徴は、独立して存在してよく、または組み合わせて存在してよい。
【符号の説明】
【００７９】
11  プロセッサ
12  ハイブリッドメモリ
31  受信モジュール
32  ヒット決定モジュール
33  置き換え決定モジュール
34  読み出しモジュール
35  置き換えモジュール
36  送信モジュール
111  中央処理装置
112  キャッシュ
113  メモリコントローラ
121  ダイナミック・ランダム・アクセス・メモリ
122  不揮発性メモリ
【図１】
0006277572.tif 000003
【図２】
0006277572.tif 000004
【図３】
0006277572.tif 000005