(57)【要約】  ダイナミックランダムアクセスメモリ(DRAM)キャッシュインジケータキャッシュを使用する、スケーラブルDRAMキャッシュ管理の提供が行われる。一態様では、高帯域幅メモリ内のDRAMキャッシュへのアクセスを管理するために、DRAMキャッシュ管理回路が提供される。DRAMキャッシュ管理回路は、DRAMキャッシュインジケータキャッシュを備え、DRAMキャッシュインジケータキャッシュは、システムメモリDRAM内のマスタテーブルから読み取られ、DRAMキャッシュインジケータを含む、マスタテーブルエントリを記憶する。DRAMキャッシュインジケータは、システムメモリDRAM内のメモリラインが高帯域幅メモリのDRAMキャッシュ内にキャッシュされているか否か、および、そうである場合、DRAMキャッシュのどのウェイ内にメモリラインが記憶されているかを、DRAMキャッシュ管理回路が決定することを可能にする。DRAMキャッシュインジケータキャッシュに基づいて、DRAMキャッシュ管理回路は、メモリアクセス動作を最適な方法で実行するために、DRAMキャッシュおよび/またはシステムメモリDRAMを採用するべきか否かを決定し得る。
2019509557.tif 000002
【特許請求の範囲】
【請求項１】
高帯域幅メモリの一部であり、システムメモリDRAMに通信可能にさらに結合されている、DRAMキャッシュに通信可能に結合された、ダイナミックランダムアクセスメモリ(DRAM)キャッシュ管理回路であって、
前記DRAMキャッシュ管理回路が、前記システムメモリDRAM内のマスタテーブルから読み取られた複数のDRAMキャッシュインジケータをキャッシュするように構成された、DRAMキャッシュインジケータキャッシュを備え、前記複数のDRAMキャッシュインジケータが、前記システムメモリDRAMの対応するメモリラインが前記DRAMキャッシュ内にキャッシュされているか否かを示し、
前記DRAMキャッシュ管理回路が、
読取りアドレスを備えるメモリ読取り要求を受信すること、
前記読取りアドレスが前記DRAMキャッシュインジケータキャッシュ内で見つかるか否かを決定すること、
前記読取りアドレスが前記DRAMキャッシュインジケータキャッシュ内で見つからないという決定に応答して、前記システムメモリDRAM内で前記読取りアドレスにおけるデータを読み取ること、ならびに
前記読取りアドレスが前記DRAMキャッシュインジケータキャッシュ内で見つかるという決定に応答して、
前記読取りアドレスが前記DRAMキャッシュ内で見つかるか否かを、前記DRAMキャッシュインジケータキャッシュに基づいて決定すること、
前記読取りアドレスが前記DRAMキャッシュ内で見つからないという決定に応答して、前記システムメモリDRAM内で前記読取りアドレスにおけるデータを読み取ること、および
前記読取りアドレスが前記DRAMキャッシュ内で見つかるという決定に応答して、前記読取りアドレスのためのデータを前記DRAMキャッシュから読み取ること
を行うように構成された、DRAMキャッシュ管理回路。
【請求項２】
ライトバックモードで動作するように構成され、前記読取りアドレスが前記DRAMキャッシュ内で見つかるという決定に応答して、前記DRAMキャッシュ内の前記読取りアドレスのための前記データがクリーンであるか否かを決定するようにさらに構成され、
前記DRAMキャッシュ管理回路が、前記DRAMキャッシュ内の前記読取りアドレスのための前記データがクリーンではないという決定にさらに応答して、前記読取りアドレスのための前記データを前記DRAMキャッシュから読み取るように構成された、請求項1に記載のDRAMキャッシュ管理回路。
【請求項３】
前記DRAMキャッシュ内の前記読取りアドレスのための前記データがクリーンであるという決定に応答して、
前記DRAMキャッシュ管理回路の負荷分散回路に基づいて、前記DRAMキャッシュおよび前記システムメモリDRAMの中から好適なデータソースを識別すること、
前記好適なデータソースとしての前記DRAMキャッシュの識別に応答して、前記DRAMキャッシュからデータを読み取ること、および
前記好適なデータソースとしての前記システムメモリDRAMの識別に応答して、前記システムメモリDRAMからデータを読み取ること
を行うようにさらに構成された、請求項2に記載のDRAMキャッシュ管理回路。
【請求項４】
ライトスルーモードで動作するように構成され、前記読取りアドレスが前記DRAMキャッシュ内で見つかるという決定に応答して、
前記DRAMキャッシュ管理回路の負荷分散回路に基づいて、前記DRAMキャッシュおよび前記システムメモリDRAMの中から好適なデータソースを識別すること、および
前記好適なデータソースとしての前記システムメモリDRAMの識別に応答して、前記システムメモリDRAMからデータを読み取ること
を行うようにさらに構成され、
前記DRAMキャッシュ管理回路が、前記DRAMキャッシュ内の前記読取りアドレスのための前記データがクリーンであるという決定、および前記好適なデータソースとしての前記DRAMキャッシュの識別にさらに応答して、前記読取りアドレスのための前記データを前記DRAMキャッシュから読み取るように構成された、請求項1に記載のDRAMキャッシュ管理回路。
【請求項５】
前記DRAMキャッシュ管理回路が、システムキャッシュにさらに結合され、
前記DRAMキャッシュ管理回路が、前記システムキャッシュにおけるミスに応答して、前記読取りアドレスを備える前記メモリ読取り要求を受信するように構成された、請求項1に記載のDRAMキャッシュ管理回路。
【請求項６】
前記システムメモリDRAM内で前記読取りアドレスにおける前記データを読み取った後、前記DRAMキャッシュインジケータキャッシュを確率的に補充するように構成された、請求項1に記載のDRAMキャッシュ管理回路。
【請求項７】
前記DRAMキャッシュ内の前記読取りアドレスのためのウェイ番号が非0であるか否かを決定するように構成されることによって、前記読取りアドレスが前記DRAMキャッシュ内で見つかるか否かを、前記DRAMキャッシュインジケータキャッシュに基づいて決定するように構成された、請求項1に記載のDRAMキャッシュ管理回路。
【請求項８】
書込みアドレスと、クリーンなエビクト済みデータを備える書込みデータとを備える、メモリ書込み要求を、システムキャッシュから受信すること、
前記書込みアドレスが前記DRAMキャッシュ内で見つかるか否かを決定すること、および
前記書込みアドレスが前記DRAMキャッシュ内で見つからないという決定に応答して、前記書込みアドレスと前記クリーンなエビクト済みデータとを前記DRAMキャッシュに確率的に書き込むこと
を行うようにさらに構成された、請求項1に記載のDRAMキャッシュ管理回路。
【請求項９】
前記書込みアドレスが前記DRAMキャッシュ内で見つかるか否かの決定より前に、
前記書込みアドレスが前記DRAMキャッシュインジケータキャッシュ内で見つかるか否かを決定すること、および
前記書込みアドレスが前記DRAMキャッシュインジケータキャッシュ内で見つからないという決定に応答して、前記DRAMキャッシュインジケータキャッシュを確率的に補充すること
を行うようにさらに構成され、
前記DRAMキャッシュ管理回路が、前記DRAMキャッシュインジケータキャッシュの補充に応答して、前記書込みアドレスが前記DRAMキャッシュ内で見つかるか否かを決定するように構成された、請求項8に記載のDRAMキャッシュ管理回路。
【請求項１０】
前記DRAMキャッシュからエビクトされるべきウェイを選択すること、
前記DRAMキャッシュから、前記選択されたウェイのメモリアドレスを読み取ること、
前記書込みアドレスと前記クリーンなエビクト済みデータとを、前記DRAMキャッシュ内の前記選択されたウェイに書き込むこと、
前記DRAMキャッシュインジケータキャッシュ内の前記書込みアドレスのためのウェイ番号を、前記選択されたウェイのウェイ番号に更新すること、
前記選択されたウェイの前記メモリアドレスが前記DRAMキャッシュインジケータキャッシュ内に存在するか否かを決定すること、および
前記選択されたウェイの前記メモリアドレスが前記DRAMキャッシュインジケータキャッシュ内に存在するという決定に応答して、前記DRAMキャッシュインジケータキャッシュ内の前記メモリアドレスのための前記選択されたウェイの前記ウェイ番号をリセットすること
を行うように構成されることによって、前記書込みアドレスと前記クリーンなエビクト済みデータとを前記DRAMキャッシュに確率的に書き込むように構成された、請求項8に記載のDRAMキャッシュ管理回路。
【請求項１１】
前記メモリアドレスに対応する、前記選択されたウェイのマスタテーブルエントリを読み取ること、および
前記マスタテーブルエントリに基づいて、前記メモリアドレスのための前記選択されたウェイの前記ウェイ番号を、前記DRAMキャッシュインジケータキャッシュに書き込むこと
を行うように構成されることによって、前記選択されたウェイの前記メモリアドレスが前記DRAMキャッシュインジケータキャッシュ内に存在しないという決定に応答して、前記DRAMキャッシュインジケータキャッシュを補充するようにさらに構成された、請求項10に記載のDRAMキャッシュ管理回路。
【請求項１２】
前記選択されたウェイの前記メモリアドレスが前記DRAMキャッシュインジケータキャッシュ内に存在しないという決定に応答して、
前記メモリアドレスに対応する、前記選択されたウェイの前記ウェイ番号をリセットすること、および
前記ウェイ番号を前記マスタテーブルに書き込むこと
を行うようにさらに構成された、請求項10に記載のDRAMキャッシュ管理回路。
【請求項１３】
ライトスルーモードで動作するように構成され、
書込みアドレスと、ダーティなエビクト済みデータを備える書込みデータとを備える、メモリ書込み要求を、システムキャッシュから受信すること、
前記書込みアドレスが前記DRAMキャッシュ内で見つかるか否かを決定すること、
前記書込みアドレスが前記DRAMキャッシュ内で見つからないという決定に応答して、前記書込みアドレスと前記ダーティなエビクト済みデータとを前記DRAMキャッシュに確率的に書き込むこと、
前記書込みアドレスが前記DRAMキャッシュ内で見つかるという決定に応答して、前記ダーティなエビクト済みデータを前記DRAMキャッシュに書き込むこと、および
前記ダーティなエビクト済みデータを前記システムメモリDRAMに書き込むこと
を行うようにさらに構成された、請求項1に記載のDRAMキャッシュ管理回路。
【請求項１４】
前記書込みアドレスが前記DRAMキャッシュ内で見つかるか否かの決定より前に、
前記書込みアドレスが前記DRAMキャッシュインジケータキャッシュ内で見つかるか否かを決定すること、および
前記書込みアドレスが前記DRAMキャッシュインジケータキャッシュ内で見つからないという決定に応答して、前記DRAMキャッシュインジケータキャッシュを確率的に補充すること、
前記DRAMキャッシュインジケータキャッシュの非補充に応答して、
前記マスタテーブル内の前記書込みアドレスに対応するDRAMキャッシュインジケータを更新すること、および
前記ダーティなエビクト済みデータを前記DRAMキャッシュに書き込むこと
を行うようにさらに構成され、
前記DRAMキャッシュ管理回路が、前記DRAMキャッシュインジケータキャッシュの補充に応答して、前記書込みアドレスが前記DRAMキャッシュ内で見つかるか否かを決定するように構成された、請求項13に記載のDRAMキャッシュ管理回路。
【請求項１５】
前記DRAMキャッシュからエビクトされるべきウェイを選択すること、
前記DRAMキャッシュから、前記選択されたウェイのメモリアドレスを読み取ること、
前記書込みアドレスと前記ダーティなエビクト済みデータとを、前記DRAMキャッシュ内の前記選択されたウェイに書き込むこと、
前記DRAMキャッシュインジケータキャッシュ内の前記書込みアドレスのためのウェイ番号を、前記選択されたウェイのウェイ番号に更新すること、
前記選択されたウェイの前記メモリアドレスが前記DRAMキャッシュインジケータキャッシュ内に存在するか否かを決定すること、および
前記選択されたウェイの前記メモリアドレスが前記DRAMキャッシュインジケータキャッシュ内に存在するという決定に応答して、前記DRAMキャッシュインジケータキャッシュ内の前記メモリアドレスのための前記選択されたウェイの前記ウェイ番号をリセットすること
を行うように構成されることによって、前記書込みアドレスと前記ダーティなエビクト済みデータとを前記DRAMキャッシュに確率的に書き込むように構成された、請求項13に記載のDRAMキャッシュ管理回路。
【請求項１６】
前記メモリアドレスに対応する、前記選択されたウェイのマスタテーブルエントリを読み取ること、および
前記マスタテーブルエントリに基づいて、前記メモリアドレスのための前記選択されたウェイの前記ウェイ番号を、前記DRAMキャッシュインジケータキャッシュに書き込むこと
を行うように構成されることによって、前記選択されたウェイの前記メモリアドレスが前記DRAMキャッシュインジケータキャッシュ内に存在しないという決定に応答して、前記DRAMキャッシュインジケータキャッシュを補充するようにさらに構成された、請求項15に記載のDRAMキャッシュ管理回路。
【請求項１７】
前記選択されたウェイの前記メモリアドレスが前記DRAMキャッシュインジケータキャッシュ内に存在しないという決定に応答して、
前記メモリアドレスに対応する、前記選択されたウェイの前記ウェイ番号をリセットすること、および
前記ウェイ番号を前記マスタテーブルに書き込むこと
を行うようにさらに構成された、請求項15に記載のDRAMキャッシュ管理回路。
【請求項１８】
ライトバックモードで動作するように構成され、
書込みアドレスと、ダーティなエビクト済みデータを備える書込みデータとを備える、メモリ書込み要求を、システムキャッシュから受信すること、
前記書込みアドレスが前記DRAMキャッシュ内で見つかるか否かを決定すること、
前記書込みアドレスが前記DRAMキャッシュ内で見つからないという決定に応答して、前記書込みアドレスと前記ダーティなエビクト済みデータとを前記DRAMキャッシュに確率的に書き込むこと、
前記DRAMキャッシュへの前記書込みアドレスと前記ダーティなエビクト済みデータとの非書込みに応答して、前記ダーティなエビクト済みデータを前記システムメモリDRAMに書き込むこと、および
前記書込みアドレスが前記DRAMキャッシュ内で見つかるという決定に応答して、前記ダーティなエビクト済みデータを前記DRAMキャッシュに書き込むこと
を行うようにさらに構成された、請求項1に記載のDRAMキャッシュ管理回路。
【請求項１９】
前記書込みアドレスが前記DRAMキャッシュ内で見つかるか否かの決定より前に、
前記書込みアドレスが前記DRAMキャッシュインジケータキャッシュ内で見つかるか否かを決定すること、および
前記書込みアドレスが前記DRAMキャッシュインジケータキャッシュ内で見つからないという決定に応答して、前記DRAMキャッシュインジケータキャッシュを確率的に補充すること、
前記DRAMキャッシュインジケータキャッシュの非補充に応答して、
前記マスタテーブルから、前記書込みアドレスのためのDRAMキャッシュインジケータを読み取ること、
前記ダーティなエビクト済みデータを前記システムメモリDRAMに書き込むこと、および
前記マスタテーブルからの前記書込みアドレスのための前記DRAMキャッシュインジケータが、前記書込みアドレスが前記DRAMキャッシュ内にあることを示すか否かを決定すること
を行うようにさらに構成され、
前記DRAMキャッシュ管理回路が、前記DRAMキャッシュインジケータキャッシュの補充に応答して、前記書込みアドレスが前記DRAMキャッシュ内で見つかるか否かを決定するように構成された、請求項18に記載のDRAMキャッシュ管理回路。
【請求項２０】
前記DRAMキャッシュからエビクトされるべきウェイを選択すること、
前記DRAMキャッシュから、前記選択されたウェイのメモリアドレスを読み取ること、
前記DRAMキャッシュから、前記選択されたウェイの前記メモリアドレスを読み取った後、前記書込みアドレスと前記ダーティなエビクト済みデータとを前記DRAMキャッシュ内の前記選択されたウェイに書き込むこと、
前記DRAMキャッシュインジケータキャッシュ内の前記書込みアドレスのためのウェイ番号を、前記選択されたウェイのウェイ番号に更新すること、
前記DRAMキャッシュインジケータキャッシュ内の前記書込みアドレスのためのダーティインジケータを設定すること、
前記選択されたウェイの前記メモリアドレスが前記DRAMキャッシュインジケータキャッシュ内に存在するか否かを決定すること、および
前記選択されたウェイの前記メモリアドレスが前記DRAMキャッシュインジケータキャッシュ内に存在するという決定に応答して、前記DRAMキャッシュインジケータキャッシュ内の前記選択されたウェイの前記書込みアドレスのための前記ウェイ番号と前記ダーティインジケータとをリセットすること
を行うように構成されることによって、前記書込みアドレスと前記ダーティなエビクト済みデータとを前記DRAMキャッシュに確率的に書き込むように構成された、請求項18に記載のDRAMキャッシュ管理回路。
【請求項２１】
前記メモリアドレスに対応する、前記選択されたウェイのマスタテーブルエントリを読み取ること、および
前記マスタテーブルエントリに基づいて、前記メモリアドレスのための前記選択されたウェイの前記ウェイ番号を、前記DRAMキャッシュインジケータキャッシュに書き込むこと
を行うように構成されることによって、前記選択されたウェイの前記メモリアドレスが前記DRAMキャッシュインジケータキャッシュ内に存在しないという決定に応答して、前記DRAMキャッシュインジケータキャッシュを補充するようにさらに構成された、請求項20に記載のDRAMキャッシュ管理回路。
【請求項２２】
前記選択されたウェイの前記メモリアドレスが前記DRAMキャッシュインジケータキャッシュ内に存在しないという決定に応答して、
前記メモリアドレスに対応する、前記選択されたウェイの前記ウェイ番号をリセットすること、および
前記ウェイ番号を前記マスタテーブルに書き込むこと
を行うようにさらに構成された、請求項20に記載のDRAMキャッシュ管理回路。
【請求項２３】
集積回路(IC)に統合された、請求項1に記載のDRAMキャッシュ管理回路。
【請求項２４】
セットトップボックス、エンターテインメントユニット、ナビゲーションデバイス、通信デバイス、固定ロケーションデータユニット、モバイルロケーションデータユニット、モバイルフォン、セルラーフォン、スマートフォン、タブレット、ファブレット、コンピュータ、ポータブルコンピュータ、デスクトップコンピュータ、携帯情報端末(PDA)、モニタ、コンピュータモニタ、テレビ、チューナ、ラジオ、衛星ラジオ、音楽プレーヤ、デジタル音楽プレーヤ、ポータブル音楽プレーヤ、デジタルビデオプレーヤ、ビデオプレーヤ、デジタルビデオディスク(DVD)プレーヤ、ポータブルデジタルビデオプレーヤ、および自動車からなるグループから選択されるデバイスに統合された、請求項1に記載のDRAMキャッシュ管理回路。
【請求項２５】
スケーラブルダイナミックランダムアクセスメモリ(DRAM)キャッシュ管理を提供するための方法であって、
DRAMキャッシュ管理回路によって、読取りアドレスを備えるメモリ読取り要求を受信するステップと、
前記読取りアドレスが、前記DRAMキャッシュ管理回路のDRAMキャッシュインジケータキャッシュ内で見つかるか否かを決定するステップと、
前記読取りアドレスが前記DRAMキャッシュインジケータキャッシュ内で見つからないという決定に応答して、システムメモリDRAM内で前記読取りアドレスにおけるデータを読み取るステップと、
前記読取りアドレスが前記DRAMキャッシュインジケータキャッシュ内で見つかるという決定に応答して、
前記読取りアドレスが、高帯域幅メモリの一部であるDRAMキャッシュ内で見つかるか否かを、前記DRAMキャッシュインジケータキャッシュに基づいて決定するステップと、
前記読取りアドレスが前記DRAMキャッシュ内で見つからないという決定に応答して、前記システムメモリDRAM内で前記読取りアドレスにおけるデータを読み取るステップと、
前記読取りアドレスが前記DRAMキャッシュ内で見つかるという決定に応答して、前記読取りアドレスのためのデータを前記DRAMキャッシュから読み取るステップと
を含む方法。
【請求項２６】
前記DRAMキャッシュ管理回路が、ライトバックモードで動作するように構成され、前記方法が、前記読取りアドレスが前記DRAMキャッシュ内で見つかるという決定に応答して、前記DRAMキャッシュ内の前記読取りアドレスのための前記データがクリーンであるか否かを決定するステップをさらに含み、
前記読取りアドレスのための前記データを前記DRAMキャッシュから読み取るステップが、前記DRAMキャッシュ内の前記読取りアドレスのための前記データがクリーンではないという決定にさらに応答する、請求項25に記載の方法。
【請求項２７】
前記DRAMキャッシュ内の前記読取りアドレスのための前記データがクリーンであるという決定に応答して、
前記DRAMキャッシュおよび前記システムメモリDRAMの中から好適なデータソースを識別するステップと、
前記好適なデータソースとしての前記DRAMキャッシュの識別に応答して、前記DRAMキャッシュからデータを読み取るステップと、
前記好適なデータソースとしての前記システムメモリDRAMの識別に応答して、前記システムメモリDRAMからデータを読み取るステップと
をさらに含む、請求項26に記載の方法。
【請求項２８】
前記DRAMキャッシュ管理回路が、ライトスルーモードで動作するように構成され、前記方法が、前記読取りアドレスが前記DRAMキャッシュ内で見つかるという決定に応答して、
前記DRAMキャッシュおよび前記システムメモリDRAMの中から好適なデータソースを識別するステップと、
前記好適なデータソースとしての前記システムメモリDRAMの識別に応答して、前記システムメモリDRAMからデータを読み取るステップと
をさらに含み、
前記読取りアドレスのための前記データを前記DRAMキャッシュから読み取るステップが、前記DRAMキャッシュ内の前記読取りアドレスのための前記データがクリーンであるという決定、および前記好適なデータソースとしての前記DRAMキャッシュの識別にさらに応答する、請求項25に記載の方法。
【請求項２９】
前記読取りアドレスを備える前記メモリ読取り要求を受信するステップが、システムキャッシュにおけるミスに応答する、
請求項25に記載の方法。
【請求項３０】
前記システムメモリDRAM内で前記読取りアドレスにおける前記データを読み取るステップの後、前記DRAMキャッシュインジケータキャッシュを確率的に補充するステップをさらに含む、請求項25に記載の方法。
【請求項３１】
前記DRAMキャッシュ内の前記読取りアドレスのためのウェイ番号が非0であるか否かを決定することによって、前記読取りアドレスが前記DRAMキャッシュ内で見つかるか否かを、前記DRAMキャッシュインジケータキャッシュに基づいて決定するステップをさらに含む、請求項25に記載の方法。
【請求項３２】
書込みアドレスと、クリーンなエビクト済みデータを備える書込みデータとを備える、メモリ書込み要求を、システムキャッシュから受信するステップと、
前記書込みアドレスが前記DRAMキャッシュ内で見つかるか否かを決定するステップと、
前記書込みアドレスが前記DRAMキャッシュ内で見つからないという決定に応答して、前記書込みアドレスと前記クリーンなエビクト済みデータとを前記DRAMキャッシュに確率的に書き込むステップと
をさらに含む、請求項25に記載の方法。
【請求項３３】
前記書込みアドレスが前記DRAMキャッシュ内で見つかるか否かを決定するステップより前に、
前記書込みアドレスが前記DRAMキャッシュインジケータキャッシュ内で見つかるか否かを決定するステップと、
前記書込みアドレスが前記DRAMキャッシュインジケータキャッシュ内で見つからないという決定に応答して、前記DRAMキャッシュインジケータキャッシュを確率的に補充するステップと
をさらに含み、
前記書込みアドレスが前記DRAMキャッシュ内で見つかるか否かを決定するステップが、前記DRAMキャッシュインジケータキャッシュの補充に応答する、請求項32に記載の方法。
【請求項３４】
前記DRAMキャッシュからエビクトされるべきウェイを選択するステップと、
前記DRAMキャッシュから、前記選択されたウェイのメモリアドレスを読み取るステップと、
前記書込みアドレスと前記クリーンなエビクト済みデータとを、前記DRAMキャッシュ内の前記選択されたウェイに書き込むステップと、
前記DRAMキャッシュインジケータキャッシュ内の前記書込みアドレスのためのウェイ番号を、前記選択されたウェイのウェイ番号に更新するステップと、
前記選択されたウェイの前記メモリアドレスが前記DRAMキャッシュインジケータキャッシュ内に存在するか否かを決定するステップと、
前記選択されたウェイの前記メモリアドレスが前記DRAMキャッシュインジケータキャッシュ内に存在するという決定に応答して、前記DRAMキャッシュインジケータキャッシュ内の前記メモリアドレスのための前記選択されたウェイの前記ウェイ番号をリセットするステップと
を行うことによって、前記書込みアドレスと前記クリーンなエビクト済みデータとを前記DRAMキャッシュに確率的に書き込むステップを含む、請求項32に記載の方法。
【請求項３５】
前記メモリアドレスに対応する、前記選択されたウェイのマスタテーブルエントリを、前記システムメモリDRAM内のマスタテーブルから読み取るステップと、
前記マスタテーブルエントリに基づいて、前記メモリアドレスのための前記選択されたウェイの前記ウェイ番号を、前記DRAMキャッシュインジケータキャッシュに書き込むステップと
を行うことによって、前記選択されたウェイの前記メモリアドレスが前記DRAMキャッシュインジケータキャッシュ内に存在しないという決定に応答して、前記DRAMキャッシュインジケータキャッシュを補充するステップをさらに含む、請求項34に記載の方法。
【請求項３６】
前記選択されたウェイの前記メモリアドレスが前記DRAMキャッシュインジケータキャッシュ内に存在しないという決定に応答して、
前記メモリアドレスに対応する、前記選択されたウェイの前記ウェイ番号をリセットするステップと、
前記ウェイ番号を前記システムメモリDRAM内のマスタテーブルに書き込むステップと
をさらに含む、請求項34に記載の方法。
【請求項３７】
前記DRAMキャッシュ管理回路が、ライトスルーモードで動作するように構成され、前記方法が、
書込みアドレスと、ダーティなエビクト済みデータを備える書込みデータとを備える、メモリ書込み要求を、システムキャッシュから受信するステップと、
前記書込みアドレスが前記DRAMキャッシュ内で見つかるか否かを決定するステップと、
前記書込みアドレスが前記DRAMキャッシュ内で見つからないという決定に応答して、前記書込みアドレスと前記ダーティなエビクト済みデータとを前記DRAMキャッシュに確率的に書き込むステップと、
前記書込みアドレスが前記DRAMキャッシュ内で見つかるという決定に応答して、前記ダーティなエビクト済みデータを前記DRAMキャッシュに書き込むステップと、
前記ダーティなエビクト済みデータを前記システムメモリDRAMに書き込むステップと
をさらに含む、請求項25に記載の方法。
【請求項３８】
前記書込みアドレスが前記DRAMキャッシュ内で見つかるか否かを決定するステップより前に、
前記書込みアドレスが前記DRAMキャッシュインジケータキャッシュ内で見つかるか否かを決定するステップと、
前記書込みアドレスが前記DRAMキャッシュインジケータキャッシュ内で見つからないという決定に応答して、前記DRAMキャッシュインジケータキャッシュを確率的に補充するステップと、
前記DRAMキャッシュインジケータキャッシュの非補充に応答して、
前記システムメモリDRAM内のマスタテーブル内の前記書込みアドレスに対応するDRAMキャッシュインジケータを更新するステップと、
前記ダーティなエビクト済みデータを前記DRAMキャッシュに書き込むステップと
をさらに含み、
前記書込みアドレスが前記DRAMキャッシュ内で見つかるか否かを決定するステップが、前記DRAMキャッシュインジケータキャッシュの補充に応答する、請求項37に記載の方法。
【請求項３９】
前記書込みアドレスと前記ダーティなエビクト済みデータとを、前記DRAMキャッシュに確率的に書き込むステップが、
前記DRAMキャッシュからエビクトされるべきウェイを選択するステップと、
前記DRAMキャッシュから、前記選択されたウェイのメモリアドレスを読み取るステップと、
前記書込みアドレスと前記ダーティなエビクト済みデータとを、前記DRAMキャッシュ内の前記選択されたウェイに書き込むステップと、
前記DRAMキャッシュインジケータキャッシュ内の前記書込みアドレスのためのウェイ番号を、前記選択されたウェイのウェイ番号に更新するステップと、
前記選択されたウェイの前記メモリアドレスが前記DRAMキャッシュインジケータキャッシュ内に存在するか否かを決定するステップと、
前記選択されたウェイの前記メモリアドレスが前記DRAMキャッシュインジケータキャッシュ内に存在するという決定に応答して、前記DRAMキャッシュインジケータキャッシュ内の前記メモリアドレスのための前記選択されたウェイの前記ウェイ番号をリセットするステップと
を含む、請求項37に記載の方法。
【請求項４０】
前記メモリアドレスに対応する、前記選択されたウェイのマスタテーブルエントリを読み取るステップと、
前記マスタテーブルエントリに基づいて、前記メモリアドレスのための前記選択されたウェイの前記ウェイ番号を、前記DRAMキャッシュインジケータキャッシュに書き込むステップと
を行うことによって、前記選択されたウェイの前記メモリアドレスが前記DRAMキャッシュインジケータキャッシュ内に存在しないという決定に応答して、前記DRAMキャッシュインジケータキャッシュを補充するステップをさらに含む、請求項39に記載の方法。
【請求項４１】
前記選択されたウェイの前記メモリアドレスが前記DRAMキャッシュインジケータキャッシュ内に存在しないという決定に応答して、
前記メモリアドレスに対応する、前記選択されたウェイの前記ウェイ番号をリセットするステップと、
前記ウェイ番号を前記システムメモリDRAM内のマスタテーブルに書き込むステップと
をさらに含む、請求項39に記載の方法。
【請求項４２】
前記DRAMキャッシュ管理回路が、ライトバックモードで動作するように構成され、前記方法が、
書込みアドレスと、ダーティなエビクト済みデータを備える書込みデータとを備える、メモリ書込み要求を、システムキャッシュから受信するステップと、
前記書込みアドレスが前記DRAMキャッシュ内で見つかるか否かを決定するステップと、
前記書込みアドレスが前記DRAMキャッシュ内で見つからないという決定に応答して、前記書込みアドレスと前記ダーティなエビクト済みデータとを前記DRAMキャッシュに確率的に書き込むステップと、
前記DRAMキャッシュへの前記書込みアドレスと前記ダーティなエビクト済みデータとの非書込みに応答して、前記ダーティなエビクト済みデータを前記システムメモリDRAMに書き込むステップと、
前記書込みアドレスが前記DRAMキャッシュ内で見つかるという決定に応答して、前記ダーティなエビクト済みデータを前記DRAMキャッシュに書き込むステップと
をさらに含む、請求項25に記載の方法。
【請求項４３】
前記書込みアドレスが前記DRAMキャッシュ内で見つかるか否かを決定するステップより前に、
前記書込みアドレスが前記DRAMキャッシュインジケータキャッシュ内で見つかるか否かを決定するステップと、
前記書込みアドレスが前記DRAMキャッシュインジケータキャッシュ内で見つからないという決定に応答して、前記DRAMキャッシュインジケータキャッシュを確率的に補充するステップと、
前記DRAMキャッシュインジケータキャッシュの非補充に応答して、
前記システムメモリDRAM内のマスタテーブル内の前記書込みアドレスに対応するDRAMキャッシュインジケータを更新するステップと、
前記ダーティなエビクト済みデータを前記システムメモリDRAMに書き込むステップと、
前記マスタテーブルからの前記書込みアドレスのための前記DRAMキャッシュインジケータが、前記書込みアドレスが前記DRAMキャッシュ内にあることを示すか否かを決定するステップと
をさらに含み、
前記書込みアドレスが前記DRAMキャッシュ内で見つかるか否かを決定するステップが、前記DRAMキャッシュインジケータキャッシュの補充に応答する、請求項42に記載の方法。
【請求項４４】
前記書込みアドレスと前記ダーティなエビクト済みデータとを、前記DRAMキャッシュに確率的に書き込むステップが、
前記DRAMキャッシュからエビクトされるべきウェイを選択するステップと、
前記DRAMキャッシュから、前記選択されたウェイのメモリアドレスを読み取るステップと、
前記DRAMキャッシュから、前記選択されたウェイの前記メモリアドレスを読み取るステップの後、前記書込みアドレスと前記ダーティなエビクト済みデータとを前記DRAMキャッシュ内の前記選択されたウェイに書き込むステップと、
前記DRAMキャッシュインジケータキャッシュ内の前記書込みアドレスのためのウェイ番号を、前記選択されたウェイのウェイ番号に更新するステップと、
前記DRAMキャッシュインジケータキャッシュ内の前記書込みアドレスのためのダーティインジケータを設定するステップと、
前記選択されたウェイの前記メモリアドレスが前記DRAMキャッシュインジケータキャッシュ内に存在するか否かを決定するステップと、
前記選択されたウェイの前記メモリアドレスが前記DRAMキャッシュインジケータキャッシュ内に存在するという決定に応答して、前記DRAMキャッシュインジケータキャッシュ内の前記書込みアドレスのための前記選択されたウェイの前記ウェイ番号と前記ダーティインジケータとをリセットするステップと
を含む、請求項42に記載の方法。
【請求項４５】
前記メモリアドレスに対応する、前記選択されたウェイのマスタテーブルエントリを読み取るステップと、
前記マスタテーブルエントリに基づいて、前記メモリアドレスのための前記選択されたウェイの前記ウェイ番号を、前記DRAMキャッシュインジケータキャッシュに書き込むステップと
を行うことによって、前記選択されたウェイの前記メモリアドレスが前記DRAMキャッシュインジケータキャッシュ内に存在しないという決定に応答して、前記DRAMキャッシュインジケータキャッシュを補充するステップをさらに含む、請求項44に記載の方法。
【請求項４６】
前記選択されたウェイの前記メモリアドレスが前記DRAMキャッシュインジケータキャッシュ内に存在しないという決定に応答して、
前記メモリアドレスに対応する、前記選択されたウェイの前記ウェイ番号をリセットするステップと、
前記ウェイ番号を前記システムメモリDRAM内のマスタテーブルに書き込むステップと
をさらに含む、請求項44に記載の方法。
【請求項４７】
ダイナミックランダムアクセスメモリ(DRAM)キャッシュ管理回路であって、
読取りアドレスを備えるメモリ読取り要求を受信するための手段と、
前記読取りアドレスが、前記DRAMキャッシュ管理回路のDRAMキャッシュインジケータキャッシュ内で見つかるか否かを決定するための手段と、
前記読取りアドレスが前記DRAMキャッシュインジケータキャッシュ内で見つからないという決定に応答して、システムメモリDRAM内で前記読取りアドレスにおけるデータを読み取るための手段と、
前記読取りアドレスが前記DRAMキャッシュインジケータキャッシュ内で見つかるという決定に応答して、前記読取りアドレスが、高帯域幅メモリの一部であるDRAMキャッシュ内で見つかるか否かを、前記DRAMキャッシュインジケータキャッシュに基づいて決定するための手段と、
前記読取りアドレスが前記DRAMキャッシュ内で見つからないという決定に応答して、前記システムメモリDRAM内で前記読取りアドレスにおけるデータを読み取るための手段と、
前記読取りアドレスが前記DRAMキャッシュ内で見つかるという決定に応答して、前記読取りアドレスのためのデータを前記DRAMキャッシュから読み取るための手段と
を含む、ダイナミックランダムアクセスメモリ(DRAM)キャッシュ管理回路。
【発明の詳細な説明】
【技術分野】
【０００１】
優先権主張
本出願は、2016年2月22日に出願された「PROVIDING SCALABLE DYNAMIC RANDOM ACCESS MEMORY (DRAM) CACHE MANAGEMENT USING DRAM CACHE INDICATOR CACHES」と題する米国仮特許出願第62/298,088号の優先権を主張し、その内容は、その全体が参照により本明細書に組み込まれる。
【０００２】
本出願は、2016年8月4日に出願された「PROVIDING SCALABLE DYNAMIC RANDOM ACCESS MEMORY (DRAM) CACHE MANAGEMENT USING DRAM CACHE INDICATOR CACHES」と題する米国特許出願第15/228,320号の優先権を主張し、その内容は、その全体が参照により本明細書に組み込まれる。
【０００３】
本開示の技術は、一般に、ダイナミックランダムアクセスメモリ(DRAM)管理に関し、詳細には、DRAMキャッシュの管理に関する。
【背景技術】
【０００４】
垂直に相互接続されている複数の積層ダイから構成されるダイ積層型集積回路(IC)の出現が、ダイ積層型ダイナミックランダムアクセスメモリ(DRAM)の発展を可能にしている。ダイ積層型DRAMは、本明細書では「高帯域幅メモリ」と呼ばれるものを実装するために使用され得る。高帯域幅メモリは、同様のアクセスレイテンシを提供しながら、従来のシステムメモリDRAMよりも高い帯域幅を提供する。いくつかの実装形態では、高帯域幅メモリはまた、「ニア」メモリ、または、他のシステムメモリDRAMよりもメモリインターフェースのより近くに物理的に位置するメモリでもあり得る。以前にシステムメモリDRAMから読み取られ、非限定的な例としてレベル3(L3)キャッシュなどのより高いレベルのキャッシュからエビクトされた、頻繁にアクセスされるデータを記憶するために、DRAMキャッシュを実装するために高帯域幅メモリが使用され得る。高帯域幅メモリの中にDRAMキャッシュを設けることによって、システムメモリDRAMにおけるメモリ競合が低減し得、したがって、事実上、全体的なメモリ帯域幅が増大し得る。
【０００５】
しかしながら、高帯域幅メモリの中でのDRAMキャッシュの管理は、課題を生じることがある。DRAMキャッシュは、サイズにおける桁数がシステムメモリDRAMよりも小さいことがある。したがって、DRAMキャッシュがシステムメモリDRAMの中のデータのサブセットしか記憶できないので、DRAMキャッシュの効率的な使用は、記憶すべきメモリアドレスの知的な選択によって決まる。したがって、DRAMキャッシュ管理メカニズムは、どのメモリアドレスがDRAMキャッシュの中に選択的にインストールされるべきかを決定することが可能であるべきであり、いつメモリアドレスがDRAMキャッシュの中にインストールされるべきか、かつ/またはDRAMキャッシュからエビクトされるべきかを、さらに決定することが可能であるべきである。DRAMキャッシュ管理メカニズムが、DRAMキャッシュにとってのアクセスレイテンシへの影響を最小限に抑えること、ならびにDRAMキャッシュサイズおよび/またはシステムメモリDRAMサイズに関してスケーラブルであることも、望ましいことがある。
【０００６】
DRAMキャッシュ管理に対するいくつかの手法は、従来のキャッシュが管理され得る方法と同様に、キャッシュされたメモリアドレスに対応するタグを記憶するためのキャッシュを利用する。1つのそのような手法の下では、高帯域幅メモリとは別個の、コンピュートダイ(Compute Die)上のスタティックランダムアクセスメモリ(SRAM)内に、DRAMキャッシュに関連付けられたタグのすべてが記憶される。しかしながら、より大きいDRAMキャッシュサイズは、SRAM内に記憶するように望まれない、かつ/またはSRAM内に記憶するには大きすぎる、タグのためにより大きいエリアを必要とし得るので、この手法は、DRAMキャッシュサイズにとって十分にスケーラブルではないことがある。別の手法は、コンピュートダイ上のSRAM内ではなく、DRAMキャッシュ自体内にタグを配置すること、および所与のメモリアドレスがDRAMキャッシュ内に記憶されているか否かを決定するためのヒット/ミス予測器を使用することを伴う。この後者の手法は、コンピュートダイ内のSRAMの使用量を最小限に抑えるが、誤った予測があると、データがシステムメモリDRAMから読み取られる結果となる。たとえば、ヒット/ミス予測器が、メモリアドレスがDRAMキャッシュ内に位置すると誤って予測する場合、システムメモリDRAMからメモリアドレスを読み取る前に、DRAMキャッシュへの不必要な読取りから、レイテンシペナルティを招く。逆に、ヒット/ミス予測器が、メモリアドレスがDRAMキャッシュ内に位置していないと誤って予測する場合、システムメモリDRAMへの不必要な読取りを回避するための機会が無駄にされることがある。不必要な追加の読取りは、さらなるアクセスレイテンシを招き、DRAMキャッシュを使用することから得られるいかなる性能改善をも無効にし得る。
【０００７】
したがって、SRAM消費とレイテンシペナルティとを最小限に抑えながらメモリ帯域幅を改善するために、スケーラブルDRAMキャッシュ管理を提供することが望ましい。
【発明の概要】
【課題を解決するための手段】
【０００８】
発明を実施するための形態で開示する態様は、ダイナミックランダムアクセスメモリ(DRAM)キャッシュインジケータキャッシュを使用するスケーラブルDRAMキャッシュ管理を提供することを含む。いくつかの態様では、高帯域幅メモリ内のDRAMキャッシュへのアクセスを管理するために、DRAMキャッシュ管理回路が提供される。DRAMキャッシュ管理回路は、DRAMキャッシュインジケータキャッシュを備え、DRAMキャッシュインジケータキャッシュは、DRAMキャッシュインジケータを含み、システムメモリDRAM内のマスタテーブルから読み取られる、マスタテーブルエントリをキャッシュするために使用される。DRAMキャッシュインジケータは、システムメモリDRAM内のメモリラインがDRAMキャッシュ内にキャッシュされている(すなわち、高帯域幅メモリを使用して実装されている)か否か、および、そうである場合、DRAMキャッシュのどのウェイ内にメモリラインが記憶されているかを、DRAMキャッシュ管理回路が決定することを可能にする。DRAMキャッシュインジケータキャッシュに基づいて、DRAMキャッシュ管理回路は、メモリ動作がDRAMキャッシュを使用して、かつ/またはシステムメモリDRAMを使用して実行され得るか否かを決定することができる。DRAMキャッシュ管理回路のいくつかの態様は、負荷分散回路をさらに提供し得る。データがDRAMキャッシュまたはシステムメモリDRAMのいずれかから読み取られ得る環境では、DRAMキャッシュ管理回路は、負荷分散回路を使用して、そこからデータを読み取るべき適切なソースを選択し得る。
【０００９】
DRAMキャッシュ管理回路のさらなる態様は、ライトスルーモード(Write-Through Mode)またはライトバックモード(Write-Back Mode)で動作するように構成され得る。後者の態様では、DRAMキャッシュインジケータキャッシュは、そこに記憶された各メモリラインのためのダーティビットを提供し得る。いくつかの態様では、DRAMキャッシュおよび/またはDRAMキャッシュインジケータキャッシュは、DRAMキャッシュ管理回路による確率的決定に基づいて補充され得る。たとえば、DRAMキャッシュ管理回路は、わずかなパーセンテージのランダムに選択されたデータがDRAMキャッシュおよび/またはDRAMキャッシュインジケータキャッシュに書き込まれるように、DRAMキャッシュおよび/またはDRAMキャッシュインジケータキャッシュをランダムな間隔で補充するように構成され得る。
【００１０】
別の態様では、DRAMキャッシュ管理回路が提供される。DRAMキャッシュ管理回路は、高帯域幅メモリの一部であるDRAMキャッシュに通信可能に結合され、さらにシステムメモリDRAMに通信可能に結合される。DRAMキャッシュ管理回路は、DRAMキャッシュインジケータキャッシュを備え、DRAMキャッシュインジケータキャッシュは、システムメモリDRAM内のマスタテーブルから読み取られた複数のDRAMキャッシュインジケータをキャッシュするように構成される。複数のDRAMキャッシュインジケータは、システムメモリDRAMの対応するメモリラインがDRAMキャッシュ内にキャッシュされているか否かを示す。DRAMキャッシュ管理回路は、読取りアドレスを備えるメモリ読取り要求を受信するように構成される。DRAMキャッシュ管理回路は、読取りアドレスがDRAMキャッシュインジケータキャッシュ内で見つかるか否かを決定するようにさらに構成される。DRAMキャッシュ管理回路はまた、読取りアドレスがDRAMキャッシュインジケータキャッシュ内で見つからないという決定に応答して、システムメモリDRAM内で読取りアドレスにおけるデータを読み取るようにも構成される。DRAMキャッシュ管理回路は、追加として、読取りアドレスがDRAMキャッシュインジケータキャッシュ内で見つかるという決定に応答して、読取りアドレスがDRAMキャッシュ内で見つかるか否かを、DRAMキャッシュインジケータキャッシュに基づいて決定するように構成される。DRAMキャッシュ管理回路は、読取りアドレスがDRAMキャッシュ内で見つからないという決定に応答して、システムメモリDRAM内で読取りアドレスにおけるデータを読み取るようにさらに構成される。DRAMキャッシュ管理回路はまた、読取りアドレスがDRAMキャッシュ内で見つかるという決定に応答して、読取りアドレスのためのデータをDRAMキャッシュから読み取るようにも構成される。
【００１１】
別の態様では、スケーラブルDRAMキャッシュ管理を提供するための方法が提供される。方法は、DRAMキャッシュ管理回路によって、読取りアドレスを備えるメモリ読取り要求を受信するステップを含む。方法は、読取りアドレスが、DRAMキャッシュ管理回路のDRAMキャッシュインジケータキャッシュ内で見つかるか否かを決定するステップをさらに含む。方法はまた、読取りアドレスがDRAMキャッシュインジケータキャッシュ内で見つからないという決定に応答して、システムメモリDRAM内で読取りアドレスにおけるデータを読み取るステップを含む。方法は、追加として、読取りアドレスがDRAMキャッシュインジケータキャッシュ内で見つかるという決定に応答して、読取りアドレスが、高帯域幅メモリの一部であるDRAMキャッシュ内で見つかるか否かを、DRAMキャッシュインジケータキャッシュに基づいて決定するステップを含む。方法はまた、読取りアドレスがDRAMキャッシュ内で見つからないという決定に応答して、システムメモリDRAM内で読取りアドレスにおけるデータを読み取るステップを含む。方法は、追加として、読取りアドレスがDRAMキャッシュ内で見つかるという決定に応答して、読取りアドレスのためのデータをDRAMキャッシュから読み取るステップを含む。
【００１２】
別の態様では、DRAMキャッシュ管理回路が提供される。DRAMキャッシュ管理回路は、読取りアドレスを備えるメモリ読取り要求を受信するための手段を備える。DRAMキャッシュ管理回路は、読取りアドレスが、DRAMキャッシュ管理回路のDRAMキャッシュインジケータキャッシュ内で見つかるか否かを決定するための手段をさらに備える。DRAMキャッシュ管理回路はまた、読取りアドレスがDRAMキャッシュインジケータキャッシュ内で見つからないという決定に応答して、システムメモリDRAM内で読取りアドレスにおけるデータを読み取るための手段を備える。DRAMキャッシュ管理回路は、追加として、読取りアドレスがDRAMキャッシュインジケータキャッシュ内で見つかるという決定に応答して、読取りアドレスが、高帯域幅メモリの一部であるDRAMキャッシュ内で見つかるか否かを、DRAMキャッシュインジケータキャッシュに基づいて決定するための手段を備える。DRAMキャッシュ管理回路は、読取りアドレスがDRAMキャッシュ内で見つからないという決定に応答して、システムメモリDRAM内で読取りアドレスにおけるデータを読み取るための手段をさらに備える。DRAMキャッシュ管理回路はまた、読取りアドレスがDRAMキャッシュ内で見つかるという決定に応答して、読取りアドレスのためのデータをDRAMキャッシュから読み取るための手段を備える。
【００１３】
別の態様では、コンピュータ実行可能命令を記憶した非一時的コンピュータ可読媒体が提供される。プロセッサによって実行されるときに、コンピュータ実行可能命令は、プロセッサに、読取りアドレスを備えるメモリ読取り要求を受信することを行わせる。コンピュータ実行可能命令は、プロセッサに、読取りアドレスがDRAMキャッシュ管理回路のDRAMキャッシュインジケータキャッシュ内で見つかるか否かを決定することをさらに行わせる。コンピュータ実行可能命令はまた、プロセッサに、読取りアドレスがDRAMキャッシュインジケータキャッシュ内で見つからないという決定に応答して、システムメモリDRAM内で読取りアドレスにおけるデータを読み取ることを行わせる。コンピュータ実行可能命令は、追加として、プロセッサに、読取りアドレスがDRAMキャッシュインジケータキャッシュ内で見つかるという決定に応答して、読取りアドレスが、高帯域幅メモリの一部であるDRAMキャッシュ内で見つかるか否かを、DRAMキャッシュインジケータキャッシュに基づいて決定することを行わせる。コンピュータ実行可能命令は、プロセッサに、読取りアドレスがDRAMキャッシュ内で見つからないという決定に応答して、システムメモリDRAM内で読取りアドレスにおけるデータを読み取ることをさらに行わせる。コンピュータ実行可能命令はまた、プロセッサに、読取りアドレスがDRAMキャッシュ内で見つかるという決定に応答して、読取りアドレスのためのデータをDRAMキャッシュから読み取ることを行わせる。
【図面の簡単な説明】
【００１４】
【図１】ダイナミックランダムアクセスメモリ(DRAM)キャッシュを提供する高帯域幅メモリと、DRAMキャッシュインジケータキャッシュを使用するスケーラブルDRAMキャッシュ管理を提供するための例示的なDRAMキャッシュ管理回路とを含む、プロセッサベースシステムのブロック図である。
【図２Ａ】例示的なマスタテーブルエントリと、図1のDRAMキャッシュ管理回路によって管理され得る1つの例示的なDRAMキャッシュのためのDRAMキャッシュインジケータキャッシュの内容とを示す、ブロック図である。
【図２Ｂ】例示的なマスタテーブルエントリと、図1のDRAMキャッシュ管理回路によって管理され得る1つの例示的なDRAMキャッシュのためのDRAMキャッシュインジケータキャッシュの内容とを示す、ブロック図である。
【図３】図1のDRAMキャッシュインジケータキャッシュとDRAMキャッシュとを使用して読取り動作を実行するための、図1のDRAMキャッシュ管理回路の例示的な動作を示すフローチャートである。
【図４Ａ】ライトスルーモードまたはライトバックモードでレベル3(L3)キャッシュからの「クリーンな」(すなわち、修正されていない)データのエビクションから得られる書込み動作を実行するための、図1のDRAMキャッシュ管理回路の例示的な動作を示すフローチャートである。
【図４Ｂ】ライトスルーモードまたはライトバックモードでレベル3(L3)キャッシュからの「クリーンな」(すなわち、修正されていない)データのエビクションから得られる書込み動作を実行するための、図1のDRAMキャッシュ管理回路の例示的な動作を示すフローチャートである。
【図４Ｃ】ライトスルーモードまたはライトバックモードでレベル3(L3)キャッシュからの「クリーンな」(すなわち、修正されていない)データのエビクションから得られる書込み動作を実行するための、図1のDRAMキャッシュ管理回路の例示的な動作を示すフローチャートである。
【図５Ａ】ライトスルーモードでL3キャッシュからの「ダーティな」(すなわち、修正されている)データのエビクションから得られる書込み動作を実行するための、図1のDRAMキャッシュ管理回路の例示的な動作を示すフローチャートである。
【図５Ｂ】ライトスルーモードでL3キャッシュからの「ダーティな」(すなわち、修正されている)データのエビクションから得られる書込み動作を実行するための、図1のDRAMキャッシュ管理回路の例示的な動作を示すフローチャートである。
【図５Ｃ】ライトスルーモードでL3キャッシュからの「ダーティな」(すなわち、修正されている)データのエビクションから得られる書込み動作を実行するための、図1のDRAMキャッシュ管理回路の例示的な動作を示すフローチャートである。
【図６Ａ】ライトバックモードでL3キャッシュからのダーティなデータのエビクションから得られる書込み動作を実行するための、図1のDRAMキャッシュ管理回路の例示的な動作を示すフローチャートである。
【図６Ｂ】ライトバックモードでL3キャッシュからのダーティなデータのエビクションから得られる書込み動作を実行するための、図1のDRAMキャッシュ管理回路の例示的な動作を示すフローチャートである。
【図６Ｃ】ライトバックモードでL3キャッシュからのダーティなデータのエビクションから得られる書込み動作を実行するための、図1のDRAMキャッシュ管理回路の例示的な動作を示すフローチャートである。
【図６Ｄ】ライトバックモードでL3キャッシュからのダーティなデータのエビクションから得られる書込み動作を実行するための、図1のDRAMキャッシュ管理回路の例示的な動作を示すフローチャートである。
【図７】図1のDRAMキャッシュ管理回路を含み得る、例示的なプロセッサベースシステムのブロック図である。
【発明を実施するための形態】
【００１５】
次に、図面を参照して、本開示のいくつかの例示的な態様について説明する。「例示的」という語は、本明細書では「一例、事例、または例示としての働きをすること」を意味するために使用される。「例示的」として本明細書で説明するいずれの態様も、必ずしも他の態様よりも好適であるか、または有利であると解釈されるべきではない。
【００１６】
発明を実施するための形態で開示する態様は、ダイナミックランダムアクセスメモリ(DRAM)キャッシュインジケータキャッシュを使用するスケーラブルDRAMキャッシュ管理を提供することを含む。本明細書で説明するように、DRAMキャッシュ管理方式によって利用されるリソースのサイズが、管理されているDRAMキャッシュの容量とは相対的に無関係となるという意味で、DRAMキャッシュ管理方式は「スケーラブル」である。したがって、この点について、図1は、高帯域幅メモリ106の一部であるDRAMキャッシュ104を管理するためのDRAMキャッシュ管理回路102を提供する、例示的なプロセッサベースシステム100のブロック図である。プロセッサベースシステム100は、システムメモリDRAM108を含み、システムメモリDRAM108は、いくつかの態様では、1つまたは複数のデュアルインラインメモリモジュール(DIMM)(図示せず)を備え得る。プロセッサベースシステム100は、コンピュートダイ110をさらに提供し、コンピュートダイ110の上にシステムキャッシュ112(非限定的な例として、レベル3(L3)キャッシュなど)が配置される。プロセッサベースシステム100は、他の要素の中でも、知られているデジタル論理要素、半導体回路、処理コア、および/もしくはメモリ構造のうちのいずれか1つ、またはそれらの組合せを包含し得る。本明細書で説明する態様は、要素の任意の特定の構成に限定されず、開示する技法は、半導体ダイまたはパッケージ上の様々な構造およびレイアウトに容易に拡張され得る。プロセッサベースシステム100のいくつかの態様が、図1に示すものに加えて要素を含んでよいことを理解されたい。
【００１７】
メモリ帯域幅を改善するために、プロセッサベースシステム100の高帯域幅メモリ106内のDRAMキャッシュ104は、システムメモリDRAM108内のメモリライン114(0)〜114(X)から以前に読み取られ、かつ/またはシステムキャッシュ112からエビクトされた(Evicted)、メモリアドレス(図示せず)およびデータ(図示せず)をキャッシュするために使用され得る。非限定的な例として、いくつかの態様は、システムメモリDRAM108からデータを読み取るときのみ、DRAMキャッシュ104内にデータがキャッシュされ得ることを提供してよく、いくつかの態様では、データは、システムキャッシュ112からエビクトされたときのみ、DRAMキャッシュ104内にキャッシュされ得る。いくつかの態様によれば、プロセッサ負荷、およびシステムキャッシュ112からのダーティなエビクションによってトリガされる読取りに対して、データは、システムメモリDRAM108からデータを読み取るときにDRAMキャッシュ104内にキャッシュされ得る。
【００１８】
高帯域幅メモリ106内のDRAMキャッシュ104は、システムメモリDRAM108とは独立に、システムメモリDRAM108と並行してアクセスされ得る。その結果、メモリ帯域幅は、DRAMキャッシュ104とシステムメモリDRAM108の両方から同時に読み取ることによって事実上増大し得る。いくつかの態様では、DRAMキャッシュ104は、DRAMキャッシュ104内のエビクションの候補を決定するために、ランダムな置換ポリシーを実装し得る。
【００１９】
システムメモリDRAM108内に記憶されたマスタテーブル116は、システムメモリDRAM108のどのメモリライン114(0)〜114(X)がDRAMキャッシュ104内に記憶されるかを追跡するために使用される。本明細書で使用する、システムメモリDRAM108の「メモリライン」は、システムキャッシュ112のキャッシュライン(図示せず)の長さに等しい長さを有するシステムメモリDRAM108の一部分を指すことを理解されたい。マスタテーブル116は、システムメモリDRAM108のメモリライン114(0)〜114(X)の各々のための、DRAMキャッシュインジケータ120(0)〜120(X)を記憶するための、マスタテーブルエントリ118(0)〜118(M)を含む。いくつかの態様は、マスタテーブルエントリ118(0)〜118(M)の各々のサイズが、基礎をなすメモリのメモリアクセス粒度に対応することを提供し得る。非限定的な例として、64バイトのメモリアクセス粒度では、マスタテーブルエントリ118(0)〜118(M)の各々は、同様に64バイトを備える。したがって、DRAMキャッシュインジケータ120(0)〜120(X)の各々が4ビットを備える態様では、マスタテーブル116の64バイトのマスタテーブルエントリ118(0)〜118(M)の各々は、システムメモリDRAM108の128個のメモリライン114(0)〜114(X)のための、DRAMキャッシュインジケータ120(0)〜120(X)を記憶することができる。
【００２０】
いくつかの態様では、マスタテーブル116内のDRAMキャッシュインジケータ120(0)〜120(X)の各々は、システムメモリDRAM108の対応するメモリライン114(0)〜114(X)が高帯域幅メモリ106のDRAMキャッシュ104内に記憶されているか否かを示すのみでなく、DRAMキャッシュ104のどのウェイ(Way)122(0)〜122(Z)内に、対応するメモリライン114(0)〜114(X)が記憶されているかをも示す。たとえば、いくつかの態様では、DRAMキャッシュインジケータ120(0)〜120(X)の各々は、4ビットを備え、DRAMキャッシュ104は、15個のウェイ122(0)〜122(14)(すなわち、24-1)を提供し得る。0の値を有するDRAMキャッシュインジケータ120(0)〜120(X)は、システムメモリDRAM108の対応するメモリライン114(0)〜114(X)が、DRAMキャッシュ104内に記憶されていないことを示す。0よりも大きい値Nを有するDRAMキャッシュインジケータ120(0)〜120(X)は、システムメモリDRAM108の対応するメモリライン114(0)〜114(X)が、ウェイ122(N-1)内、ただし0≦N-1≦Zで、DRAMキャッシュ104内に記憶されていることを示す。
【００２１】
いくつかの態様では、マスタテーブル116のマスタテーブルエントリ118(0)〜118(M)は、DRAMキャッシュ104によって提供されるウェイ122(0)〜122(Z)の数に従って、4ビットよりも大きいまたは小さいDRAMキャッシュインジケータ120(0)〜120(X)を提供し得ることを理解されたい。非限定的な例として、各DRAMキャッシュインジケータ120(0)〜120(X)内のビットの数Qでは、DRAMキャッシュ104は、いくつかのウェイ122(0)〜122(Z)、ただしZ=2Q-1を提供し得る。したがって、2ビットを備えるDRAMキャッシュインジケータ120(0)〜120(X)は、3つのウェイ122(0)〜122(2)に編成されるDRAMキャッシュ104に対応するが、3ビットを備えるDRAMキャッシュインジケータ120(0)〜120(X)は、7つのウェイ122(0)〜122(6)を提供するDRAMキャッシュ104に対応する。DRAMキャッシュインジケータ120(0)〜120(X)およびDRAMキャッシュ104の異なる構成について、図2Aおよび図2Bに関して以下でさらに詳細に説明する。
【００２２】
マスタテーブル116のマスタテーブルエントリ118(0)〜118(M)は、システムメモリDRAM108内のあらゆるメモリライン114(0)〜114(X)のためのDRAMキャッシュインジケータ120(0)〜120(X)を記憶しているので、システムメモリDRAM108のサイズが増すにつれて、マスタテーブルの116のサイズが増す。たとえば、マスタテーブル116内のDRAMキャッシュインジケータ120(0)〜120(X)がそれぞれ4ビットである態様では、マスタテーブル116の合計サイズは、システムメモリDRAM108のサイズの0.4%である。したがって、メモリ動作ごとにマスタテーブル116にアクセスすることは、DRAMキャッシュ104を使用することの性能利点を相殺し得るレイテンシペナルティを招くことがある。したがって、レイテンシペナルティを最小限に抑えながらメモリ帯域幅を改善するために、DRAMキャッシュ104へのアクセスを管理するためのスケーラブルメカニズムを提供することが望ましい。
【００２３】
この点について、DRAMキャッシュ管理回路102は、DRAMキャッシュ104へのアクセスを管理するために提供される。DRAMキャッシュ管理回路102は、コンピュートダイ110の上に配置され、高帯域幅メモリ106およびシステムメモリDRAM108に通信可能に結合される。DRAMキャッシュ管理回路102はまた、システムキャッシュ112から読み取られ、それに書き込まれ得る。以下でより詳細に説明するように、DRAMキャッシュ管理回路102は、そこからデータを取り出すべきメモリアドレスを指定する読取りアドレス126を備えるメモリ読取り要求124の受信に応答して、メモリ読取り動作を実行し得る。いくつかの態様では、DRAMキャッシュ管理回路102は、そこへ書込みデータ132を書き込むべき書込みアドレス130を備えるメモリ書込み要求128の受信に応答して、メモリ書込み動作をさらに実行し得る。
【００２４】
マスタテーブル116へのアクセスから生じ得るアクセスレイテンシを低減するために、DRAMキャッシュ管理回路102は、DRAMキャッシュインジケータキャッシュ134を提供する。DRAMキャッシュインジケータキャッシュ134は、頻繁にアクセスされるマスタテーブルエントリ118(0)〜118(M)(および、その中に記憶されているDRAMキャッシュインジケータ120(0)〜120(X))を、DRAMキャッシュインジケータキャッシュライン138(0)〜138(Y)のウェイ136(0)〜136(C)、136'(0)〜136'(C)内にキャッシュするために、DRAMキャッシュ管理回路102によって使用される。いくつかの態様では、DRAMキャッシュインジケータキャッシュ134のウェイ136(0)〜136(C)、136'(0)〜136'(C)の各々のサイズは、マスタテーブル116内のマスタテーブルエントリ118(0)〜118(M)のサイズに対応する。いくつかの態様は、DRAMキャッシュインジケータキャッシュ134のウェイ136(0)〜136(C)、136'(0)〜136'(C)の各々のサイズが、マスタテーブル116内のマスタテーブルエントリ118(0)〜118(M)のサイズよりも大きくなり得ることを提供し得る。非限定的な例として、DRAMキャッシュインジケータキャッシュ134のウェイ136(0)〜136(C)、136'(0)〜136'(C)は、ダーティインジケータ140(0)〜140(C)、140'(0)〜140'(C)を含み得、ダーティインジケータ140(0)〜140(C)、140'(0)〜140'(C)は、ウェイ136(0)〜136(C)、136'(0)〜136'(C)ごとに1ビットを追加する。したがって、ウェイ136(0)〜136(C)、136'(0)〜136'(C)が64バイトのサイズであり、DRAMキャッシュインジケータ120(0)〜120(X)ごとに4ビットである態様では、合計128の余分のビットが、ダーティインジケータ140(0)〜140(C)、140'(0)〜140'(C)を提供するために必要とされ得る。
【００２５】
DRAMキャッシュ管理回路102のいくつかの態様は、メモリ帯域幅を改善し、メモリアクセス競合を低減するために、負荷分散回路142をさらに提供し得る。要求されるメモリアドレスがシステムメモリDRAM108またはDRAMキャッシュ104のいずれかから読み取られ得る環境では、負荷分散回路142は、そこからメモリアドレスを読み取るべき最も適切なソースを識別する。たとえば、いくつかの態様では、負荷分散回路142は、DRAMキャッシュ104およびシステムメモリDRAM108からの読取りのレイテンシを監視し得、最近の過去におけるより良い平均レイテンシを有するソースを選択し得る。このようにして、負荷分散回路142は、システムメモリDRAM108とDRAMキャッシュ104との間でメモリアクセスを分配して、システムリソースの使用を最適化し得る。
【００２６】
いくつかの態様では、DRAMキャッシュ管理回路102は、「ライトスルー」キャッシュ管理システムとして実装され得る。ライトスルー実装形態では、システムキャッシュ112からエビクトされたダーティな(すなわち、修正されている)データは、DRAMキャッシュ管理回路102によって、高帯域幅メモリ106のDRAMキャッシュ104とシステムメモリDRAM108の両方に書き込まれる。その結果、DRAMキャッシュ104内のデータおよびシステムメモリDRAM108内のデータは、常に同期される。ライトスルー実装形態におけるDRAMキャッシュ104とシステムメモリDRAM108の両方が正しいデータを含むことを保証されるので、DRAMキャッシュ管理回路102の負荷分散回路142は、DRAMキャッシュ104とシステムメモリDRAM108との間でメモリ読取り動作を自由に負荷分散させ得る。しかしながら、DRAMキャッシュ104への各書込みがシステムメモリDRAM108への書込みに対応することになるので、DRAMキャッシュ管理回路102のライトスルー実装形態は、システムメモリDRAM108への書込み帯域幅の低減をもたらさないことがある。
【００２７】
DRAMキャッシュ管理回路102のいくつかの態様は、「ライトバック」キャッシュ管理システムとして実装され得、「ライトバック」キャッシュ管理システムにおいて、DRAMキャッシュ管理回路102のDRAMキャッシュインジケータキャッシュ134は、その中の各ウェイ136(0)〜136(C)、136'(0)〜136'(C)のためのダーティインジケータ140(0)〜140(C)、140'(0)〜140'(C)を含む。ダーティインジケータ140(0)〜140(C)、140'(0)〜140'(C)の各々は、DRAMキャッシュインジケータキャッシュ134内のウェイ136(0)〜136(C)、136'(0)〜136'(C)に対応する、DRAMキャッシュ104内に記憶されたデータが、ダーティであるか否か(すなわち、データがDRAMキャッシュ104に書き込まれたが、システムメモリDRAM108には書き込まれなかったか否か)を示す。データがダーティではない場合、データは、DRAMキャッシュ管理回路102の負荷分散回路142によって決定されるように、DRAMキャッシュ104またはシステムメモリDRAM108のいずれかから読み取られ得る。しかしながら、ダーティインジケータ140(0)〜140(C)、140'(0)〜140'(C)が、DRAMキャッシュ104内に記憶されたデータがダーティであることを示す場合、DRAMキャッシュ104が、修正されているデータのための唯一のソースであるので、負荷分散は可能ではない。したがって、DRAMキャッシュ管理回路102は、DRAMキャッシュ104からダーティデータを読み取る。
【００２８】
DRAMキャッシュ管理回路102のライトバック実装形態は、システムメモリDRAM108へのメモリ書込み帯域幅消費を低減し得るが、DRAMキャッシュ管理回路102は、DRAMキャッシュ104からエビクトされたダーティデータを最終的にシステムメモリDRAM108にライトバックしなければならない。DRAMキャッシュ管理回路102のライトバック実装形態のいくつかの態様では、DRAMキャッシュインジケータキャッシュライン138(0)〜138(Y)がDRAMキャッシュインジケータキャッシュ134からエビクトされたとき、DRAMキャッシュ管理回路102は、エビクトされたDRAMキャッシュインジケータキャッシュライン138(0)〜138(Y)に対応する、DRAMキャッシュ104内のすべてのダーティデータを、システムメモリDRAM108にコピーするように構成される。
【００２９】
DRAMキャッシュ管理回路102のいくつかの態様は、DRAMキャッシュ管理回路102によって行われる対応する確率的決定に従って、いくつかの動作(たとえば、非限定的な例として、システムメモリDRAM108および/もしくはDRAMキャッシュ104へのメモリアクセスを伴う動作)を実行することによって、メモリ帯域幅をさらに改善し得る。各確率的決定は、対応する動作の頻度を同調させるために使用されてよく、ステートレスであり得る(すなわち、以前の確率的決定の結果に関係しない)。たとえば、DRAMキャッシュ管理回路102のいくつかの態様によれば、システムキャッシュ112によってエビクトされた、わずかなパーセンテージのランダムに選択されたデータがDRAMキャッシュ104に書き込まれるような確率的決定に基づいて、システムキャッシュ112によってエビクトされたデータがDRAMキャッシュ104に書き込まれてよい。同様に、DRAMキャッシュ管理回路102のいくつかの態様は、確率的決定に基づいて、(たとえば、読取りデータのためのマスタテーブルエントリ118(0)〜118(M)を、マスタテーブル116からDRAMキャッシュインジケータキャッシュ134にコピーすることによって)DRAMキャッシュインジケータキャッシュ134を補充するように構成され得る。したがって、「確率的に」行われるものとして本明細書で説明する各動作が、所与の事例において実行されてもされなくてもよいこと、およびさらに所与の確率的動作としての動作が行われること、または行われないことが、DRAMキャッシュ管理回路102による追加の動作をさらにトリガしてよいことを理解されたい。
【００３０】
図1のDRAMキャッシュ104のいくつかの実装形態のための、例示的なマスタテーブルエントリ118(0)〜118(M)と、DRAMキャッシュインジケータ120(0)〜120(X)の内容とを例示するために、図2A〜図2Bが提供される。図2Aは、15個のウェイを備えるDRAMキャッシュ104の実装形態を示し、図2Bは、3つのウェイを備えるDRAMキャッシュ104の実装形態を示す。明快のために、図2Aおよび図2Bについて説明する際に図1の要素が参照される。
【００３１】
図2Aでは、64バイトのサイズを有する、例示的なマスタテーブルエントリ200(図1のマスタテーブルエントリ118(0)〜118(M)のうちの1つに対応し得る)が例示される。マスタテーブルエントリ200は、DRAMキャッシュインジケータ202(0)〜202(127)(図1のDRAMキャッシュインジケータ120(0)〜120(X)に対応する)を含み、その各々が4ビットのサイズである。したがって、マスタテーブルエントリ200は、システムメモリDRAM108の128個のメモリライン114(0)〜114(X)のためのDRAMキャッシュインジケータ202(0)〜202(127)を記憶している。DRAMキャッシュインジケータ202(0)〜202(127)をキャッシュするために、DRAMキャッシュインジケータキャッシュ134は、DRAMキャッシュインジケータキャッシュライン204(0)〜204(511)(図1のDRAMキャッシュインジケータキャッシュライン138(0)〜138(Y)に対応する)を提供する。DRAMキャッシュインジケータキャッシュライン204(0)〜204(511)の各々は、8つのウェイからなり、それぞれ、DRAMキャッシュインジケータキャッシュライン204(0)、204(511)のウェイ206(0)〜206(7)、208(0)〜208(7)などである。ウェイ206(0)〜206(7)、208(0)〜208(7)の各々は、図1のウェイ136(0)〜136(C)、136'(0)〜136'(C)に対応し、マスタテーブルエントリ200など、1つのマスタテーブルエントリを記憶し得る。
【００３２】
次に図2Bを参照すると、64バイトのマスタテーブルエントリ210が示されている。図2Bの例では、マスタテーブルエントリ210は、DRAMキャッシュインジケータ212(0)〜212(255)を含み、その各々が2ビットのサイズである。したがって、マスタテーブルエントリ210は、システムメモリDRAM108の256個のメモリラインのためのDRAMキャッシュインジケータ212(0)〜212(255)を記憶している。この例におけるDRAMキャッシュインジケータキャッシュ134は、DRAMキャッシュインジケータ212(0)〜212(255)をキャッシュするために、DRAMキャッシュインジケータキャッシュライン214(0)〜214(511)を提供する。DRAMキャッシュインジケータキャッシュライン214(0)〜214(511)の各々は、8つのウェイからなり、それぞれ、DRAMキャッシュインジケータキャッシュライン214(0)〜214(511)のウェイ216(0)〜216(7)、218(0)〜218(7)などである。ウェイ216(0)〜216(7)、218(0)〜218(7)の各々は、マスタテーブルエントリ210など、1つのマスタテーブルエントリを記憶し得る。
【００３３】
図3は、図1のDRAMキャッシュインジケータキャッシュ134とDRAMキャッシュ104とを使用して読取り動作を実行するための、図1のDRAMキャッシュ管理回路102の例示的な動作を示すフローチャートである。明快のために、図3について説明する際に図1の要素が参照される。図3では、DRAMキャッシュ管理回路102が、(たとえば、システムキャッシュ112上のミスの結果として)読取りアドレス126を備えるメモリ読取り要求124を受信することで、動作が始まる(ブロック300)。したがって、DRAMキャッシュ管理回路102は、本明細書で「読取りアドレスを備えるメモリ読取り要求を受信するための手段」と呼ばれることがある。DRAMキャッシュ管理回路102は、読取りアドレス126がDRAMキャッシュ管理回路102のDRAMキャッシュインジケータキャッシュ134内で見つかるか否かを決定する(ブロック302)。したがって、DRAMキャッシュ管理回路102は、本明細書で「読取りアドレスがDRAMキャッシュ管理回路のDRAMキャッシュインジケータキャッシュ内で見つかるか否かを決定するための手段」と呼ばれることがある。
【００３４】
メモリ読取り要求124の読取りアドレス126が、DRAMキャッシュインジケータキャッシュ134内で見つからない場合、DRAMキャッシュ管理回路102は、システムメモリDRAM108内で読取りアドレス126におけるデータを読み取る(ブロック304)。この点について、DRAMキャッシュ管理回路102は、本明細書で「読取りアドレスがDRAMキャッシュインジケータキャッシュ内で見つからないという決定に応答して、システムメモリDRAM内で読取りアドレスにおけるデータを読み取るための手段」と呼ばれることがある。読取りアドレス126におけるデータの読取りと並行して、DRAMキャッシュ管理回路102のいくつかの態様は、DRAMキャッシュインジケータキャッシュ134を確率的に補充し得る(ブロック306)。DRAMキャッシュインジケータキャッシュ134を補充することによって、後続の読取り(読取りデータに空間的に隣接し得る)がDRAMキャッシュインジケータキャッシュ134ヒットを生じることになる見込みが増し得る。
【００３５】
いくつかの態様において、DRAMキャッシュインジケータキャッシュ134を確率的に補充することは、非限定的な例として、読取りデータのためのマスタテーブルエントリ118(0)〜118(M)を、マスタテーブル116からDRAMキャッシュインジケータキャッシュ134にコピーすることを含み得る。いくつかの態様は、DRAMキャッシュインジケータキャッシュ134を補充するためのブロック306の動作が、システムメモリDRAM108内のマスタテーブル116から、読取りアドレス126に及ぶマスタテーブルエントリ118(0)〜118(M)を読み取ることを含み得ることを提供し得る。次いで、マスタテーブルエントリ118(0)〜118(M)は、DRAMキャッシュインジケータキャッシュ134内にインストールされる。マスタテーブルエントリ118(0)〜118(M)のインストールが、DRAMキャッシュインジケータキャッシュ134からのウェイ136(0)〜136(C)、136'(0)〜136'(C)のうちのエビクションを引き起こす場合、エビクトされたウェイ136(0)〜136(C)、136'(0)〜136'(C)の内容が(存在し得るいかなるダーティインジケータ140(0)-140(C)、140'(0)〜140'(C)もなしに)、システムメモリDRAM108内のマスタテーブル116に書き込まれる。DRAMキャッシュ管理回路102がライトバックモードで動作するように構成される態様では、エビクトされたウェイ136(0)〜136(C)、136'(0)〜136'(C)によって示されたいかなるダーティDRAMキャッシュラインもまた、DRAMキャッシュ104からシステムメモリDRAM108にコピーされる。
【００３６】
決定ブロック302で、DRAMキャッシュ管理回路102が、読取りアドレス126がDRAMキャッシュインジケータキャッシュ134内で見つかると決定する場合、DRAMキャッシュ管理回路102は、次に、読取りアドレス126が、高帯域幅メモリ106の一部であるDRAMキャッシュ104内で見つかるか否かを、DRAMキャッシュインジケータキャッシュ134に基づいて決定する(ブロック308)。したがって、DRAMキャッシュ管理回路102は、本明細書で「読取りアドレスがDRAMキャッシュインジケータキャッシュ内で見つかるという決定に応答して、読取りアドレスが、高帯域幅メモリの一部であるDRAMキャッシュ内で見つかるか否かを、DRAMキャッシュインジケータキャッシュに基づいて決定するための手段」と呼ばれることがある。いくつかの態様では、読取りアドレス126がDRAMキャッシュ104内で見つかるか否かを決定することは、DRAMキャッシュインジケータキャッシュ134内の読取りアドレス126のためのウェイ番号が非0であるか否かを決定することを含み得る。そうである場合、読取りアドレス126は、DRAMキャッシュ104内にある。そうでない場合、DRAMキャッシュインジケータキャッシュ134内の読取りアドレス126のためのウェイ番号が0である場合、読取りアドレス126は、DRAMキャッシュ104内にはない。
【００３７】
読取りアドレス126がDRAMキャッシュ104内で見つからない場合、DRAMキャッシュ管理回路102は、システムメモリDRAM108内で読取りアドレス126におけるデータを読み取る(ブロック310)。DRAMキャッシュ管理回路102は、したがって、本明細書で「読取りアドレスがDRAMキャッシュ内で見つからないという決定に応答して、システムメモリDRAM内で読取りアドレスにおけるデータを読み取るための手段」と呼ばれることがある。しかしながら、決定ブロック308で、DRAMキャッシュ管理回路102が、読取りアドレス126がDRAMキャッシュ104内で見つかると決定する場合、DRAMキャッシュ管理回路102は、いくつかの態様では、DRAMキャッシュ104内の読取りアドレス126のためのデータがクリーンであるか否か(または、代替的に、DRAMキャッシュ管理回路102がライトスルーモードで動作するように構成されるか否か)を決定する(ブロック312)。DRAMキャッシュ104内のデータがクリーンではない、および/または、DRAMキャッシュ管理回路102がライトスルーモードで動作中ではない場合、要求されたデータは、DRAMキャッシュ104からのみ安全に読み取られ得る。したがって、DRAMキャッシュ管理回路102は、読取りアドレス126のためのデータをDRAMキャッシュ104から読み取る(ブロック314)。この点について、DRAMキャッシュ管理回路102は、本明細書で「読取りアドレスがDRAMキャッシュ内で見つかるという決定に応答して、読取りアドレスのためのデータをDRAMキャッシュから読み取るための手段」と呼ばれることがある。
【００３８】
DRAMキャッシュ管理回路102が、決定ブロック312で、DRAMキャッシュ104内のデータがクリーンである、および/または、DRAMキャッシュ管理回路102がライトスルーモードで動作中であると決定する場合、要求されたデータは、システムメモリDRAM108またはDRAMキャッシュ104のいずれかから安全に読み取られ得る。したがって、DRAMキャッシュ管理回路102の負荷分散回路142は、非限定的な例として、帯域幅およびレイテンシなど、負荷分散基準に基づいて、DRAMキャッシュ104およびシステムメモリDRAM108の中から、好適なデータソースを識別する(ブロック316)。負荷分散回路142が、システムメモリDRAM108が好適なデータソースであると決定する場合、読取りアドレス126におけるデータが、システムメモリDRAM108から読み取られ得る(ブロック318)。同様に、負荷分散回路142が、DRAMキャッシュ104が好適なデータソースであると決定する場合、読取りアドレス126のためのデータが、DRAMキャッシュ104から読み取られ得る(ブロック320)。
【００３９】
ライトスルーモードまたはライトバックモードで、システムキャッシュ112からのクリーンな(すなわち、修正されていない)データのエビクションから得られる書込み動作を実行するための、図1のDRAMキャッシュ管理回路102の例示的な動作を示すために、図4A〜図4Cが提供される。明快のために、図4A〜図4Cについて説明する際に図1の要素が参照される。図4Aにおける動作は、DRAMキャッシュ管理回路102が、書込みアドレス130と書込みデータ132とを備えるメモリ書込み要求128を受信することで始まる(ブロック400)。この例では、書込みデータ132は、システムキャッシュ112からエビクトされたクリーンな(すなわち、修正されていない)データを表し、したがって、本明細書では「クリーンなエビクト済みデータ132(Clean Evicted Data 132)」と呼ばれる。
【００４０】
DRAMキャッシュ管理回路102は、クリーンなエビクト済みデータ132の書込みアドレス130がDRAMキャッシュインジケータキャッシュ134内で見つかるか否かを決定する(ブロック402)。書込みアドレス130がDRAMキャッシュインジケータキャッシュ134内に存在しない場合、DRAMキャッシュ管理回路102は、(たとえば、マスタテーブルエントリ118(0)〜118(M)を、マスタテーブル116からDRAMキャッシュインジケータキャッシュ134にコピーすることによって)DRAMキャッシュインジケータキャッシュ134を確率的に補充する(ブロック404)。ブロック404で、DRAMキャッシュインジケータキャッシュ134が補充されない(すなわち、補充が発生しないと確率的に決定された)場合、処理は完了する(ブロック406)。そうでない場合、DRAMキャッシュ管理回路102は、ブロック408で処理を再開する。
【００４１】
DRAMキャッシュ管理回路102が、決定ブロック402で、クリーンなエビクト済みデータ132の書込みアドレス130がDRAMキャッシュインジケータキャッシュ134内に存在すると決定する場合(または、DRAMキャッシュインジケータキャッシュ134がブロック404で補充される場合)、DRAMキャッシュ管理回路102は、次に、クリーンなエビクト済みデータ132の書込みアドレス130がDRAMキャッシュ104内に存在するか否かを決定する(ブロック408)。書込みアドレス130がDRAMキャッシュ104内に存在する場合、処理は完了する(ブロック406)。しかしながら、クリーンなエビクト済みデータ132の書込みアドレス130がDRAMキャッシュ104内に存在しない場合、処理は、図4Bのブロック410で再開する。
【００４２】
次に図4Bを参照すると、DRAMキャッシュ管理回路102は、次に、書込みアドレス130とクリーンなエビクト済みデータ132とをDRAMキャッシュ104に確率的に書き込む(ブロック410)。いくつかの態様では、書込みアドレス130とクリーンなエビクト済みデータ132とをDRAMキャッシュ104に書き込むためのブロック410の動作は、DRAMキャッシュ104からエビクトされるべきウェイ122(0)〜122(Z)を最初にランダムに選択することを含み得る(ブロック412)。DRAMキャッシュ管理回路102は、DRAMキャッシュ104から、選択されたウェイ122(0)〜122(Z)のメモリアドレスを読み取る(ブロック414)。DRAMキャッシュ管理回路102は、次いで、書込みアドレス130とクリーンなエビクト済みデータ132とを、DRAMキャッシュ104内の選択されたウェイ122(0)〜122(Z)に書き込む(ブロック416)。DRAMキャッシュ管理回路102は、DRAMキャッシュインジケータキャッシュ134内の書込みアドレス130のためのウェイ番号を、選択されたウェイ122(0)〜122(Z)のウェイ番号に更新する(ブロック418)。次いで、処理は、図4Cのブロック420で継続する。
【００４３】
図4Cを参照すると、書込みアドレス130とクリーンなエビクト済みデータ132とをDRAMキャッシュ104に確率的に書き込むためのブロック410のさらなる動作は、DRAMキャッシュ管理回路102が、選択されたウェイ122(0)〜122(Z)のメモリアドレスがDRAMキャッシュインジケータキャッシュ134内に存在するか否かを決定することを含む(ブロック420)。そうでない場合、処理は、図4Cのブロック424で再開する。DRAMキャッシュ管理回路102が、決定ブロック420で、選択されたウェイ122(0)〜122(Z)のメモリアドレスがDRAMキャッシュインジケータキャッシュ134内に存在すると決定する場合、DRAMキャッシュ管理回路102は、DRAMキャッシュインジケータキャッシュ134内のメモリアドレスのための選択されたウェイ122(0)〜122(Z)のウェイ番号をリセットする(ブロック422)。
【００４４】
DRAMキャッシュ管理回路102が、決定ブロック420で、選択されたウェイ122(0)〜122(Z)のメモリアドレスがDRAMキャッシュインジケータキャッシュ134内に存在しないと決定する場合、DRAMキャッシュ管理回路102は、DRAMキャッシュインジケータキャッシュ134を補充する(ブロック424)。いくつかの態様では、DRAMキャッシュインジケータキャッシュ134を補充するためのブロック424の動作は、システムメモリDRAM108内のマスタテーブル116から、メモリアドレスに対応する、選択されたウェイ122(0)〜122(Z)のマスタテーブルエントリ118(0)〜118(M)を読み取ることを含む(ブロック426)。DRAMキャッシュ管理回路102は、いくつかの態様では、次に、マスタテーブルエントリ118(0)〜118(M)に基づいて、メモリアドレスのための選択されたウェイ122(0)〜122(Z)のウェイ番号を、DRAMキャッシュインジケータキャッシュ134に書き込み得る(ブロック428)。いくつかの態様では、DRAMキャッシュ管理回路102は、メモリアドレスに対応する選択されたウェイ122(0)〜122(Z)のウェイ番号をリセットする(ブロック430)。次いで、DRAMキャッシュ管理回路102は、(DRAMキャッシュインジケータキャッシュ134内のマスタテーブルエントリ118(0)〜118(M)をインストールすることなしに)ウェイ番号をシステムメモリDRAM108内のマスタテーブル116に書き込む(ブロック432)。
【００４５】
図5A〜図5Cは、ライトスルーモードでシステムキャッシュ112からのダーティなデータのエビクションから得られる書込み動作を実行するための、図1のDRAMキャッシュ管理回路102の例示的な動作を示すために提供される。明快のために、図5A〜図5Cについて説明する際に図1の要素が参照される。図5Aでは、動作は、DRAMキャッシュ管理回路102が、書込みアドレス130と書込みデータ132とを備えるメモリ書込み要求128を受信することで始まる(ブロック500)。図5Aの例では、書込みデータ132は、システムキャッシュ112からエビクトされたダーティな(すなわち、修正されている)データを表し、結果として、本明細書では「ダーティなエビクト済みデータ132」と呼ばれる。
【００４６】
DRAMキャッシュ管理回路102は、ダーティなエビクト済みデータ132の書込みアドレス130がDRAMキャッシュインジケータキャッシュ134内で見つかるか否かを決定する(ブロック502)。書込みアドレス130がDRAMキャッシュインジケータキャッシュ134内に存在しない場合、DRAMキャッシュ管理回路102は、(非限定的な例として、マスタテーブルエントリ118(0)〜118(M)を、マスタテーブル116からDRAMキャッシュインジケータキャッシュ134にコピーすることによって)DRAMキャッシュインジケータキャッシュ134を確率的に補充する(ブロック504)。ブロック504で、DRAMキャッシュインジケータキャッシュ134が補充される(すなわち、補充が発生すると確率的に決定された)場合、処理はブロック506で再開する。そうでない場合、DRAMキャッシュ管理回路102は、(たとえば、DRAMキャッシュインジケータ120(0)〜120(X)のためのマスタテーブルエントリ118(0)〜118(M)において、読取り-修正-書込み(RMW)動作を実行することによって)システムメモリDRAM108内のマスタテーブル116内の書込みアドレス130に対応するDRAMキャッシュインジケータ120(0)〜120(X)を更新する(ブロック508)。次いで、DRAMキャッシュ管理回路102は、ダーティなエビクト済みデータ132をDRAMキャッシュ104に書き込む(ブロック510)。いくつかの態様では、DRAMキャッシュインジケータ120(0)〜120(X)を更新するためのブロック508の動作と、ダーティなエビクト済みデータ132をDRAMキャッシュ104に書き込むためのブロック510の動作とが、並行して実行され得ることを理解されたい。
【００４７】
DRAMキャッシュ管理回路102が、決定ブロック502で、ダーティなエビクト済みデータ132の書込みアドレス130がDRAMキャッシュインジケータキャッシュ134内で見つかると決定する場合(または、DRAMキャッシュインジケータキャッシュ134がブロック504で補充される場合)、DRAMキャッシュ管理回路102は、次に、ダーティなエビクト済みデータ132の書込みアドレス130がDRAMキャッシュ104内で見つかるか否かを決定する(ブロック506)。書込みアドレス130がDRAMキャッシュ104内で見つからない場合、処理は図5Bのブロック512で再開する。しかしながら、決定ブロック506で、DRAMキャッシュ管理回路102が、書込みアドレス130がDRAMキャッシュ104内で見つかると決定する場合、DRAMキャッシュ管理回路102は、(たとえば、DRAMキャッシュ104への非エビクト書込みを実行することによって)ダーティなエビクト済みデータ132をDRAMキャッシュ104に書き込む(ブロック514)。次いで、DRAMキャッシュ管理回路102は、ダーティなエビクト済みデータ132をシステムメモリDRAM108に書き込む(ブロック516)。
【００４８】
図5Bを参照すると、DRAMキャッシュ管理回路102は、次に、書込みアドレス130とダーティなエビクト済みデータ132とをDRAMキャッシュ104に確率的に書き込む(ブロック512)。いくつかの態様は、書込みアドレス130とダーティなエビクト済みデータ132とをDRAMキャッシュ104に書き込むためのブロック512の動作が、DRAMキャッシュ104からエビクトされるべきウェイ122(0)〜122(Z)を最初にランダムに選択することを含み得る(ブロック518)ことを提供し得る。選択されたウェイ122(0)〜122(Z)のメモリアドレスが、DRAMキャッシュ管理回路102によって、DRAMキャッシュ104から読み取られる(ブロック520)。DRAMキャッシュ管理回路102は、次いで、書込みアドレス130とダーティなエビクト済みデータ132とを、DRAMキャッシュ104内の選択されたウェイ122(0)〜122(Z)に書き込む(ブロック522)。DRAMキャッシュ管理回路102は、DRAMキャッシュインジケータキャッシュ134内の書込みアドレス130のためのウェイ番号を、選択されたウェイ122(0)〜122(Z)のウェイ番号に更新する(ブロック524)。次いで、処理は、図5Cのブロック526で継続する。
【００４９】
次に図5Cを参照すると、書込みアドレス130とダーティなエビクト済みデータ132とをDRAMキャッシュ104に確率的に書き込むためのブロック512のさらなる動作は、DRAMキャッシュ管理回路102が、選択されたウェイ122(0)〜122(Z)のメモリアドレスがDRAMキャッシュインジケータキャッシュ134内に存在するか否かを決定することを含む(ブロック526)。そうでない場合、処理は、図5Cのブロック528で再開する。DRAMキャッシュ管理回路102が、決定ブロック526で、選択されたウェイ122(0)〜122(Z)のメモリアドレスがDRAMキャッシュインジケータキャッシュ134内に存在すると決定する場合、DRAMキャッシュ管理回路102は、DRAMキャッシュインジケータキャッシュ134内のメモリアドレスのための選択されたウェイ122(0)〜122(Z)のウェイ番号をリセットする(ブロック530)。
【００５０】
DRAMキャッシュ管理回路102が、決定ブロック526で、選択されたウェイ122(0)〜122(Z)のメモリアドレスがDRAMキャッシュインジケータキャッシュ134内に存在しないと決定する場合、DRAMキャッシュ管理回路102は、DRAMキャッシュインジケータキャッシュ134を補充する(ブロック528)。いくつかの態様では、DRAMキャッシュインジケータキャッシュ134を補充するためのブロック528の動作は、システムメモリDRAM108内のマスタテーブル116から、メモリアドレスに対応する、選択されたウェイ122(0)〜122(Z)のマスタテーブルエントリ118(0)〜118(M)を読み取ることを含む(ブロック532)。DRAMキャッシュ管理回路102は、いくつかの態様では、次に、マスタテーブルエントリ118(0)〜118(M)に基づいて、メモリアドレスのための選択されたウェイ122(0)〜122(Z)のウェイ番号を、DRAMキャッシュインジケータキャッシュ134に書き込み得る(ブロック534)。いくつかの態様では、DRAMキャッシュ管理回路102は、メモリアドレスに対応する選択されたウェイ122(0)〜122(Z)のウェイ番号をリセットする(ブロック536)。次いで、DRAMキャッシュ管理回路102は、(DRAMキャッシュインジケータキャッシュ134内のマスタテーブルエントリ118(0)〜118(M)をインストールすることなしに)ウェイ番号をシステムメモリDRAM108内のマスタテーブル116に書き込む(ブロック538)。
【００５１】
ライトバックモードでシステムキャッシュ112からのダーティなデータのエビクションから得られる書込み動作を実行するための、図1のDRAMキャッシュ管理回路102の例示的な動作を示すために、図6A〜図6Dが提供される。明快のために、図6A〜図6Dについて説明する際に図1の要素が参照される。図6Aにおける動作は、DRAMキャッシュ管理回路102が、書込みアドレス130と書込みデータ132とを備えるメモリ書込み要求128を受信することで始まる(ブロック600)。図5Aと同様に、図6Aの例では、書込みデータ132は、システムキャッシュ112からエビクトされたダーティな(すなわち、修正されている)データを表し、結果として、本明細書では「ダーティなエビクト済みデータ132」と呼ばれる。
【００５２】
DRAMキャッシュ管理回路102は、ダーティなエビクト済みデータ132の書込みアドレス130がDRAMキャッシュインジケータキャッシュ134内で見つかるか否かを決定する(ブロック602)。書込みアドレス130がDRAMキャッシュインジケータキャッシュ134内に存在しない場合、DRAMキャッシュ管理回路102は、(たとえば、マスタテーブルエントリ118(0)〜118(M)を、マスタテーブル116からDRAMキャッシュインジケータキャッシュ134にコピーすることによって)DRAMキャッシュインジケータキャッシュ134を確率的に補充する(ブロック604)。ブロック604で、DRAMキャッシュインジケータキャッシュ134が補充される(すなわち、補充が発生すると確率的に決定された)場合、処理はブロック606で再開する。そうでない場合、DRAMキャッシュ管理回路102は、(たとえば、DRAMキャッシュインジケータ120(0)〜120(X)のためのマスタテーブルエントリ118(0)〜118(M)において、読取り-修正-書込み(RMW)動作を実行することによって)システムメモリDRAM108内のマスタテーブル116内の書込みアドレス130に対応するDRAMキャッシュインジケータ120(0)〜120(X)を更新する(ブロック608)。次いで、DRAMキャッシュ管理回路102は、ダーティなエビクト済みデータ132をDRAMキャッシュ104に書き込む(ブロック610)。いくつかの態様では、DRAMキャッシュインジケータ120(0)〜120(X)を更新するためのブロック608の動作と、ダーティなエビクト済みデータ132をDRAMキャッシュ104に書き込むためのブロック610の動作とが、並行して実行され得ることを理解されたい。
【００５３】
DRAMキャッシュ管理回路102のいくつかの態様は、次に、マスタテーブル116からの書込みアドレス130のためのDRAMキャッシュインジケータ120(0)〜120(X)が、書込みアドレス130がDRAMキャッシュ104内にあることを示すか否かを決定し得る(ブロック612)。そうでない場合、処理は完了する(ブロック614)。しかしながら、DRAMキャッシュ管理回路102が、決定ブロック612で、マスタテーブル116からの書込みアドレス130のためのDRAMキャッシュインジケータ120(0)〜120(X)が、書込みアドレス130がDRAMキャッシュ104内にあることを示すと決定する場合、DRAMキャッシュ管理回路102は、ダーティなエビクト済みデータ132をDRAMキャッシュ104に書き込む(ブロック616)。
【００５４】
再び決定ブロック602を参照すると、DRAMキャッシュ管理回路102が、ダーティなエビクト済みデータ132の書込みアドレス130がDRAMキャッシュインジケータキャッシュ134内で見つかると決定する場合(または、DRAMキャッシュインジケータキャッシュ134がブロック604で補充される場合)、DRAMキャッシュ管理回路102は、次に、ダーティなエビクト済みデータ132の書込みアドレス130がDRAMキャッシュ104内で見つかるか否かを決定する(ブロック606)。書込みアドレス130がDRAMキャッシュ104内で見つからない場合、処理は図6Bのブロック618で再開する。しかしながら、決定ブロック606で、DRAMキャッシュ管理回路102が、書込みアドレス130がDRAMキャッシュ104内で見つかると決定する場合、DRAMキャッシュ管理回路102は、(たとえば、DRAMキャッシュ104への非エビクト書込み動作を実行することによって)ダーティなエビクト済みデータ132をDRAMキャッシュ104に書き込む(ブロック616)。
【００５５】
次に図6Bを参照すると、DRAMキャッシュ管理回路102は、次に、書込みアドレス130とダーティなエビクト済みデータ132とをDRAMキャッシュ104に確率的に書き込む(ブロック618)。いくつかの態様によれば、書込みアドレス130とダーティなエビクト済みデータ132とをDRAMキャッシュ104に書き込むためのブロック618の動作は、DRAMキャッシュ104からエビクトされるべきウェイ122(0)〜122(Z)を最初にランダムに選択することを含み得る(ブロック620)。選択されたウェイ122(0)〜122(Z)のメモリアドレスが、DRAMキャッシュ管理回路102によって、DRAMキャッシュ104から読み取られる(ブロック622)。DRAMキャッシュ管理回路102は、次いで、書込みアドレス130とダーティなエビクト済みデータ132とを、DRAMキャッシュ104内の選択されたウェイ122(0)〜122(Z)に書き込む(ブロック624)。DRAMキャッシュ管理回路102は、DRAMキャッシュインジケータキャッシュ134内の書込みアドレス130のためのウェイ番号を、選択されたウェイ122(0)〜122(Z)のウェイ番号に更新する(ブロック626)。DRAMキャッシュ管理回路102はまた、DRAMキャッシュインジケータキャッシュ134内の書込みアドレス130のためのダーティインジケータ140(0)〜140(C)、140'(0)〜140'(C)を設定する(ブロック628)。次いで、処理は、図6Cのブロック630で継続する。
【００５６】
図6Cで、書込みアドレス130とダーティなエビクト済みデータ132とをDRAMキャッシュ104に確率的に書き込むためのブロック618のさらなる動作は、DRAMキャッシュ管理回路102が、選択されたウェイ122(0)〜122(Z)のメモリアドレスがDRAMキャッシュインジケータキャッシュ134内に存在するか否かを決定することを含む(ブロック630)。そうでない場合、処理は、図6Dのブロック632で再開する。DRAMキャッシュ管理回路102が、決定ブロック630で、選択されたウェイ122(0)〜122(Z)のメモリアドレスがDRAMキャッシュインジケータキャッシュ134内に存在すると決定する場合、DRAMキャッシュ管理回路102は、DRAMキャッシュインジケータキャッシュ134内のメモリアドレスのための選択されたウェイ122(0)〜122(Z)のウェイ番号とダーティインジケータ140(0)〜140(C)、140'(0)〜140'(C)とをリセットする(ブロック634)。
【００５７】
次に図6Dを参照すると、DRAMキャッシュ管理回路102が、図6Cの決定ブロック630で、選択されたウェイ122(0)〜122(Z)のメモリアドレスがDRAMキャッシュインジケータキャッシュ134内に存在しないと決定する場合、DRAMキャッシュ管理回路102は、DRAMキャッシュインジケータキャッシュ134を補充する(ブロック632)。いくつかの態様では、DRAMキャッシュインジケータキャッシュ134を補充するためのブロック632の動作は、システムメモリDRAM108内のマスタテーブル116から、メモリアドレスに対応する、選択されたウェイ122(0)〜122(Z)のマスタテーブルエントリ118(0)〜118(M)を読み取ることを含む(ブロック634)。DRAMキャッシュ管理回路102は、いくつかの態様では、次に、マスタテーブルエントリ118(0)〜118(M)に基づいて、メモリアドレスのための選択されたウェイ122(0)〜122(Z)のウェイ番号を、DRAMキャッシュインジケータキャッシュ134に書き込み得る(ブロック636)。いくつかの態様では、DRAMキャッシュ管理回路102は、メモリアドレスに対応する選択されたウェイ122(0)〜122(Z)のウェイ番号をリセットする(ブロック638)。次いで、DRAMキャッシュ管理回路102は、(DRAMキャッシュインジケータキャッシュ134内のマスタテーブルエントリ118(0)〜118(M)をインストールすることなしに)ウェイ番号をシステムメモリDRAM108内のマスタテーブル116に書き込む(ブロック640)。ブロック618で、書込みアドレス130およびダーティなエビクト済みデータ132が、DRAMキャッシュ104に確率的に書き込まれなかった場合、DRAMキャッシュ管理回路102は、ダーティなエビクト済みデータ132をシステムメモリDRAM108に書き込む(ブロック642)。
【００５８】
本明細書で開示する態様による、DRAMキャッシュインジケータキャッシュを使用するスケーラブルDRAMキャッシュ管理を提供することは、任意のプロセッサベースデバイス内で提供されてよく、または任意のプロセッサベースデバイスに統合されてもよい。例として、限定はしないが、セットトップボックス、エンターテインメントユニット、ナビゲーションデバイス、通信デバイス、固定ロケーションデータユニット、モバイルロケーションデータユニット、モバイルフォン、セルラーフォン、スマートフォン、タブレット、ファブレット、コンピュータ、ポータブルコンピュータ、デスクトップコンピュータ、携帯情報端末(PDA)、モニタ、コンピュータモニタ、テレビ、チューナ、ラジオ、衛星ラジオ、音楽プレーヤ、デジタル音楽プレーヤ、ポータブル音楽プレーヤ、デジタルビデオプレーヤ、ビデオプレーヤ、デジタルビデオディスク(DVD)プレーヤ、ポータブルデジタルビデオプレーヤおよび自動車が含まれる。
【００５９】
この点について、図7は、図1に示すDRAMキャッシュ管理回路(DCMC)102を採用することができるプロセッサベースシステム700の一例を示す。プロセッサベースシステム700は、1つまたは複数のプロセッサ704を各々が含む、1つまたは複数の中央処理ユニット(CPU)702を含む。CPU702は、一時的に記憶されているデータに迅速にアクセスするために、プロセッサ704に結合されたキャッシュメモリ706を有してよい。CPU702は、システムバス708に結合され、プロセッサベースシステム700内に含まれるマスタデバイスとスレーブデバイスとを相互結合することができる。よく知られているように、CPU702は、システムバス708を介してアドレス情報、制御情報、およびデータ情報を交換することによって、これらの他のデバイスと通信する。たとえば、CPU702は、スレーブデバイスの一例として、メモリコントローラ710にバストランザクション要求を通信することができる。
【００６０】
他のマスタデバイスおよびスレーブデバイスがシステムバス708に接続されてよい。図7に示すように、これらのデバイスは、例として、メモリシステム712、1つまたは複数の入力デバイス714、1つまたは複数の出力デバイス716、1つまたは複数のネットワークインターフェースデバイス718、および1つまたは複数のディスプレイコントローラ720を含むことができる。入力デバイス714は、限定はしないが、入力キー、スイッチ、音声プロセッサなどを含む任意のタイプの入力デバイスを含むことができる。出力デバイス716は、限定はしないが、オーディオ、ビデオ、他の視覚的インジケータなどを含む任意のタイプの出力デバイスを含むことができる。ネットワークインターフェースデバイス718は、ネットワーク722との間のデータの交換を可能にするように構成された任意のデバイスであり得る。ネットワーク722は、限定はしないが、有線ネットワークまたはワイヤレスネットワーク、プライベートネットワークまたは公衆ネットワーク、ローカルエリアネットワーク(LAN)、ワイヤレスローカルエリアネットワーク(WLAN)、ワイドエリアネットワーク(WAN)、BLUETOOTH(登録商標)ネットワーク、およびインターネットを含む、任意のタイプのネットワークであってよい。ネットワークインターフェースデバイス718は、任意のタイプの所望の通信プロトコルをサポートするように構成され得る。メモリシステム712は、1つまたは複数のメモリユニット724(0)〜724(N)を含み得る。
【００６１】
CPU702はまた、1つまたは複数のディスプレイ726へ送られる情報を制御するために、システムバス708を介してディスプレイコントローラ720にアクセスするように構成され得る。ディスプレイコントローラ720は、1つまたは複数のビデオプロセッサ728を介して表示されるように情報をディスプレイ726へ送り、ビデオプロセッサ728は、表示されるべき情報を処理してディスプレイ726に適したフォーマットにする。ディスプレイ726は、限定はしないが、陰極線管(CRT)、液晶ディスプレイ(LCD)、プラズマディスプレイなどを含む任意のタイプのディスプレイを含み得る。
【００６２】
本明細書で開示する態様に関して説明した様々な例示的な論理ブロック、モジュール、回路、およびアルゴリズムが、電子ハードウェア、メモリの中もしくは別のコンピュータ可読媒体の中に記憶されるとともにプロセッサもしくは他の処理デバイスによって実行される命令、または両方の組合せとして実装され得ることを、当業者はさらに諒解されよう。本明細書において説明するマスタデバイスおよびスレーブデバイスは、例として、任意の回路、ハードウェア構成要素、集積回路(IC)、またはICチップにおいて採用されてもよい。本明細書で開示するメモリは、任意のタイプおよびサイズのメモリであってよく、任意のタイプの所望の情報を記憶するように構成され得る。この互換性を明確に示すために、上記では、様々な例示的な構成要素、ブロック、モジュール、回路、およびステップについて、それらの機能に関して概略的に説明した。そのような機能がどのように実装されるのかは、特定の適用例、設計選択、および/またはシステム全体に課される設計制約によって決まる。当業者は、説明した機能を特定の適用例ごとに様々な方法で実装し得るが、そのような実装決定が本開示の範囲からの逸脱を引き起こすものと解釈されるべきではない。
【００６３】
本明細書で開示する態様に関連して説明した様々な例示的な論理ブロック、モジュール、および回路は、プロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)もしくは他のプログラマブル論理デバイス、個別ゲートもしくはトランジスタ論理、個別ハードウェア構成要素、または本明細書で説明する機能を実行するように設計されたそれらの任意の組合せを用いて実装または実行され得る。プロセッサは、マイクロプロセッサであってよいが、代替として、プロセッサは、任意の従来のプロセッサ、コントローラ、マイクロコントローラ、またはステートマシンであってもよい。プロセッサはまた、コンピューティングデバイスの組合せ(たとえば、DSPとマイクロプロセッサとの組合せ、複数のマイクロプロセッサ、DSPコアと連携した1つもしくは複数のマイクロプロセッサ、または任意の他のそのような構成)としても実装され得る。
【００６４】
本明細書で開示する態様は、ハードウェアにおいて、かつハードウェアに記憶される命令において具現化されてよく、たとえば、ランダムアクセスメモリ(RAM)、フラッシュメモリ、読取り専用メモリ(ROM)、電気的プログラマブルROM(EPROM)、電気的消去可能プログラマブルROM(EEPROM)、レジスタ、ハードディスク、リムーバブルディスク、CD-ROM、または当技術分野で知られている任意の他の形態のコンピュータ可読媒体の中に存在してよい。例示的な記憶媒体は、プロセッサが記憶媒体から情報を読み取ること、および記憶媒体に情報を書き込むことができるように、プロセッサに結合される。代替として、記憶媒体は、プロセッサと一体化してよい。プロセッサおよび記憶媒体は、ASICの中に存在してよい。ASICはリモート局の中に存在してよい。代替として、プロセッサおよび記憶媒体は、個別構成要素としてリモート局、基地局、またはサーバの中に存在してよい。
【００６５】
本明細書の例示的な態様のいずれかにおいて説明した動作ステップが、例および説明を提供するために記載されていることにも留意されたい。説明した動作は、図示したシーケンス以外の数多くの異なるシーケンスで実行されてよい。さらに、単一の動作ステップにおいて説明した動作は、実際にはいくつかの異なるステップにおいて実行されてよい。さらに、例示的な態様で説明した1つまたは複数の動作ステップは、組み合わせられてよい。当業者にとって容易に明らかであるように、フローチャート図に示す動作ステップが数多くの異なる修正を受けてもよいことを理解されたい。情報および信号が様々な異なる技術および技法のいずれを使用して表されてもよいことも当業者は理解されよう。たとえば、上記の説明全体にわたって参照される場合があるデータ、命令、コマンド、情報、信号、ビット、シンボル、およびチップは、電圧、電流、電磁波、磁場もしくは磁気粒子、光場もしくは光学粒子、またはそれらの任意の組合せによって表される場合がある。
【００６６】
本開示の前述の説明は、いかなる当業者も本開示を作製または使用することが可能になるように提供される。本開示の様々な修正が当業者に容易に明らかになり、本明細書で定義する一般原理は、本開示の趣旨または範囲から逸脱することなく他の変形形態に適用され得る。したがって、本開示は、本明細書で説明した例および設計に限定されるものでなく、本明細書で開示する原理および新規の特徴と一致する最も広い範囲を与えられるべきである。
【符号の説明】
【００６７】
100、700  プロセッサベースシステム
102  DRAMキャッシュ管理回路、DCMC
104  DRAMキャッシュ
106  高帯域幅メモリ
108  システムメモリDRAM
110  コンピュートダイ
112  システムキャッシュ
114(0)〜114(X)  メモリライン
116  マスタテーブル
118(0)〜118(M)、200、210  マスタテーブルエントリ
120(0)〜120(X)、202(0)〜202(127)、212(0)〜212(255)  DRAMキャッシュインジケータ
122(0)〜122(Z)、122(0)〜122(2)、122(0)〜122(6)、122(0)〜122(14)、122(N-1)、136(0)〜136(C)、136'(0)〜136'(C)、206(0)〜206(7)、208(0)〜208(7)、216(0)〜216(7)、218(0)〜218(7)  ウェイ
124  メモリ読取り要求
126  読取りアドレス
128  メモリ書込み要求
130  書込みアドレス
132  書込みデータ
134  DRAMキャッシュインジケータキャッシュ
138(0)〜138(Y)、204(0)〜204(511)、214(0)〜214(511)  DRAMキャッシュインジケータキャッシュライン
140(0)〜140(C)、140'(0)〜140'(C)  ダーティインジケータ
142  負荷分散回路
702  中央処理ユニット(CPU)
704  プロセッサ
706  キャッシュメモリ
708  システムバス
710  メモリコントローラ
712  メモリシステム
714  入力デバイス
716  出力デバイス
718  ネットワークインターフェースデバイス
720  ディスプレイコントローラ
722  ネットワーク
724(0)〜724(N)  メモリユニット
726  ディスプレイ
728  ビデオプロセッサ
【図１】
2019509557.tif 000003
【図２Ａ】
2019509557.tif 000004
【図２Ｂ】
2019509557.tif 000005
【図３】
2019509557.tif 000006
【図４Ａ】
2019509557.tif 000007
【図４Ｂ】
2019509557.tif 000008
【図４Ｃ】
2019509557.tif 000009
【図５Ａ】
2019509557.tif 000010
【図５Ｂ】
2019509557.tif 000011
【図５Ｃ】
2019509557.tif 000012
【図６Ａ】
2019509557.tif 000013
【図６Ｂ】
2019509557.tif 000014
【図６Ｃ】
2019509557.tif 000015
【図６Ｄ】
2019509557.tif 000016
【図７】
2019509557.tif 000017
【国際調査報告】
2019509557.tif 000018
2019509557.tif 000019