(57)【要約】  タグディレクトリキャッシュを使用するスケーラブルダイナミックランダムアクセスメモリ(DRAM)キャッシュ管理の提供が行われる。一態様では、高帯域幅メモリの中のDRAMキャッシュへのアクセスを管理するために、DRAMキャッシュ管理回路が提供される。DRAMキャッシュ管理回路は、タグディレクトリキャッシュおよびタグディレクトリキャッシュディレクトリを備える。タグディレクトリキャッシュは、DRAMキャッシュの中で頻繁にアクセスされるキャッシュラインのタグを記憶し、タグディレクトリキャッシュディレクトリは、タグディレクトリキャッシュに対するタグを記憶する。DRAMキャッシュ管理回路は、タグディレクトリキャッシュおよびタグディレクトリキャッシュディレクトリを使用して、メモリアドレスに関連付けられたデータが高帯域幅メモリのDRAMキャッシュの中にキャッシュされているかどうかを決定する。タグディレクトリキャッシュおよびタグディレクトリキャッシュディレクトリに基づいて、DRAMキャッシュ管理回路は、メモリ動作がDRAMキャッシュおよび/またはシステムメモリDRAMを使用して実行され得るかどうかを決定し得る。
2019506671.tif 000002
【特許請求の範囲】
【請求項１】
高帯域幅メモリの一部であるとともにシステムメモリ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の中で前記読込みアドレスにおける前記データを読み込むことと並行して、前記タグディレクトリキャッシュを確率的に補充するように構成される、
請求項1に記載のDRAMキャッシュ管理回路。
【請求項７】
前記DRAMキャッシュの前記タグディレクトリから、新規タグディレクトリキャッシュラインのためのデータを読み込むことと、
前記新規タグディレクトリキャッシュラインを前記タグディレクトリキャッシュの中にインストールすることと
を行うように構成されることによって、
前記タグディレクトリキャッシュを確率的に補充するように構成される、
請求項6に記載のDRAMキャッシュ管理回路。
【請求項８】
前記タグディレクトリキャッシュ内に無効ウェイが存在するかどうかを決定することと、
前記タグディレクトリキャッシュ内に無効ウェイが存在するという決定に応答して、
前記新規タグディレクトリキャッシュラインに対するターゲットウェイとして前記無効ウェイを割り振ることと、
前記新規タグディレクトリキャッシュラインを前記ターゲットウェイに書き込むことと、
前記新規タグディレクトリキャッシュラインに対する1つまたは複数の有効ビットを、前記タグディレクトリキャッシュディレクトリの中で更新することと、
前記新規タグディレクトリキャッシュラインに対するタグを前記タグディレクトリキャッシュディレクトリに書き込むことと
を行うように構成されることによって、
前記新規タグディレクトリキャッシュラインを前記タグディレクトリキャッシュの中にインストールするように構成される、
請求項7に記載のDRAMキャッシュ管理回路。
【請求項９】
前記タグディレクトリキャッシュ内に無効ウェイが存在しないという決定に応答して、
前記タグディレクトリキャッシュ内にクリーンウェイが存在するかどうかを決定することと、
前記タグディレクトリキャッシュ内にクリーンウェイが存在するという決定に応答して、
前記新規タグディレクトリキャッシュラインに対するターゲットウェイとして前記クリーンウェイを割り振ることと、
前記ターゲットウェイの1つまたは複数のタグに対する、前記DRAMキャッシュの前記タグディレクトリの中の1つまたは複数の有効ビットを更新することと、
前記ターゲットウェイの前記1つまたは複数のタグを、前記DRAMキャッシュの前記タグディレクトリの中で更新することと、
前記新規タグディレクトリキャッシュラインを前記ターゲットウェイに書き込むことと、
前記新規タグディレクトリキャッシュラインに対する、前記タグディレクトリキャッシュディレクトリの中の1つまたは複数の有効ビットを更新することと、
前記新規タグディレクトリキャッシュラインに対するタグを前記タグディレクトリキャッシュディレクトリに書き込むことと
を行うようにさらに構成されることによって、
前記新規タグディレクトリキャッシュラインを前記タグディレクトリキャッシュの中にインストールするように構成される、請求項8に記載のDRAMキャッシュ管理回路。
【請求項１０】
前記タグディレクトリキャッシュ内にクリーンウェイが存在しないという決定に応答して、
前記タグディレクトリキャッシュ内のダーティウェイを選択することと、
前記新規タグディレクトリキャッシュラインに対するターゲットウェイとして前記ダーティウェイを割り振ることと、
前記ターゲットウェイ内の各ダーティDRAMキャッシュラインを前記システムメモリDRAMに書き込むことと、
前記ターゲットウェイの1つまたは複数のタグに対する、前記DRAMキャッシュの前記タグディレクトリの中の1つまたは複数の有効ビットを更新することと、
前記ターゲットウェイの前記1つまたは複数のタグを、前記DRAMキャッシュの前記タグディレクトリの中で更新することと、
前記新規タグディレクトリキャッシュラインを前記ターゲットウェイに書き込むことと、
前記新規タグディレクトリキャッシュラインに対する、前記タグディレクトリキャッシュディレクトリの中の1つまたは複数の有効ビットを更新することと、
前記新規タグディレクトリキャッシュラインに対するタグを前記タグディレクトリキャッシュディレクトリに書き込むことと
を行うようにさらに構成されることによって、
前記新規タグディレクトリキャッシュラインを前記タグディレクトリキャッシュの中にインストールするように構成される、請求項9に記載のDRAMキャッシュ管理回路。
【請求項１１】
書込みアドレス、およびクリーンなエビクト済みデータを備える書込みデータを備える、メモリ書込み要求を、システムキャッシュから受信することと、
前記タグディレクトリキャッシュディレクトリの中に前記書込みアドレスが見つかるかどうかを決定することと、
前記タグディレクトリキャッシュディレクトリの中に前記書込みアドレスが見つかるという決定に応答して、
前記DRAMキャッシュの中に前記書込みアドレスが見つかるかどうかを、前記タグディレクトリキャッシュに基づいて決定することと、
前記DRAMキャッシュの中に前記書込みアドレスが見つからないという決定に応答して、前記クリーンなエビクト済みデータを前記DRAMキャッシュに書き込むことと、
前記タグディレクトリキャッシュディレクトリの中に前記書込みアドレスが見つからないという決定に応答して、
前記書込みアドレス用のタグが前記DRAMキャッシュの前記タグディレクトリの中に記憶されることになるキャッシュラインに対応する、前記DRAMキャッシュの前記タグディレクトリから、新規タグディレクトリキャッシュラインを取り出すことと、
前記新規タグディレクトリキャッシュラインを前記タグディレクトリキャッシュの中にインストールすることと
を行うようにさらに構成される、
請求項1に記載のDRAMキャッシュ管理回路。
【請求項１２】
前記DRAMキャッシュ内に無効ウェイが存在するかどうかを決定することと、
前記DRAMキャッシュ内に無効ウェイが存在するという決定に応答して、
新規DRAMキャッシュラインに対するターゲットウェイとして前記無効ウェイを割り振ることと、
前記クリーンなエビクト済みデータを前記ターゲットウェイの中の前記新規DRAMキャッシュラインに書き込むことと、
前記新規DRAMキャッシュラインに対する、前記タグディレクトリキャッシュディレクトリの中の1つまたは複数の有効ビットを、前記新規DRAMキャッシュラインが有効であることを示すように更新することと、
前記新規DRAMキャッシュラインに対するタグを、前記DRAMキャッシュの前記タグディレクトリの中で更新することと
を行うように構成されることによって、
前記DRAMキャッシュの中に前記書込みアドレスが見つからないという決定に応答して、前記クリーンなエビクト済みデータを前記DRAMキャッシュに書き込むように構成される、請求項11に記載のDRAMキャッシュ管理回路。
【請求項１３】
前記DRAMキャッシュ内に無効ウェイが存在しないという決定に応答して、
前記DRAMキャッシュ内にクリーンウェイが存在するかどうかを決定することと、
前記DRAMキャッシュ内にクリーンウェイが存在するという決定に応答して、
前記新規DRAMキャッシュラインに対する前記ターゲットウェイとして前記クリーンウェイを割り振ることと、
前記クリーンなエビクト済みデータを前記ターゲットウェイの中の前記新規DRAMキャッシュラインに書き込むことと、
前記DRAMキャッシュの前記タグディレクトリの中の1つまたは複数の有効ビットを更新することと、
前記ターゲットウェイの1つまたは複数のタグに対する有効ビットを、前記タグディレクトリキャッシュディレクトリの中で更新することと、
前記新規DRAMキャッシュラインに対するタグを前記タグディレクトリキャッシュディレクトリに書き込むことと、
前記新規DRAMキャッシュラインに対するタグを、前記DRAMキャッシュの前記タグディレクトリの中で更新することと
を行うようにさらに構成されることによって、
前記DRAMキャッシュの中に前記書込みアドレスが見つからないという決定に応答して、前記クリーンなエビクト済みデータを前記DRAMキャッシュに書き込むように構成される、請求項12に記載のDRAMキャッシュ管理回路。
【請求項１４】
前記タグディレクトリキャッシュ内にクリーンウェイが存在しないという決定に応答して、
前記DRAMキャッシュ内のダーティウェイを選択することと、
前記新規DRAMキャッシュラインに対する前記ターゲットウェイとして前記ダーティウェイを割り振ることと、
前記ターゲットウェイ内の各ダーティDRAMキャッシュラインを前記システムメモリDRAMに書き込むことと、
前記クリーンなエビクト済みデータを前記ターゲットウェイの中の前記新規DRAMキャッシュラインに書き込むことと、
前記DRAMキャッシュの前記タグディレクトリの中の1つまたは複数の有効ビットを更新することと、
前記タグディレクトリキャッシュの中の前記ターゲットウェイの1つまたは複数のタグに対する有効インジケータを更新することと、
前記新規DRAMキャッシュラインに対するタグを前記タグディレクトリキャッシュディレクトリに書き込むことと、
前記新規DRAMキャッシュラインに対するタグを、前記DRAMキャッシュの前記タグディレクトリの中で更新することと
を行うようにさらに構成されることによって、
前記DRAMキャッシュの中に前記書込みアドレスが見つからないという決定に応答して、前記クリーンなエビクト済みデータを前記DRAMキャッシュに書き込むように構成される、請求項13に記載のDRAMキャッシュ管理回路。
【請求項１５】
ライトバックモードで動作するように構成され、
書込みアドレス、およびダーティなエビクト済みデータを備える書込みデータを備える、メモリ書込み要求を、システムキャッシュから受信することと、
前記タグディレクトリキャッシュディレクトリの中に前記書込みアドレスが見つかるかどうかを決定することと、
前記タグディレクトリキャッシュディレクトリの中に前記書込みアドレスが見つかるという決定に応答して、
前記DRAMキャッシュの中に前記書込みアドレスが見つかるかどうかを、前記タグディレクトリキャッシュに基づいて決定することと、
前記DRAMキャッシュの中に前記書込みアドレスが見つかるという決定に応答して、
前記書込みアドレスに対するダーティビットを、前記タグディレクトリキャッシュディレクトリの中で設定することと、
前記DRAMキャッシュの中の、前記書込みアドレスに対するDRAMキャッシュラインに、前記ダーティなエビクト済みデータを書き込むことと、
前記DRAMキャッシュの中に前記書込みアドレスが見つからないという決定に応答して、前記ダーティなエビクト済みデータを前記DRAMキャッシュに書き込むことと、
前記タグディレクトリキャッシュディレクトリの中に前記書込みアドレスが見つからないという決定に応答して、
前記書込みアドレス用のタグが前記DRAMキャッシュの前記タグディレクトリの中に記憶されることになる、前記DRAMキャッシュの前記タグディレクトリから、新規タグディレクトリキャッシュラインのためのデータを取り出すことと、
前記新規タグディレクトリキャッシュラインを前記タグディレクトリキャッシュの中にインストールすることと
を行うようにさらに構成される、
請求項1に記載のDRAMキャッシュ管理回路。
【請求項１６】
前記DRAMキャッシュ内に無効ウェイが存在するかどうかを決定することと、
前記DRAMキャッシュ内に無効ウェイが存在するという決定に応答して、
新規DRAMキャッシュラインに対するターゲットウェイとして前記無効ウェイを割り振ることと、
前記ダーティなエビクト済みデータを前記ターゲットウェイの中の前記新規DRAMキャッシュラインに書き込むことと、
前記新規DRAMキャッシュラインに対する、前記タグディレクトリキャッシュディレクトリの中の1つまたは複数の有効ビットを、前記DRAMキャッシュラインが有効であることを示すように更新することと、
前記新規DRAMキャッシュラインに対するタグを、前記DRAMキャッシュの前記タグディレクトリの中で更新することと
を行うように構成されることによって、
前記DRAMキャッシュの中に前記書込みアドレスが見つからないという決定に応答して、前記ダーティなエビクト済みデータを前記DRAMキャッシュに書き込むように構成される、請求項15に記載のDRAMキャッシュ管理回路。
【請求項１７】
前記DRAMキャッシュ内に無効ウェイが存在しないという決定に応答して、
前記DRAMキャッシュ内にクリーンウェイが存在するかどうかを決定することと、
前記DRAMキャッシュ内にクリーンウェイが存在するという決定に応答して、
前記新規DRAMキャッシュラインに対する前記ターゲットウェイとして前記クリーンウェイを割り振ることと、
前記新規DRAMキャッシュラインに対する前記ダーティなエビクト済みデータを前記ターゲットウェイに書き込むことと、
前記DRAMキャッシュの前記タグディレクトリの中の1つまたは複数の有効ビットを更新することと、
前記ターゲットウェイの1つまたは複数のタグに対する有効ビットを、前記タグディレクトリキャッシュディレクトリの中で更新することと、
前記新規DRAMキャッシュラインに対するタグを前記タグディレクトリキャッシュディレクトリに書き込むことと、
前記新規DRAMキャッシュラインに対するタグを、前記DRAMキャッシュの前記タグディレクトリの中で更新することと
を行うようにさらに構成されることによって、
前記DRAMキャッシュの中に前記書込みアドレスが見つからないという決定に応答して、前記ダーティなエビクト済みデータを前記DRAMキャッシュに書き込むように構成される、請求項16に記載のDRAMキャッシュ管理回路。
【請求項１８】
前記タグディレクトリキャッシュ内にクリーンウェイが存在しないという決定に応答して、
前記DRAMキャッシュ内のダーティウェイを選択することと、
前記新規DRAMキャッシュラインに対する前記ターゲットウェイとして前記ダーティウェイを割り振ることと、
前記ターゲットウェイ内の各ダーティDRAMキャッシュラインを前記システムメモリDRAMに書き込むことと、
前記ダーティなエビクト済みデータを前記ターゲットウェイの中の前記新規DRAMキャッシュラインに書き込むことと、
前記DRAMキャッシュの前記タグディレクトリの中の1つまたは複数の有効ビットを更新することと、
前記タグディレクトリキャッシュの中の前記ターゲットウェイの1つまたは複数のタグに対する有効インジケータを更新することと、
前記新規DRAMキャッシュラインに対するタグを前記タグディレクトリキャッシュディレクトリに書き込むことと、
前記新規DRAMキャッシュラインに対するタグを、前記DRAMキャッシュの前記タグディレクトリの中で更新することと
を行うようにさらに構成されることによって、
前記DRAMキャッシュの中に前記書込みアドレスが見つからないという決定に応答して、前記ダーティなエビクト済みデータを前記DRAMキャッシュに書き込むように構成される、請求項17に記載のDRAMキャッシュ管理回路。
【請求項１９】
集積回路(IC)に統合された請求項1に記載のDRAMキャッシュ管理回路。
【請求項２０】
セットトップボックス、エンターテインメントユニット、ナビゲーションデバイス、通信デバイス、固定ロケーションデータユニット、モバイルロケーションデータユニット、モバイルフォン、セルラーフォン、スマートフォン、タブレット、ファブレット、サーバ、コンピュータ、ポータブルコンピュータ、デスクトップコンピュータ、携帯情報端末(PDA)、モニタ、コンピュータモニタ、テレビ、チューナ、ラジオ、衛星ラジオ、音楽プレーヤ、デジタル音楽プレーヤ、ポータブル音楽プレーヤ、デジタルビデオプレーヤ、ビデオプレーヤ、デジタルビデオディスク(DVD)プレーヤ、ポータブルデジタルビデオプレーヤ、および自動車からなるグループから選択されるデバイスに統合された請求項1に記載のDRAMキャッシュ管理回路。
【請求項２１】
スケーラブルダイナミックランダムアクセスメモリ(DRAM)キャッシュ管理を提供するための方法であって、
読込みアドレスを備えるメモリ読込み要求をDRAMキャッシュ管理回路によって受信するステップと、
前記DRAMキャッシュ管理回路のタグディレクトリキャッシュのタグディレクトリキャッシュディレクトリの中に前記読込みアドレスが見つかるかどうかを決定するステップと、
前記タグディレクトリキャッシュディレクトリの中に前記読込みアドレスが見つからないという決定に応答して、システムメモリDRAMの中で前記読込みアドレスにおけるデータを読み込むステップと、
前記タグディレクトリキャッシュディレクトリの中に前記読込みアドレスが見つかるという決定に応答して、
高帯域幅メモリの一部であるDRAMキャッシュの中に前記読込みアドレスが見つかるかどうかを、前記タグディレクトリキャッシュに基づいて決定するステップと、
前記DRAMキャッシュの中に前記読込みアドレスが見つからないという決定に応答して、前記システムメモリDRAMの中で前記読込みアドレスにおけるデータを読み込むステップと、
前記DRAMキャッシュの中に前記読込みアドレスが見つかるという決定に応答して、前記読込みアドレスに対するデータを前記DRAMキャッシュから読み込むステップと
を備える方法。
【請求項２２】
前記DRAMキャッシュの中に前記読込みアドレスが見つかるという決定に応答して、前記DRAMキャッシュの中の前記読込みアドレスに対する前記データがクリーンであるかどうかを決定するステップをさらに備え、
前記読込みアドレスに対する前記データを前記DRAMキャッシュから読み込むステップが、前記DRAMキャッシュの中の前記読込みアドレスに対する前記データがクリーンでないという決定にさらに応答する、
請求項21に記載の方法。
【請求項２３】
前記DRAMキャッシュの中の前記読込みアドレスに対する前記データがクリーンであるという決定に応答して、
前記DRAMキャッシュおよび前記システムメモリDRAMの中から好適なデータソースを識別するステップと、
前記DRAMキャッシュを前記好適なデータソースとして識別することに応答して、前記DRAMキャッシュからデータを読み込むステップと、
前記システムメモリDRAMを前記好適なデータソースとして識別することに応答して、前記システムメモリDRAMからデータを読み込むステップと
をさらに備える、請求項22に記載の方法。
【請求項２４】
前記DRAMキャッシュ管理回路がライトスルーモードで動作するように構成され、
前記方法が、前記DRAMキャッシュの中に前記読込みアドレスが見つかるという決定に応答して、
前記DRAMキャッシュおよび前記システムメモリDRAMの中から好適なデータソースを識別するステップと、
前記システムメモリDRAMを前記好適なデータソースとして識別することに応答して、前記システムメモリDRAMからデータを読み込むステップと
をさらに備え、
前記読込みアドレスに対する前記データを前記DRAMキャッシュから読み込むステップが、前記DRAMキャッシュの中の前記読込みアドレスに対する前記データがクリーンであるという決定、および前記DRAMキャッシュを前記好適なデータソースとして識別することにさらに応答する、
請求項21に記載の方法。
【請求項２５】
前記DRAMキャッシュ管理回路が、システムキャッシュに結合され、
前記読込みアドレスを備える前記メモリ読込み要求を受信するステップが、前記システムキャッシュにおけるミスに応答する、
請求項21に記載の方法。
【請求項２６】
前記システムメモリDRAMの中で前記読込みアドレスにおける前記データを読み込むことと並行して、前記タグディレクトリキャッシュを確率的に補充するステップをさらに備える、請求項21に記載の方法。
【請求項２７】
前記タグディレクトリキャッシュを確率的に補充するステップが、
前記DRAMキャッシュの前記タグディレクトリから、新規タグディレクトリキャッシュラインのためのデータを読み込むステップと、
前記新規タグディレクトリキャッシュラインを前記タグディレクトリキャッシュの中にインストールするステップと
を備える、
請求項26に記載の方法。
【請求項２８】
前記新規タグディレクトリキャッシュラインを前記タグディレクトリキャッシュの中にインストールするステップが、
前記タグディレクトリキャッシュ内に無効ウェイが存在するかどうかを決定するステップと、
前記タグディレクトリキャッシュ内に無効ウェイが存在するという決定に応答して、
前記新規タグディレクトリキャッシュラインに対するターゲットウェイとして前記無効ウェイを割り振るステップと、
前記新規タグディレクトリキャッシュラインを前記ターゲットウェイに書き込むステップと、
前記新規タグディレクトリキャッシュラインに対する1つまたは複数の有効ビットを、前記タグディレクトリキャッシュディレクトリの中で更新するステップと、
前記新規タグディレクトリキャッシュラインに対するタグを前記タグディレクトリキャッシュディレクトリに書き込むステップと
を備える、
請求項27に記載の方法。
【請求項２９】
前記新規タグディレクトリキャッシュラインを前記タグディレクトリキャッシュの中にインストールするステップが、前記タグディレクトリキャッシュ内に無効ウェイが存在しないという決定に応答して、
前記タグディレクトリキャッシュ内にクリーンウェイが存在するかどうかを決定するステップと、
前記タグディレクトリキャッシュ内にクリーンウェイが存在するという決定に応答して、
前記新規タグディレクトリキャッシュラインに対するターゲットウェイとして前記クリーンウェイを割り振るステップと、
前記ターゲットウェイの1つまたは複数のタグに対する、前記DRAMキャッシュの前記タグディレクトリの中の1つまたは複数の有効ビットを更新するステップと、
前記ターゲットウェイの前記1つまたは複数のタグを、前記DRAMキャッシュの前記タグディレクトリの中で更新するステップと、
前記新規タグディレクトリキャッシュラインを前記ターゲットウェイに書き込むステップと、
前記新規タグディレクトリキャッシュラインに対する、前記タグディレクトリキャッシュディレクトリの中の1つまたは複数の有効ビットを更新するステップと、
前記新規タグディレクトリキャッシュラインに対するタグを前記タグディレクトリキャッシュディレクトリに書き込むステップと
をさらに備える、
請求項28に記載の方法。
【請求項３０】
前記新規タグディレクトリキャッシュラインを前記タグディレクトリキャッシュの中にインストールするステップが、前記タグディレクトリキャッシュ内にクリーンウェイが存在しないという決定に応答して、
前記タグディレクトリキャッシュ内のダーティウェイを選択するステップと、
前記新規タグディレクトリキャッシュラインに対するターゲットウェイとして前記ダーティウェイを割り振るステップと、
前記ターゲットウェイ内の各ダーティDRAMキャッシュラインを前記システムメモリDRAMに書き込むステップと、
前記ターゲットウェイの1つまたは複数のタグに対する、前記DRAMキャッシュの前記タグディレクトリの中の1つまたは複数の有効ビットを更新するステップと、
前記ターゲットウェイの前記1つまたは複数のタグを、前記DRAMキャッシュの前記タグディレクトリの中で更新するステップと、
前記新規タグディレクトリキャッシュラインを前記ターゲットウェイに書き込むステップと、
前記新規タグディレクトリキャッシュラインに対する、前記タグディレクトリキャッシュディレクトリの中の1つまたは複数の有効ビットを更新するステップと、
前記新規タグディレクトリキャッシュラインに対するタグを前記タグディレクトリキャッシュディレクトリに書き込むステップと
をさらに備える、
請求項29に記載の方法。
【請求項３１】
書込みアドレス、およびクリーンなエビクト済みデータを備える書込みデータを備える、メモリ書込み要求を、システムキャッシュから受信するステップと、
前記タグディレクトリキャッシュディレクトリの中に前記書込みアドレスが見つかるかどうかを決定するステップと、
前記タグディレクトリキャッシュディレクトリの中に前記書込みアドレスが見つかるという決定に応答して、
前記DRAMキャッシュの中に前記書込みアドレスが見つかるかどうかを、前記タグディレクトリキャッシュに基づいて決定するステップと、
前記DRAMキャッシュの中に前記書込みアドレスが見つからないという決定に応答して、前記クリーンなエビクト済みデータを前記DRAMキャッシュに書き込むステップと、
前記タグディレクトリキャッシュディレクトリの中に前記書込みアドレスが見つからないという決定に応答して、
前記書込みアドレス用のタグが前記DRAMキャッシュの前記タグディレクトリの中に記憶されることになる、前記DRAMキャッシュの前記タグディレクトリから、新規タグディレクトリキャッシュラインのためのデータを取り出すステップと、
前記新規タグディレクトリキャッシュラインを前記タグディレクトリキャッシュの中にインストールするステップと
をさらに備える、請求項21に記載の方法。
【請求項３２】
前記DRAMキャッシュの中に前記書込みアドレスが見つからないという決定に応答して、前記クリーンなエビクト済みデータを前記DRAMキャッシュに書き込むステップが、
前記DRAMキャッシュ内に無効ウェイが存在するかどうかを決定するステップと、
前記DRAMキャッシュ内に無効ウェイが存在するという決定に応答して、
新規DRAMキャッシュラインに対するターゲットウェイとして前記無効ウェイを割り振るステップと、
前記クリーンなエビクト済みデータを前記ターゲットウェイの中の前記新規DRAMキャッシュラインに書き込むステップと、
前記新規DRAMキャッシュラインに対する、前記タグディレクトリキャッシュディレクトリの中の1つまたは複数の有効ビットを、前記新規DRAMキャッシュラインが有効であることを示すように更新するステップと、
前記新規DRAMキャッシュラインに対するタグを、前記DRAMキャッシュの前記タグディレクトリの中で更新するステップと
を備える、
請求項31に記載の方法。
【請求項３３】
前記DRAMキャッシュの中に前記書込みアドレスが見つからないという決定に応答して、前記クリーンなエビクト済みデータを前記DRAMキャッシュに書き込むステップが、前記DRAMキャッシュ内に無効ウェイが存在しないという決定に応答して、
前記DRAMキャッシュ内にクリーンウェイが存在するかどうかを決定するステップと、
前記DRAMキャッシュ内にクリーンウェイが存在するという決定に応答して、
前記新規DRAMキャッシュラインに対する前記ターゲットウェイとして前記クリーンウェイを割り振るステップと、
前記クリーンなエビクト済みデータを前記ターゲットウェイの中の前記新規DRAMキャッシュラインに書き込むステップと、
前記DRAMキャッシュの前記タグディレクトリの中の1つまたは複数の有効ビットを更新するステップと、
前記ターゲットウェイの1つまたは複数のタグに対する有効ビットを、前記タグディレクトリキャッシュディレクトリの中で更新するステップと、
前記新規DRAMキャッシュラインに対するタグを前記タグディレクトリキャッシュディレクトリに書き込むステップと、
前記新規DRAMキャッシュラインに対するタグを、前記DRAMキャッシュの前記タグディレクトリの中で更新するステップと
をさらに備える、
請求項32に記載の方法。
【請求項３４】
前記DRAMキャッシュの中に前記書込みアドレスが見つからないという決定に応答して、前記クリーンなエビクト済みデータを前記DRAMキャッシュに書き込むステップが、前記タグディレクトリキャッシュ内にクリーンウェイが存在しないという決定に応答して、
前記タグディレクトリキャッシュ内のダーティウェイを選択するステップと、
前記新規タグディレクトリキャッシュラインに対する前記ターゲットウェイとして前記ダーティウェイを割り振るステップと、
前記ターゲットウェイ内の各ダーティDRAMキャッシュラインを前記システムメモリDRAMに書き込むステップと、
前記クリーンなエビクト済みデータを前記ターゲットウェイの中の前記新規DRAMキャッシュラインに書き込むステップと、
前記DRAMキャッシュの前記タグディレクトリの中の1つまたは複数の有効ビットを更新するステップと、
前記タグディレクトリキャッシュの中の前記ターゲットウェイの1つまたは複数のタグに対する有効インジケータを更新するステップと、
前記新規DRAMキャッシュラインに対するタグを前記タグディレクトリキャッシュディレクトリに書き込むステップと、
前記新規DRAMキャッシュラインに対するタグを、前記DRAMキャッシュの前記タグディレクトリの中で更新するステップと
をさらに備える、
請求項33に記載の方法。
【請求項３５】
前記DRAMキャッシュ管理回路がライトバックモードで動作するように構成され、
前記方法が、
書込みアドレス、およびダーティなエビクト済みデータを備える書込みデータを備える、メモリ書込み要求を、システムキャッシュから受信するステップと、
前記タグディレクトリキャッシュディレクトリの中に前記書込みアドレスが見つかるかどうかを決定するステップと、
前記タグディレクトリキャッシュディレクトリの中に前記書込みアドレスが見つかるという決定に応答して、
前記DRAMキャッシュの中に前記書込みアドレスが見つかるかどうかを、前記タグディレクトリキャッシュに基づいて決定するステップと、
前記DRAMキャッシュの中に前記書込みアドレスが見つかるという決定に応答して、
前記書込みアドレスに対するダーティビットを、前記タグディレクトリキャッシュディレクトリの中で設定するステップと、
前記DRAMキャッシュの中の、前記書込みアドレスに対するDRAMキャッシュラインに、前記ダーティなエビクト済みデータを書き込むステップと、
前記DRAMキャッシュの中に前記書込みアドレスが見つからないという決定に応答して、前記書込みデータを前記DRAMキャッシュに書き込むステップと、
前記タグディレクトリキャッシュディレクトリの中に前記書込みアドレスが見つからないという決定に応答して、
前記書込みアドレス用のタグが前記DRAMキャッシュの前記タグディレクトリの中に記憶されることになる、前記DRAMキャッシュの前記タグディレクトリから、新規タグディレクトリキャッシュラインのためのデータを取り出すステップと、
前記新規タグディレクトリキャッシュラインを前記タグディレクトリキャッシュの中にインストールするステップと
をさらに備える、
請求項21に記載の方法。
【請求項３６】
前記DRAMキャッシュの中に前記書込みアドレスが見つからないという決定に応答して、前記ダーティなエビクト済みデータを前記DRAMキャッシュに書き込むステップが、
前記DRAMキャッシュ内に無効ウェイが存在するかどうかを決定するステップと、
前記DRAMキャッシュ内に無効ウェイが存在するという決定に応答して、
新規DRAMキャッシュラインに対するターゲットウェイとして前記無効ウェイを割り振るステップと、
前記ダーティなエビクト済みデータを前記ターゲットウェイの中の前記新規DRAMキャッシュラインに書き込むステップと、
前記新規DRAMキャッシュラインに対する、前記タグディレクトリキャッシュディレクトリの中の1つまたは複数の有効ビットを、前記DRAMキャッシュラインが有効であることを示すように更新するステップと、
前記新規DRAMキャッシュラインに対するタグを、前記DRAMキャッシュの前記タグディレクトリの中で更新するステップと
を備える、
請求項35に記載の方法。
【請求項３７】
前記DRAMキャッシュの中に前記書込みアドレスが見つからないという決定に応答して、前記ダーティなエビクト済みデータを前記DRAMキャッシュに書き込むステップが、前記DRAMキャッシュ内に無効ウェイが存在しないという決定に応答して、
前記DRAMキャッシュ内にクリーンウェイが存在するかどうかを決定するステップと、
前記DRAMキャッシュ内にクリーンウェイが存在するという決定に応答して、
前記新規DRAMキャッシュラインに対するターゲットウェイとして前記クリーンウェイを割り振るステップと、
前記新規DRAMキャッシュラインに対する前記ダーティなエビクト済みデータを前記ターゲットウェイに書き込むステップと、
前記DRAMキャッシュの前記タグディレクトリの中の1つまたは複数の有効ビットを更新するステップと、
前記ターゲットウェイの1つまたは複数のタグに対する有効ビットを、前記タグディレクトリキャッシュディレクトリの中で更新するステップと、
前記新規DRAMキャッシュラインに対するタグを前記タグディレクトリキャッシュディレクトリに書き込むステップと、
前記新規DRAMキャッシュラインに対するタグを、前記DRAMキャッシュの前記タグディレクトリの中で更新するステップと
をさらに備える、
請求項36に記載の方法。
【請求項３８】
前記DRAMキャッシュの中に前記書込みアドレスが見つからないという決定に応答して、前記ダーティなエビクト済みデータを前記DRAMキャッシュに書き込むステップが、前記タグディレクトリキャッシュ内にクリーンウェイが存在しないという決定に応答して、
前記タグディレクトリキャッシュ内のダーティウェイを選択するステップと、
前記新規タグディレクトリキャッシュラインに対する前記ターゲットウェイとして前記ダーティウェイを割り振るステップと、
前記ターゲットウェイ内の各ダーティDRAMキャッシュラインを前記システムメモリDRAMに書き込むステップと、
前記ダーティなエビクト済みデータを前記ターゲットウェイの中の前記新規DRAMキャッシュラインに書き込むステップと、
前記DRAMキャッシュの前記タグディレクトリの中の1つまたは複数の有効ビットを更新するステップと、
前記タグディレクトリキャッシュの中の前記ターゲットウェイの1つまたは複数のタグに対する有効インジケータを更新するステップと、
前記新規DRAMキャッシュラインに対するタグを前記タグディレクトリキャッシュディレクトリに書き込むステップと、
前記新規DRAMキャッシュラインに対するタグを、前記DRAMキャッシュの前記タグディレクトリの中で更新するステップと
をさらに備える、
請求項37に記載の方法。
【請求項３９】
ダイナミックランダムアクセスメモリ(DRAM)キャッシュ管理回路であって、
読込みアドレスを備えるメモリ読込み要求を受信するための手段と、
前記DRAMキャッシュ管理回路のタグディレクトリキャッシュのタグディレクトリキャッシュディレクトリの中に前記読込みアドレスが見つかるかどうかを決定するための手段と、
前記タグディレクトリキャッシュディレクトリの中に前記読込みアドレスが見つからないという決定に応答して、システムメモリDRAMの中で前記読込みアドレスにおけるデータを読み込むための手段と、
前記タグディレクトリキャッシュディレクトリの中に前記読込みアドレスが見つかるという決定に応答して、高帯域幅メモリの一部であるDRAMキャッシュの中に前記読込みアドレスが見つかるかどうかを、前記タグディレクトリキャッシュに基づいて決定するための手段と、
前記DRAMキャッシュの中に前記読込みアドレスが見つからないという決定に応答して、前記システムメモリDRAMの中で前記読込みアドレスにおけるデータを読み込むための手段と、
前記DRAMキャッシュの中に前記読込みアドレスが見つかるという決定に応答して、前記読込みアドレスに対するデータを前記DRAMキャッシュから読み込むための手段と
を備えるDRAMキャッシュ管理回路。
【発明の詳細な説明】
【技術分野】
【０００１】
優先権主張
本出願は、2016年1月21日に出願された「PROVIDING SCALABLE DYNAMIC RANDOM ACCESS MEMORY (DRAM) CACHE MANAGEMENT USING TAG DIRECTORY CACHES」と題する米国仮特許出願第62/281,234号の優先権を主張し、その内容は、その全体が参照により本明細書に組み込まれる。
【０００２】
本出願はまた、2016年6月24日に出願された「PROVIDING SCALABLE DYNAMIC RANDOM ACCESS MEMORY (DRAM) CACHE MANAGEMENT USING TAG DIRECTORY CACHES」と題する米国特許出願第15/192,019号の優先権を主張し、その内容は、その全体が参照により本明細書に組み込まれる。
【０００３】
本開示の技術は、一般に、ダイナミックランダムアクセスメモリ(DRAM)管理に関し、詳細には、DRAMキャッシュの管理に関する。
【背景技術】
【０００４】
垂直に相互接続されている積み重ねられた複数のダイから構成されるダイ積層型集積回路(IC)の出現が、ダイ積層型ダイナミックランダムアクセスメモリ(DRAM)の発展を可能にしている。ダイ積層型DRAMは、類似のアクセスレイテンシをもたらしながら従来のシステムメモリDRAMよりも大きい帯域幅を提供する、本明細書で「高帯域幅メモリ」と呼ぶものを実施するために使用され得る。以前にシステムメモリDRAMから読み込まれ、非限定的な例としてレベル3(L3)キャッシュなどのより高いレベルのシステムキャッシュからエビクト(evict)された、頻繁にアクセスされるデータを記憶するために、高帯域幅メモリが使用されてDRAMキャッシュを実施し得る。高帯域幅メモリの中にDRAMキャッシュを設けることにより、システムメモリDRAMにおけるメモリ競合が低減し得、したがって、事実上、全体的なメモリ帯域幅が増大し得る。
【０００５】
しかしながら、高帯域幅メモリの中でのDRAMキャッシュの管理は、課題を生じることがある。DRAMキャッシュは、サイズにおける規模のオーダーがシステムメモリDRAMよりも小さいことがある。したがって、DRAMキャッシュがシステムメモリDRAMの中のデータのサブセットしか記憶できないので、DRAMキャッシュの効率的な使用は、記憶すべきメモリアドレスの知的な選択によって決まる。したがって、DRAMキャッシュ管理メカニズムは、どのメモリアドレスがDRAMキャッシュの中に選択的にインストールされるべきかを決定することが可能であるべきであり、いつメモリアドレスがDRAMキャッシュの中にインストールされるべきか、かつ/またはDRAMキャッシュからエビクトされるべきかを、さらに決定することが可能であるべきである。DRAMキャッシュ管理メカニズムが、DRAMキャッシュにとってのアクセスレイテンシへの影響を最小限に抑えること、ならびにDRAMキャッシュサイズおよび/またはシステムメモリDRAMサイズに関してスケーラブルであることも、望ましいことがある。
【０００６】
DRAMキャッシュ管理に対するいくつかの手法は、キャッシュされたメモリアドレスに対応するタグを記憶するためのキャッシュを利用する。そのような1つの手法の下では、高帯域幅メモリとは別個の、コンピュートダイ(compute die)上のスタティックランダムアクセスメモリ(SRAM)に、タグキャッシュが記憶される。しかしながら、より大きいDRAMキャッシュサイズは、SRAMに記憶するように望まれない、かつ/またはSRAMに記憶するには大きすぎる、大きいタグキャッシュを必要とし得るので、この手法はDRAMキャッシュサイズにとって十分にスケーラブルではないことがある。別の手法は、使用されるSRAMの量を削減すること、および所与のメモリアドレスが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キャッシュ管理回路のさらなる態様は、ライトスルーモードまたはライトバックモードで動作するように構成され得る。後者の態様では、タグディレクトリキャッシュディレクトリは、タグディレクトリキャッシュの中に記憶されるキャッシュラインごとにダーティビットをさらに提供し得る。いくつかの態様は、タグディレクトリキャッシュディレクトリがダーティビットを追跡するように構成される場合のみ、ライトバックモードにおいて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キャッシュ管理回路によって管理され得るDRAMキャッシュの例示的な実装形態の比較を示すブロック図である。
【図２Ｂ】異なるDRAMキャッシュラインサイズを実装形態が提供する、図1のDRAMキャッシュ管理回路によって管理され得るDRAMキャッシュの例示的な実装形態の比較を示すブロック図である。
【図３Ａ】図1のタグディレクトリキャッシュおよびタグディレクトリキャッシュディレクトリを使用して読込み動作を実行するための、図1のDRAMキャッシュ管理回路の例示的な動作を示すフローチャートである。
【図３Ｂ】図1のタグディレクトリキャッシュおよびタグディレクトリキャッシュディレクトリを使用して読込み動作を実行するための、図1のDRAMキャッシュ管理回路の例示的な動作を示すフローチャートである。
【図４Ａ】システムキャッシュからのデータのエビクション(たとえば、ライトバックモードまたはライトスルーモードでエビクトされた、「クリーンな」(すなわち、変更されていない)または「ダーティな」(すなわち、変更されている)エビクト済みデータ)から得られる書込み動作を実行するための、図1のDRAMキャッシュ管理回路の例示的な動作を示すフローチャートである。
【図４Ｂ】システムキャッシュからのデータのエビクション(たとえば、ライトバックモードまたはライトスルーモードでエビクトされた、「クリーンな」(すなわち、変更されていない)または「ダーティな」(すなわち、変更されている)エビクト済みデータ)から得られる書込み動作を実行するための、図1のDRAMキャッシュ管理回路の例示的な動作を示すフローチャートである。
【図４Ｃ】システムキャッシュからのデータのエビクション(たとえば、ライトバックモードまたはライトスルーモードでエビクトされた、「クリーンな」(すなわち、変更されていない)または「ダーティな」(すなわち、変更されている)エビクト済みデータ)から得られる書込み動作を実行するための、図1のDRAMキャッシュ管理回路の例示的な動作を示すフローチャートである。
【図４Ｄ】システムキャッシュからのデータのエビクション(たとえば、ライトバックモードまたはライトスルーモードでエビクトされた、「クリーンな」(すなわち、変更されていない)または「ダーティな」(すなわち、変更されている)エビクト済みデータ)から得られる書込み動作を実行するための、図1のDRAMキャッシュ管理回路の例示的な動作を示すフローチャートである。
【図４Ｅ】システムキャッシュからのデータのエビクション(たとえば、ライトバックモードまたはライトスルーモードでエビクトされた、「クリーンな」(すなわち、変更されていない)または「ダーティな」(すなわち、変更されている)エビクト済みデータ)から得られる書込み動作を実行するための、図1のDRAMキャッシュ管理回路の例示的な動作を示すフローチャートである。
【図５Ａ】タグディレクトリキャッシュインストール動作を実行するための、図1のDRAMキャッシュ管理回路の例示的な動作を示すフローチャートである。
【図５Ｂ】タグディレクトリキャッシュインストール動作を実行するための、図1のDRAMキャッシュ管理回路の例示的な動作を示すフローチャートである。
【図５Ｃ】タグディレクトリキャッシュインストール動作を実行するための、図1のDRAMキャッシュ管理回路の例示的な動作を示すフローチャートである。
【図５Ｄ】タグディレクトリキャッシュインストール動作を実行するための、図1のDRAMキャッシュ管理回路の例示的な動作を示すフローチャートである。
【図６】図1のDRAMキャッシュ管理回路を含むことができる例示的なプロセッサベースシステムのブロック図である。
【発明を実施するための形態】
【００１４】
次に図面を参照しながら、本開示のいくつかの例示的な態様が説明される。「例示的」という単語は、本明細書では「例、事例、または例示としての働きをすること」を意味するために使用される。本明細書で「例示的」として説明されるいかなる態様も、必ずしも他の態様よりも好ましいまたは有利であると解釈されるべきではない。
【００１５】
発明を実施するための形態において開示する態様は、タグディレクトリキャッシュを使用するスケーラブルダイナミックランダムアクセスメモリ(DRAM)キャッシュ管理を提供することを含む。本明細書で説明するように、DRAMキャッシュ管理方式によって利用されるリソースのサイズが、管理されているDRAMキャッシュの容量とは相対的に無関係となるという意味で、DRAMキャッシュ管理方式は「スケーラブル」である。したがって、この点について、図1は、DRAMキャッシュ104を管理するためのDRAMキャッシュ管理回路102、およびDRAMキャッシュ104用の関連するタグディレクトリ106を提供する、例示的なプロセッサベースシステム100のブロック図であり、DRAMキャッシュ104とタグディレクトリ106の両方が、高帯域幅メモリ108の一部である。プロセッサベースシステム100は、システムメモリDRAM110を含み、システムメモリDRAM110は、いくつかの態様では、1つまたは複数のデュアルインラインメモリモジュール(DIMM)を備え得る。プロセッサベースシステム100は、コンピュートダイ112をさらに提供し、コンピュートダイ112の上にシステムキャッシュ114(たとえば、非限定的な例としてレベル3(L3)キャッシュ)が配置される。いくつかの態様では、タグディレクトリ106のサイズは、DRAMキャッシュ104のサイズに比例し、したがって、DRAMキャッシュ104と一緒に高帯域幅メモリ108の中に収まるほど十分小さくてよい。したがって、システムメモリDRAM110は、DRAMキャッシュ104用のタグディレクトリ106情報を取り出すためにアクセスされなくてよい。
【００１６】
プロセッサベースシステム100は、他の要素の中でも、知られているデジタル論理要素、半導体回路、処理コア、および/もしくはメモリ構造のうちのいずれか1つ、またはそれらの組合せを包含し得る。本明細書で説明する態様は、要素の任意の特定の構成に限定されず、開示する技法は、半導体ダイまたはパッケージ上の様々な構造およびレイアウトに容易に拡張され得る。プロセッサベースシステム100のいくつかの態様が、図1に示すものに加えて要素を含んでよいことを理解されたい。
【００１７】
メモリ帯域幅を改善するために、プロセッサベースシステム100の高帯域幅メモリ108内のDRAMキャッシュ104は、システムメモリDRAM110内のメモリライン116(0)〜116(X)から以前に読み込まれ、かつ/またはシステムキャッシュ114からエビクトされた、メモリアドレス(図示せず)およびデータ(図示せず)をキャッシュするために使用され得る。非限定的な例として、いくつかの態様は、システムメモリDRAM110からデータを読み込む時のみDRAMキャッシュ104の中にデータがキャッシュされ得ることを提供してよく、いくつかの態様では、データは、システムキャッシュ114からエビクトされる時のみDRAMキャッシュ104の中にキャッシュされてよい。いくつかの態様によれば、プロセッサ負荷、およびシステムキャッシュ114からのダーティなエビクションによってトリガされる読込みに対して、データは、システムメモリDRAM110からデータを読み込む時にDRAMキャッシュ104の中にキャッシュされ得る。
【００１８】
DRAMキャッシュ104は、以前に読み込まれたメモリアドレスおよびデータを記憶するために、ウェイ120(0)〜120(C)に編成されたDRAMキャッシュライン118(0)〜118(B)、118'(0)〜118'(B)を提供する。DRAMキャッシュ104内のDRAMキャッシュライン118(0)〜118(B)、118'(0)〜118'(B)の各々に対して、DRAMキャッシュ104用のタグディレクトリ106は、対応するDRAMキャッシュライン118(0)〜118(B)、118'(0)〜118'(B)のメモリアドレスから生成されたタグ122(0)〜122(I)を記憶する。一例として、システムメモリDRAM110のサイズが4テラバイトである例示的なプロセッサベースシステム100では、DRAMキャッシュライン118(0)〜118(B)、118'(0)〜118'(B)に対するメモリアドレスは各々、42ビットを含み得る。メモリアドレスの最上位の12ビット(すなわち、ビット41〜30)は、タグディレクトリ106の中のメモリアドレス用のタグ122(0)〜122(I)(「T」)として使用され得る。タグディレクトリ106はまた、対応するタグ122(0)〜122(I)が有効であるかどうかを示す有効ビット124(0)〜124(I)(「V」)、およびタグ122(0)〜122(I)に対応するDRAMキャッシュライン118(0)〜118(B)、118'(0)〜118'(B)が変更されているかどうかを示すダーティビット126(0)〜126(I)(「D」)を記憶する。いくつかの態様では、DRAMキャッシュ管理回路102がダーティデータを追跡するように(たとえば、ライトバックモードをサポートすることによって)構成されている場合のみ、ダーティデータがDRAMキャッシュ104の中で対処され得る。
【００１９】
高帯域幅メモリ108内のDRAMキャッシュ104は、システムメモリDRAM110とは独立に、システムメモリDRAM110と並行してアクセスされ得る。その結果、メモリ帯域幅は、DRAMキャッシュ104とシステムメモリDRAM110の両方から同時に読み込むことによって事実上増大し得る。いくつかの態様では、DRAMキャッシュ104は、DRAMキャッシュ104内でのエビクションに対する候補を決定するためにランダム置換ポリシーを実施し得るが、いくつかの態様は、DRAMキャッシュ104の特定の実装形態に対して最適化された他の置換ポリシーを実施してよい。
【００２０】
メモリ動作ごとにDRAMキャッシュ104のタグディレクトリ106にアクセスすることは、DRAMキャッシュ104を使用することの性能利点を相殺し得るレイテンシペナルティを招くことがある。したがって、レイテンシペナルティを最小限に抑えながらメモリ帯域幅を改善するために、DRAMキャッシュ104へのアクセスを管理するためのスケーラブルメカニズムを提供することが望ましい。この点について、DRAMキャッシュ管理回路102は、DRAMキャッシュ104へのアクセスを管理するために提供される。DRAMキャッシュ管理回路102は、コンピュートダイ112の上に配置され、高帯域幅メモリ108およびシステムメモリDRAM110に通信可能に結合される。DRAMキャッシュ管理回路102はまた、システムキャッシュ114によって、かつ/またはプロセッサベースシステム100の中の他のマスタデバイス(図示せず)(たとえば、非限定的な例として、中央処理装置(CPU)、入力/出力(I/O)インターフェース、および/またはグラフィックス処理装置(GPU))によって、読込みおよび書込みが行われ得る。以下でより詳細に説明するように、DRAMキャッシュ管理回路102は、データを取り出すべきメモリアドレスを指定する読込みアドレス130を備えるメモリ読込み要求128の受信に応答して、メモリ読込み動作を実行し得る。いくつかの態様は、システムキャッシュ114におけるミスに応答して、メモリ読込み要求128が受信されることを行い得る。いくつかの態様では、DRAMキャッシュ管理回路102は、書込みデータ136を書き込むべき書込みアドレス134を備えるメモリ書込み要求132の受信に応答して、メモリ書込み動作をさらに実行し得る。
【００２１】
タグディレクトリ106へのアクセスから生じることがあるアクセスレイテンシを短縮するために、DRAMキャッシュ管理回路102は、タグディレクトリキャッシュ138、およびタグディレクトリキャッシュ138用のタグディレクトリキャッシュディレクトリ140を提供する。DRAMキャッシュ104内で頻繁にアクセスされるDRAMキャッシュライン118(0)〜118(B)、118'(0)〜118'(B)に対応するタグディレクトリ106からタグ122(0)〜122(I)をキャッシュするために、タグディレクトリキャッシュ138は、ウェイ144(0)〜144(C)に編成されたタグディレクトリキャッシュライン142(0)〜142(A)、142'(0)〜142'(A)を提供する。タグディレクトリキャッシュ138内のタグディレクトリキャッシュライン142(0)〜142(A)、142'(0)〜142'(A)の各々は、DRAMキャッシュ104の複数のDRAMキャッシュライン118(0)〜118(B)、118'(0)〜118'(B)に対するタグ122(0)〜122(I)を含む、タグディレクトリ106からのメモリのブロックを記憶し得る。非限定的な例として、いくつかの態様では、DRAMキャッシュ104用のタグディレクトリ106の中に記憶されるタグ122(0)〜122(I)は、各々16ビットであってよく、タグディレクトリキャッシュ138内のタグディレクトリキャッシュライン142(0)〜142(A)、142'(0)〜142'(A)は、各々64バイトであってよい。したがって、タグディレクトリキャッシュ138内のタグディレクトリキャッシュライン142(0)〜142(A)、142'(0)〜142'(A)の各々は、タグディレクトリ106からの32個のタグ122(0)〜122(31)を記憶し得る。
【００２２】
タグディレクトリキャッシュ138内のタグディレクトリキャッシュライン142(0)〜142(A)、142'(0)〜142'(A)ごとに、タグディレクトリキャッシュ138用のタグディレクトリキャッシュディレクトリ140は、DRAMキャッシュ104の対応するDRAMキャッシュライン118(0)〜118(B)、118'(0)〜118'(B)のメモリアドレスから生成されたタグ146(0)〜146(J)(「T」)を記憶する。たとえば、メモリアドレスが42ビットを含む例示的なプロセッサベースシステム100では、ビット29〜17(メモリアドレスに対するデータが記憶される、DRAMキャッシュ104のセットを決定するために使用されるメモリアドレスの一部分を表し得る)は、タグディレクトリキャッシュディレクトリ140の中のメモリアドレス用のタグ146(0)〜146(J)として使用され得る。タグディレクトリキャッシュ138用のタグディレクトリキャッシュディレクトリ140はまた、対応するタグ146(0)〜146(J)が有効であるかどうかを示す有効ビット148(0)〜148(J)(「V」)、およびタグ146(0)〜146(J)に対応するタグディレクトリキャッシュライン142(0)〜142(A)、142'(0)〜142'(A)が変更されているかどうかを示すダーティビット150(0)〜150(J)(「D」)を記憶する。
【００２３】
いくつかの態様では、DRAMキャッシュ管理回路102は、メモリ帯域幅を改善しメモリアクセス競合を低減するために、負荷分散回路152をさらに提供する。要求されるメモリアドレスがシステムメモリDRAM110またはDRAMキャッシュ104のいずれかから読み込まれ得る環境では、負荷分散回路152は、非限定的な例として、帯域幅およびレイテンシなどの負荷分散基準に基づいて、メモリアドレスを読み込むべき最も適切なソースを決定する。このようにして、負荷分散回路152は、システムメモリDRAM110とDRAMキャッシュ104との間でメモリアクセスを分配して、システムリソースの使用を最適化し得る。
【００２４】
いくつかの態様では、DRAMキャッシュ管理回路102は、「ライトスルー」キャッシュ管理システムとして実装され得る。ライトスルー実装形態では、システムキャッシュ114からエビクトされるダーティな(すなわち、変更されている)データは、DRAMキャッシュ管理回路102によって、高帯域幅メモリ108のDRAMキャッシュ104とシステムメモリDRAM110の両方に書き込まれる。その結果、DRAMキャッシュ104内のデータおよびシステムメモリDRAM110内のデータは、常に同期される。ライトスルー実装形態におけるDRAMキャッシュ104とシステムメモリDRAM110の両方が正しいデータを含むことを保証されるので、DRAMキャッシュ管理回路102の負荷分散回路152は、DRAMキャッシュ104とシステムメモリDRAM110との間でメモリ読込み動作を自由に負荷分散させ得る。しかしながら、DRAMキャッシュ104への各書込みがシステムメモリDRAM110への書込みに対応するので、DRAMキャッシュ管理回路102のライトスルー実装形態は、システムメモリDRAM110への書込み帯域幅の低減をもたらさないことがある。
【００２５】
DRAMキャッシュ管理回路102のいくつかの態様は、タグディレクトリキャッシュ138のタグディレクトリキャッシュライン142(0)〜142(A)、142'(0)〜142'(A)が、DRAMキャッシュ104のタグディレクトリ106からのタグ122(0)〜122(I)と一緒にダーティビット126(0)〜126(I)をキャッシュする、「ライトバック」キャッシュ管理システムとして実装され得る。ダーティビット126(0)〜126(I)は、タグディレクトリキャッシュ138内にキャッシュされたタグ122(0)〜122(I)に対応する、DRAMキャッシュ104の中に記憶されたデータがダーティであるかどうか(すなわち、データがDRAMキャッシュ104に書き込まれたがシステムメモリDRAM110には書き込まれなかったかどうか)を示す。データがダーティでない場合、データは、DRAMキャッシュ管理回路102の負荷分散回路152によって決定されるように、DRAMキャッシュ104またはシステムメモリDRAM110のいずれかから読み込まれてよい。しかしながら、タグディレクトリ106の中にキャッシュされたダーティビット126(0)〜126(I)が、DRAMキャッシュ104の中に記憶されたデータがダーティであることを示す場合、DRAMキャッシュ104が、変更されているデータにとって唯一のソースであるので、負荷分散は可能でない。したがって、DRAMキャッシュ管理回路102は、DRAMキャッシュ104からダーティデータを読み込む。DRAMキャッシュ管理回路102のライトバック実装形態は、システムメモリDRAM110へのメモリ書込み帯域幅を低減し得るが、DRAMキャッシュ管理回路102は、DRAMキャッシュ104からエビクトされるダーティデータを最終的にシステムメモリDRAM110にライトバックしなければならない。DRAMキャッシュ管理回路102のライトバック実装形態のいくつかの態様では、タグディレクトリキャッシュライン142(0)〜142(A)、142'(0)〜142'(A)のうちの1つがタグディレクトリキャッシュ138からエビクトされる時、DRAMキャッシュ管理回路102は、エビクトされるタグディレクトリキャッシュライン142(0)〜142(A)、142'(0)〜142'(A)に対応する、DRAMキ
ャッシュ104の中のすべてのダーティデータを、システムメモリDRAM110にコピーするように構成される。
【００２６】
DRAMキャッシュ管理回路102のいくつかの態様は、DRAMキャッシュ管理回路102によって行われる対応する確率的決定に従って、いくつかの動作(たとえば、非限定的な例として、システムメモリDRAM110および/もしくはDRAMキャッシュ104へのメモリアクセスを伴う動作、ならびに/またはタグディレクトリキャッシュ138およびタグディレクトリキャッシュディレクトリ140の更新)を実行することによって、メモリ帯域幅をさらに改善し得る。各確率的決定は、対応する動作の頻度を同調させるために使用されてよく、ステートレスであり得る(すなわち、以前の確率的決定の結果に関係しない)。たとえば、DRAMキャッシュ管理回路102のいくつかの態様によれば、システムキャッシュ114によってエビクトされる、あるパーセンテージのランダムに選択されたデータだけがDRAMキャッシュ104に書き込まれるような確率的決定に基づいて、システムキャッシュ114によってエビクトされるデータがDRAMキャッシュ104に書き込まれてよい。同様に、DRAMキャッシュ管理回路102のいくつかの態様は、確率的決定に基づいてタグディレクトリキャッシュ138を補充するように構成され得る。したがって、「確率的に」行われるものとして本明細書で説明する各動作が、所与の事例において実行されてもされなくてもよいこと、およびさらに所与の確率的動作としての動作が行われること、または行われないことが、DRAMキャッシュ管理回路102による追加の動作をさらにトリガしてよいことを理解されたい。
【００２７】
タグディレクトリキャッシュ138によって追跡され得るメモリの量は、いくつかの態様では、DRAMキャッシュ104のDRAMキャッシュライン118(0)〜118(B)、118'(0)〜118'(B)のキャッシュラインサイズをシステムキャッシュラインサイズの倍数にすることによって増大し得る。「セグメント化キャッシュラインを有するセクタ化DRAMキャッシュ」と呼ばれるそのような態様では、システムメモリDRAM110の複数のメモリライン116(0)〜116(X)は、DRAMキャッシュ104の単一のDRAMキャッシュライン118(0)〜118(B)、118'(0)〜118'(B)の対応するデータセグメント(図示せず)の中に記憶され得る。DRAMキャッシュ104のDRAMキャッシュライン118(0)〜118(B)、118'(0)〜118'(B)内の各データセグメントは、独立に管理、アクセス、および更新されてよく、ダーティデータセグメントだけがシステムメモリDRAM110にライトバックされることを必要とする。ただし、DRAMキャッシュ104からのキャッシュライン割振り、エビクション、および置換は、DRAMキャッシュ104のキャッシュラインサイズの粒度で行われなければならない。
【００２８】
図1のDRAMキャッシュ管理回路102によって管理され得るDRAMキャッシュ104の例示的な実装形態の比較を示すために、図2A〜図2Bが提供される。図2Aは、システムキャッシュラインサイズに等しいキャッシュラインサイズを提供するDRAMキャッシュ104を示し、図2Bは、システムキャッシュラインサイズの4倍に等しいキャッシュラインサイズを提供するDRAMキャッシュ104を示す。明快のために、図2Aおよび図2Bを説明する際に図1の要素が参照される。
【００２９】
図2Aにおいて、DRAMキャッシュライン200が図示される。DRAMキャッシュライン200は、いくつかの態様では、図1のDRAMキャッシュライン118(0)〜118(B)、118'(0)〜118'(B)のうちの1つに相当し得る。図2Aの例では、DRAMキャッシュライン200は、システムキャッシュラインサイズと同じサイズである。したがって、DRAMキャッシュライン200は、システムメモリDRAM110からの単一のキャッシュされるメモリライン202(図1のメモリライン116(0)〜116(X)のうちの1つに対応する)を記憶することができる。キャッシュされたメモリライン202の状態を識別および追跡するために、DRAMキャッシュ104用のタグディレクトリ106のタグディレクトリエントリ204は、アドレスタグ206(「T」)、有効ビット208(「V」)、およびダーティビット210(「D」)を含む。対照的に、図2Bは、システムキャッシュラインサイズの4倍であるDRAMキャッシュライン212を示す。したがって、図1のDRAMキャッシュライン118(0)〜118(B)、118'(0)〜118'(B)のうちの1つに対応するDRAMキャッシュライン212は、4つのデータセグメント214(0)〜214(3)を備える。データセグメント214(0)〜214(3)の各々は、システムメモリDRAM110からのキャッシュされるメモリライン116(0)〜116(X)(図示せず)を記憶することができる。タグディレクトリエントリ216は、DRAMキャッシュライン212用のアドレスタグ218(「T」)を含み、データセグメント214(0)〜214(3)に対応する4つの有効ビット220(0)〜220(3)(「V0〜V3」)および4つのダーティビット222(0)〜222(3)(「D0〜D3」)をさらに含む。有効ビット220(0)〜220(3)およびダーティビット222(0)〜222(3)は、データセグメント214(0)〜214(3)の各々が他のデータセグメント214(0)〜214(3)とは独立に管理されるのを可能にする。
【００３０】
図3A〜図3Bは、図1のタグディレクトリキャッシュ138およびDRAMキャッシュ104を使用して読込み動作を実行するための、図1のDRAMキャッシュ管理回路102の例示的な動作を示すフローチャートである。明快のために、図3A〜図3Bを説明する際に図1の要素が参照される。図3Aにおいて、読込みアドレス130を備えるメモリ読込み要求128をDRAMキャッシュ管理回路102が受信して、動作が開始する(ブロック300)。この点について、DRAMキャッシュ管理回路102は、本明細書で「読込みアドレスを備えるメモリ読込み要求を受信するための手段」と呼ばれることがある。DRAMキャッシュ管理回路102は、DRAMキャッシュ104のタグディレクトリキャッシュ138のタグディレクトリキャッシュディレクトリ140の中に読込みアドレス130が見つかるかどうかを決定する(ブロック302)。したがって、DRAMキャッシュ管理回路102は、本明細書で「DRAMキャッシュ管理回路のタグディレクトリキャッシュのタグディレクトリキャッシュディレクトリの中に読込みアドレスが見つかるかどうかを決定するための手段」と呼ばれることがある。いくつかの態様では、タグディレクトリキャッシュディレクトリ140の中に読込みアドレス130が見つかるかどうかを決定することは、タグ146(0)〜146(J)のうちの1つが読込みアドレス130に対応するかどうかを決定することを含み得る。非限定的な例として、42ビット読込みアドレス130の場合、タグディレクトリキャッシュ138用のタグディレクトリキャッシュディレクトリ140内の対応するタグ146(0)〜146(J)は、読込みアドレス130に対するデータが記憶されることになるDRAMキャッシュ104のセットを表し得る、読込みアドレス130のビット29〜17を備え得る。
【００３１】
決定ブロック302において、DRAMキャッシュ管理回路102が、タグディレクトリキャッシュディレクトリ140の中に読込みアドレス130が見つからないと決定する場合、処理は図3Bのブロック304において再開する。しかしながら、タグディレクトリキャッシュディレクトリ140の中に読込みアドレス130が見つかる場合、DRAMキャッシュ管理回路102は、次に高帯域幅メモリ108の一部であるDRAMキャッシュ104の中に読込みアドレス130が見つかるかどうかを、タグディレクトリキャッシュ138に基づいて決定する(ブロック306)。DRAMキャッシュ管理回路102は、したがって、本明細書で「タグディレクトリキャッシュディレクトリの中に読込みアドレスが見つかるという決定に応答して、高帯域幅メモリの一部であるDRAMキャッシュの中に読込みアドレスが見つかるかどうかを、タグディレクトリキャッシュに基づいて決定するための手段」と呼ばれることがある。上記で説明したように、タグディレクトリキャッシュ138は、DRAMキャッシュ104用のタグディレクトリ106からタグ122(0)〜122(I)のサブセットをキャッシュする。42ビット読込みアドレス130の場合、タグディレクトリ106内の(したがって、タグディレクトリキャッシュ138の中にキャッシュされた)タグ122(0)〜122(I)の各々は、非限定的な例として、読込みアドレス130の最上位の12ビット(すなわち、ビット41〜30)を備え得る。タグディレクトリキャッシュ138用のタグディレクトリキャッシュディレクトリ140が、タグ146(0)〜146(J)に対する読込みアドレス130内のビットの異なるセットを使用し得るので、ブロック302において、所与の読込みアドレス130が、タグディレクトリキャッシュ138用のタグディレクトリキャッシュディレクトリ140の中でヒットをもたらし、それにもかかわらず実際にはDRAMキャッシュ104の中にキャッシュされないことが可能である。
【００３２】
したがって、決定ブロック306において、DRAMキャッシュ管理回路102が、DRAMキャッシュ104の中に読込みアドレス130が見つからないと決定する場合、DRAMキャッシュ管理回路102は、システムメモリDRAM110の中で読込みアドレス130におけるデータを読み込む(ブロック308)。この点について、DRAMキャッシュ管理回路102は、本明細書で「DRAMキャッシュの中に読込みアドレスが見つからないという決定に応答して、システムメモリDRAMの中で読込みアドレスにおけるデータを読み込むための手段」と呼ばれることがある。DRAMキャッシュ104の中に読込みアドレス130が見つかる場合、DRAMキャッシュ管理回路102は、DRAMキャッシュ104の中の読込みアドレス130に対するデータがクリーンであるかどうか(または、DRAMキャッシュ管理回路102がライトスルーモードで動作しているかどうか)を決定し得る(ブロック310)。そうでない場合、要求されるデータは、DRAMキャッシュ104からのみ安全に読み込まれ得、したがって、DRAMキャッシュ管理回路102は、読込みアドレス130に対するデータをDRAMキャッシュ104から読み込む(ブロック312)。DRAMキャッシュ管理回路102は、したがって、本明細書で「DRAMキャッシュの中に読込みアドレスが見つかるという決定に応答して、読込みアドレスに対するデータをDRAMキャッシュから読み込むための手段」と呼ばれることがある。
【００３３】
一方、決定ブロック310において、DRAMキャッシュ管理回路102が、DRAMキャッシュ104の中の読込みアドレス130に対するデータがクリーンである(または、DRAMキャッシュ管理回路102がライトスルーモードで動作している)と決定する場合、DRAMキャッシュ104とシステムメモリDRAM110の両方が、要求されるデータの同じコピーを含む。DRAMキャッシュ管理回路102は、したがって、DRAMキャッシュ104およびシステムメモリDRAM110の中から好適なデータソースを(たとえば、負荷分散回路152を使用して)識別する(ブロック314)。システムメモリDRAM110が好適なデータソースとして識別される場合、DRAMキャッシュ管理回路102は、システムメモリDRAM110の中で読込みアドレス130におけるデータを読み込む(ブロック316)。そうでない場合、DRAMキャッシュ管理回路102は、読込みアドレス130に対するデータをDRAMキャッシュ104から読み込む(ブロック318)。
【００３４】
次に図3Bを参照すると、図3Aの決定ブロック302において、DRAMキャッシュ管理回路102が、タグディレクトリキャッシュディレクトリ140の中に読込みアドレス130が見つからないと決定する場合、DRAMキャッシュ管理回路102は、システムメモリDRAM110の中で読込みアドレス130におけるデータを読み込む(ブロック304)。したがって、DRAMキャッシュ管理回路102は、本明細書で「タグディレクトリキャッシュディレクトリの中に読込みアドレスが見つからないという決定に応答して、システムメモリDRAMの中で読込みアドレスにおけるデータを読み込むための手段」と呼ばれることがある。いくつかの態様では、DRAMキャッシュ管理回路102はまた、システムメモリDRAM110の中で読込みアドレス130におけるデータを読み込むことと並行して、タグディレクトリキャッシュ138を確率的に補充し得る(ブロック320)。いくつかの態様によれば、タグディレクトリキャッシュ138を確率的に補充するための動作は、DRAMキャッシュ104のタグディレクトリ106から、新規タグディレクトリキャッシュライン142(0)〜142(A)、142'(0)〜142'(A)のためのデータを最初に読み込むことを含み得る(ブロック322)。次いで、新規タグディレクトリキャッシュライン142(0)〜142(A)、142'(0)〜142'(A)が、タグディレクトリキャッシュ138の中にインストールされる(ブロック324)。タグディレクトリキャッシュライン142(0)〜142(A)、142'(0)〜142'(A)をタグディレクトリキャッシュ138の中にインストールするための追加の動作は、図5A〜図5Dに関して以下でさらに詳細に説明される。
【００３５】
ライトスルーモードまたはライトバックモードにおいてシステムキャッシュ114からの(クリーンまたはダーティな)データのエビクションから得られる書込み動作を実行するための、図1のDRAMキャッシュ管理回路102の例示的な動作を示すために、図4A〜図4Eが提供される。明快のために、図4A〜図4Eを説明する際に図1の要素が参照される。追加として、クリーンなエビクト済みデータもしくはダーティなエビクト済みデータを書き込むことのみに関係する動作、および/またはいくつかの態様では、ライトスルーモードもしくはライトバックモードのみに関連する動作は、図4A〜図4Eを説明する際にそのように指定される。
【００３６】
DRAMキャッシュ管理回路102が、書込みアドレス134および書込みデータ136(本明細書で「エビクト済みデータ136」と呼ぶ)を備えるメモリ書込み要求132をシステムキャッシュ114(たとえば、非限定的な例として、L3キャッシュ)から受信して、図4Aにおける動作が開始する(ブロック400)。エビクト済みデータ136は、クリーンなエビクト済みデータまたはダーティなエビクト済みデータを備えてよく、したがって、本明細書で適宜に「クリーンなエビクト済みデータ136」または「ダーティなエビクト済みデータ136」とさらに呼ばれることがある。以下で述べるように、クリーンなエビクト済みデータ136およびダーティなエビクト済みデータ136の処理は、DRAMキャッシュ管理回路102がライトスルーモードで動作するように構成されるのか、それともライトバックモードで動作するように構成されるのかに従って、変わることがある。動作における任意のそのような差異は、図4A〜図4Eを説明する際に以下で言及される。
【００３７】
DRAMキャッシュ管理回路102は、次にタグディレクトリキャッシュディレクトリ140の中に書込みアドレス134が見つかるかどうかを決定する(ブロック402)。いくつかの態様は、タグディレクトリキャッシュディレクトリ140の中に書込みアドレス134が見つかるかどうかを決定することが、タグ146(0)〜146(J)のうちの1つが書込みアドレス134に対応するかどうかを決定することを含み得ることを提供し得る。タグディレクトリキャッシュディレクトリ140の中に書込みアドレス134が見つからない場合、DRAMキャッシュ管理回路102は、書込みアドレス134用のタグ122(0)〜122(I)がDRAMキャッシュ104のタグディレクトリ106の中に記憶されることになる、DRAMキャッシュ104のタグディレクトリ106から、新規タグディレクトリキャッシュライン142(0)〜142(A)、142'(0)〜142'(A)のためのデータを取り出す(ブロック404)。DRAMキャッシュ管理回路102は、次いで、新規タグディレクトリキャッシュライン142(0)〜142(A)、142'(0)〜142'(A)をタグディレクトリキャッシュ138の中にインストールする(ブロック406)。いくつかの態様による、新規タグディレクトリキャッシュライン142(0)〜142(A)、142'(0)〜142'(A)をタグディレクトリキャッシュ138の中にインストールするためのブロック406の例示的な動作は、図5A〜図5Dに関してより詳細に説明される。
【００３８】
決定ブロック402において、DRAMキャッシュ管理回路102が、タグディレクトリキャッシュディレクトリ140の中に書込みアドレス134が見つかると決定する場合、DRAMキャッシュ管理回路102は、DRAMキャッシュ104の中に書込みアドレス134が見つかるかどうかを、タグディレクトリキャッシュ138に基づいてさらに決定する(ブロック408)。上述のように、タグディレクトリキャッシュ138用のタグディレクトリキャッシュディレクトリ140が、タグ146(0)〜146(J)に対する書込みアドレス134内のビットの異なるセットを使用し得るので、この動作が必要である。その結果、ブロック402において、書込みアドレス134が、タグディレクトリキャッシュ138用のタグディレクトリキャッシュディレクトリ140の中でヒットをもたらし、それにもかかわらず実際にはDRAMキャッシュ104の中にキャッシュされないことが可能である。DRAMキャッシュ104の中に書込みアドレス134が見つからない場合、処理は図4Bのブロック410において再開する。しかしながら、決定ブロック408において、DRAMキャッシュ管理回路102が、DRAMキャッシュ104の中に書込みアドレス134が見つかると決定する場合、DRAMキャッシュ管理回路102は、エビクト済みデータ136がクリーンであるのか、それともダーティであるのか、およびDRAMキャッシュ管理回路102がライトバックモードで動作するように構成されるのか、それともライトスルーモードで動作するように構成されるのかに応じて、異なる動作を実行する。ダーティなエビクト済みデータ136をライトバックモードで書き込む時、DRAMキャッシュ管理回路102は、書込みアドレス134に対するダーティビット150(0)〜150(J)を、タグディレクトリキャッシュディレクトリ140の中で設定する(ブロック412)。DRAMキャッシュ管理回路102は、次いで、DRAMキャッシュ104の中の、書込みアドレス134に対するDRAMキャッシュライン118(0)〜118(B)、118'(0)〜118'(B)に、エビクト済みデータ136を書き込む(ブロック414)。処理は、次いで、完了する(ブロック416)。対照的に、エビクト済みデータ136がクリーンなエビクト済みデータ136であるか、またはDRAMキャッシュ管理回路102がライトスルーモードで動作する場合、かつ決定ブロック408においてDRAMキャッシュ104の中に書込みアドレス134が見つかる場合、処理は完了する(ブロック416)。
【００３９】
次に図4Bを参照すると、図4Aの決定ブロック408において、DRAMキャッシュ管理回路102が、DRAMキャッシュ104の中に書込みアドレス134が見つからないと決定する場合、DRAMキャッシュ管理回路102は、エビクト済みデータ136をDRAMキャッシュ104に書き込む(ブロック410)。いくつかの態様では、エビクト済みデータ136をDRAMキャッシュ104に書き込むためのブロック410の例示的な動作は、DRAMキャッシュ104内に無効ウェイ120(0)〜120(C)が存在するかどうかを最初に決定することを含み得る(ブロック418)。そうである場合、処理は図4Cのブロック420において再開する。決定ブロック418において、DRAMキャッシュ管理回路102が、DRAMキャッシュ104内に無効ウェイ120(0)〜120(C)が存在しないと決定する場合、DRAMキャッシュ管理回路102は、次にDRAMキャッシュ104内にクリーンウェイ120(0)〜120(C)が存在するかどうかを決定する(ブロック422)。DRAMキャッシュ104内にクリーンウェイ120(0)〜120(C)が存在する場合、処理は図4Dのブロック424において再開する。そうでない場合、処理は図4Eのブロック426において再開する。
【００４０】
図4Cにおいて、エビクト済みデータ136をDRAMキャッシュ104に書き込むための、図4Bのブロック410の動作が継続する。DRAMキャッシュ管理回路102は、新規DRAMキャッシュライン118(0)〜118(B)、118'(0)〜118'(B)に対するターゲットウェイ120(0)〜120(C)として無効ウェイ120(0)〜120(C)を最初に割り振る(ブロック420)。ターゲットウェイ120(0)〜120(C)の中の新規DRAMキャッシュライン118(0)〜118(B)、118'(0)〜118'(B)にエビクト済みデータ136が書き込まれる(ブロック428)。DRAMキャッシュ管理回路102は、次いで、新規DRAMキャッシュライン118(0)〜118(B)、118'(0)〜118'(B)に対する、タグディレクトリキャッシュディレクトリ140の中の1つまたは複数の有効ビット148(0)〜148(J)を、新規DRAMキャッシュライン118(0)〜118(B)、118'(0)〜118'(B)が有効であることを示すように更新する(ブロック430)。最後に、DRAMキャッシュ管理回路102は、新規DRAMキャッシュライン118(0)〜118(B)、118'(0)〜118'(B)に対するタグ122(0)〜122(I)を、DRAMキャッシュ104のタグディレクトリ106の中で更新する(ブロック432)。
【００４１】
エビクト済みデータ136をDRAMキャッシュ104に書き込むための、図4Bのブロック410の動作は、図4Dにおいて継続する。図4Dにおいて、DRAMキャッシュ管理回路102は、新規DRAMキャッシュライン118(0)〜118(B)、118'(0)〜118'(B)に対するターゲットウェイ120(0)〜120(C)としてクリーンウェイ120(0)〜120(C)を割り振る(ブロック424)。DRAMキャッシュ管理回路102は、次にエビクト済みデータ136をターゲットウェイ120(0)〜120(C)の中の新規DRAMキャッシュライン118(0)〜118(B)、118'(0)〜118'(B)に書き込む(ブロック434)。DRAMキャッシュ104のタグディレクトリ106の中の1つまたは複数の有効ビット124(0)〜124(I)が、次いで更新される(ブロック436)。DRAMキャッシュ管理回路102はまた、ターゲットウェイ120(0)〜120(C)の1つまたは複数のタグ146(0)〜146(J)に対する1つまたは複数の有効ビット148(0)〜148(J)を、タグディレクトリキャッシュディレクトリ140の中で更新する(ブロック438)。DRAMキャッシュ管理回路102は、新規DRAMキャッシュライン118(0)〜118(B)、118'(0)〜118'(B)に対するタグ146(0)〜146(J)をタグディレクトリキャッシュディレクトリ140に書き込む(ブロック440)。最後に、DRAMキャッシュ管理回路102は、新規DRAMキャッシュライン118(0)〜118(B)、118'(0)〜118'(B)に対するタグ122(0)〜122(I)を、DRAMキャッシュ104のタグディレクトリ106の中で更新する(ブロック442)。
【００４２】
図4Eを参照すると、エビクト済みデータ136をDRAMキャッシュ104に書き込むための、図4Bのブロック410の動作が継続する。図4Eにおいて、DRAMキャッシュ管理回路102は、DRAMキャッシュ104内のダーティウェイ120(0)〜120(C)を選択する(ブロック426)。ダーティウェイ120(0)〜120(C)は、次いで、新規DRAMキャッシュライン118(0)〜118(B)、118'(0)〜118'(B)に対するターゲットウェイ120(0)〜120(C)として割り振られる(ブロック444)。DRAMキャッシュ管理回路102は、ターゲットウェイ120(0)〜120(C)内の各ダーティDRAMキャッシュライン118(0)〜118(B)、118'(0)〜118'(B)をシステムメモリDRAM110に書き込む(ブロック446)。処理は、次いで、図4Dのブロック434において再開する。
【００４３】
タグディレクトリキャッシュライン142(0)〜142(A)、142'(0)〜142'(A)をタグディレクトリキャッシュ138の中にインストールするための例示的な動作を示すために、図5A〜図5Dが提供される。明快のために、図5A〜図5Dを説明する際に図1の要素が参照される。図5Aにおいて、DRAMキャッシュ管理回路102がタグディレクトリキャッシュ138内に無効ウェイ144(0)〜144(C)が存在するかどうかを決定して、動作が開始する(ブロック500)。そうである場合、処理は図5Bのブロック502において再開する。しかしながら、タグディレクトリキャッシュ138内に無効ウェイ144(0)〜144(C)が存在しない場合、DRAMキャッシュ管理回路102は、次にタグディレクトリキャッシュ138内にクリーンウェイ144(0)〜144(C)が存在するかどうかを決定する(ブロック504)。そうである場合、処理は図5Cのブロック506において再開する。タグディレクトリキャッシュ138内にクリーンウェイ144(0)〜144(C)が存在しない場合、処理は図5Dのブロック508において再開する。
【００４４】
次に図5Bを参照すると、DRAMキャッシュ管理回路102は、新規タグディレクトリキャッシュライン142(0)〜142(A)、142'(0)〜142'(A)に対するターゲットウェイ144(0)〜144(C)として無効ウェイ144(0)〜144(C)を最初に割り振る(ブロック502)。DRAMキャッシュ管理回路102は、次に新規タグディレクトリキャッシュライン142(0)〜142(A)、142'(0)〜142'(A)をターゲットウェイ144(0)〜144(C)に書き込む(ブロック510)。DRAMキャッシュ管理回路102は、新規タグディレクトリキャッシュライン142(0)〜142(A)、142'(0)〜142'(A)に対する1つまたは複数の有効ビット148(0)〜148(J)を、タグディレクトリキャッシュディレクトリ140の中で更新する(ブロック512)。DRAMキャッシュ管理回路102は、次いで、新規タグディレクトリキャッシュライン142(0)〜142(A)、142'(0)〜142'(A)に対するタグ146(0)〜146(J)をタグディレクトリキャッシュディレクトリ140に書き込む(ブロック514)。
【００４５】
図5Cを参照すると、DRAMキャッシュ管理回路102は、新規タグディレクトリキャッシュライン142(0)〜142(A)、142'(0)〜142'(A)に対するターゲットウェイ144(0)〜144(C)としてクリーンウェイ144(0)〜144(C)を割り振る(ブロック506)。DRAMキャッシュ管理回路102は、次いで、ターゲットウェイ144(0)〜144(C)の1つまたは複数のタグ146(0)〜146(J)に対する、DRAMキャッシュ104のタグディレクトリ106の中の1つまたは複数の有効ビット124(0)〜124(I)を更新する(ブロック516)。DRAMキャッシュ管理回路102はまた、ターゲットウェイ144(0)〜144(C)の1つまたは複数のタグ122(0)〜122(I)を、DRAMキャッシュ104のタグディレクトリ106の中で更新する(ブロック518)。処理は、次いで、図5Bのブロック510において再開する。
【００４６】
図5Dにおいて、DRAMキャッシュ管理回路102は、タグディレクトリキャッシュ138内のダーティウェイ144(0)〜144(C)を選択する(ブロック508)。ダーティウェイ144(0)〜144(C)は、新規タグディレクトリキャッシュライン142(0)〜142(A)、142'(0)〜142'(A)に対するターゲットウェイ144(0)〜144(C)として、DRAMキャッシュ管理回路102によって割り振られる(ブロック520)。DRAMキャッシュ管理回路102は、次いで、ターゲットウェイ144(0)〜144(C)内のダーティな各タグディレクトリキャッシュライン142(0)〜142(A)、142'(0)〜142'(A)をシステムメモリDRAM110に書き込む(ブロック522)。処理は、次いで、図5Cのブロック516において再開する。
【００４７】
本明細書で開示する態様による、タグディレクトリキャッシュを使用するスケーラブルDRAMキャッシュ管理を提供することは、任意のプロセッサベースデバイスの中で提供されてよく、または任意のプロセッサベースデバイスに統合されてもよい。例は、限定はしないが、セットトップボックス、エンターテインメントユニット、ナビゲーションデバイス、通信デバイス、固定ロケーションデータユニット、モバイルロケーションデータユニット、モバイルフォン、セルラーフォン、スマートフォン、タブレット、ファブレット、サーバ、コンピュータ、ポータブルコンピュータ、デスクトップコンピュータ、携帯情報端末(PDA)、モニタ、コンピュータモニタ、テレビ、チューナ、ラジオ、衛星ラジオ、音楽プレーヤ、デジタル音楽プレーヤ、ポータブル音楽プレーヤ、デジタルビデオプレーヤ、ビデオプレーヤ、デジタルビデオディスク(DVD)プレーヤ、ポータブルデジタルビデオプレーヤ、および自動車を含む。
【００４８】
この点について、図6は、高帯域幅メモリ(HBM)108の一部であるDRAMキャッシュ104を管理するための、図1に示すDRAMキャッシュ管理回路(DCMC)102を採用できるプロセッサベースシステム600の一例を示す。プロセッサベースシステム600は、図1のコンピュートダイ112を含み、各々が1つまたは複数のプロセッサ604を含む1つまたは複数のCPU602がコンピュートダイ112の上に設けられる。CPU602は、一時的に記憶されているデータに迅速にアクセスするために、プロセッサ604に結合されたキャッシュメモリ606を有してよい。CPU602は、システムバス608に結合され、プロセッサベースシステム600の中に含まれるマスタデバイスとスレーブデバイスとを相互結合することができる。よく知られているように、CPU602は、システムバス608を介してアドレス情報、制御情報、およびデータ情報を交換することによって、これらの他のデバイスと通信する。たとえば、CPU602は、スレーブデバイスの一例としてのメモリコントローラ610に、バストランザクション要求を通信することができる。
【００４９】
他のマスタデバイスおよびスレーブデバイスが、システムバス608に接続され得る。図6に示すように、これらのデバイスは、例として、メモリシステム612、1つまたは複数の入力デバイス614、1つまたは複数の出力デバイス616、1つまたは複数のネットワークインターフェースデバイス618、および1つまたは複数のディスプレイコントローラ620を含むことができる。入力デバイス614は、限定はしないが、入力キー、スイッチ、音声プロセッサなどを含む、任意のタイプの入力デバイスを含むことができる。出力デバイス616は、限定はしないが、オーディオ、ビデオ、他の視覚インジケータなどを含む、任意のタイプの出力デバイスを含むことができる。ネットワークインターフェースデバイス618は、ネットワーク622との間でデータの交換を可能にするように構成された任意のデバイスであり得る。ネットワーク622は、限定はしないが、有線ネットワークまたはワイヤレスネットワーク、プライベートネットワークまたは公衆ネットワーク、ローカルエリアネットワーク(LAN)、ワイヤレスローカルエリアネットワーク(WLAN)、ワイドエリアネットワーク(WAN)、BLUETOOTH(登録商標)ネットワーク、およびインターネットを含む、任意のタイプのネットワークであり得る。ネットワークインターフェースデバイス618は、任意のタイプの所望の通信プロトコルをサポートするように構成され得る。メモリシステム612は、1つまたは複数のメモリユニット624(0)〜624(N)を含むことができる。
【００５０】
CPU602はまた、1つまたは複数のディスプレイ626へ送られる情報を制御するために、システムバス608を介してディスプレイコントローラ620にアクセスするように構成され得る。ディスプレイコントローラ620は、1つまたは複数のビデオプロセッサ628を介して表示されるように情報をディスプレイ626へ送り、ビデオプロセッサ628は、表示すべき情報を処理してディスプレイ626に適したフォーマットにする。ディスプレイ626は、限定はしないが、陰極線管(CRT)、液晶ディスプレイ(LCD)、プラズマディスプレイなどを含む、任意のタイプのディスプレイを含むことができる。
【００５１】
本明細書で開示する態様に関して説明した様々な例示的な論理ブロック、モジュール、回路、およびアルゴリズムが、電子ハードウェア、メモリの中もしくは別のコンピュータ可読媒体の中に記憶されるとともにプロセッサもしくは他の処理デバイスによって実行される命令、または両方の組合せとして実装され得ることを、当業者はさらに諒解されよう。本明細書で説明したマスタデバイスおよびスレーブデバイスは、例として、任意の回路、ハードウェア構成要素、集積回路(IC)、またはICチップにおいて採用され得る。本明細書で開示するメモリは、任意のタイプおよびサイズのメモリであってよく、任意のタイプの所望の情報を記憶するように構成されてよい。この互換性を明確に示すために、様々な例示的な構成要素、ブロック、モジュール、回路、およびステップが、概してそれらの機能に関して上記で説明されてきた。そのような機能がどのように実装されるのかは、特定の適用例、設計選択、および/またはシステム全体に課される設計制約によって決まる。当業者は、説明した機能を特定の適用例ごとに様々な方法で実装し得るが、そのような実装決定が本開示の範囲からの逸脱を引き起こすものと解釈されるべきではない。
【００５２】
本明細書で開示する態様に関連して説明した様々な例示的な論理ブロック、モジュール、および回路は、プロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)もしくは他のプログラマブル論理デバイス、個別ゲートもしくはトランジスタ論理、個別ハードウェア構成要素、または本明細書で説明した機能を実行するように設計されたそれらの任意の組合せを用いて実装または実行され得る。プロセッサは、マイクロプロセッサであってよいが、代替として、プロセッサは、任意の従来のプロセッサ、コントローラ、マイクロコントローラ、またはステートマシンであってもよい。プロセッサはまた、コンピューティングデバイスの組合せ(たとえば、DSPとマイクロプロセッサとの組合せ、複数のマイクロプロセッサ、DSPコアと連携した1つもしくは複数のマイクロプロセッサ、または任意の他のそのような構成)として実装され得る。
【００５３】
本明細書で開示する態様は、ハードウェアにおいて、かつハードウェアに記憶され、たとえば、ランダムアクセスメモリ(RAM)、フラッシュメモリ、読込み専用メモリ(ROM)、電気的プログラマブルROM(EPROM)、電気的消去可能プログラマブルROM(EEPROM)、レジスタ、ハードディスク、リムーバブルディスク、CD-ROM、または当技術分野において知られている任意の他の形態のコンピュータ可読媒体の中に存在し得る命令において、具現化され得る。例示的な記憶媒体は、プロセッサが記憶媒体から情報を読み込み、記憶媒体に情報を書き込むことができるようにプロセッサに結合される。代替として、記憶媒体はプロセッサと一体であってもよい。プロセッサおよび記憶媒体は、ASICの中に存在してよい。ASICは、リモート局の中に存在してよい。代替として、プロセッサおよび記憶媒体は、リモート局、基地局、またはサーバの中に個別構成要素として存在してもよい。
【００５４】
本明細書の例示的な態様のいずれかにおいて説明した動作ステップが、例および説明を提供するために記載されることにも留意されたい。説明した動作は、図示したシーケンス以外の数多くの異なるシーケンスで実行されてよい。さらに、単一の動作ステップにおいて説明した動作は、実際にはいくつかの異なるステップにおいて実行されてよい。追加として、例示的な態様で説明した1つまたは複数の動作ステップは組み合わせられてよい。フローチャート図に示される動作ステップが、当業者に容易に明らかになるような数多くの異なる変更を受けてよいことを理解されたい。情報および信号が様々な異なる技術および技法のいずれかを使用して表されてよいことも当業者は理解されよう。たとえば、上記の説明全体にわたって参照され得るデータ、命令、コマンド、情報、信号、ビット、シンボル、およびチップは、電圧、電流、電磁波、磁場もしくは磁性粒子、光場もしくは光学粒子、またはそれらの任意の組合せによって表されてよい。
【００５５】
本開示のこれまでの説明は、任意の当業者が本開示を作製または使用できるようにするために提供される。本開示の様々な変更が当業者に容易に明らかになり、本明細書で定義する一般原理は、本開示の趣旨または範囲から逸脱することなく他の変形形態に適用され得る。したがって、本開示は、本明細書で説明した例および設計に限定されるものでなく、本明細書で開示する原理および新規の特徴と一致する最も広い範囲を与えられるべきである。
【符号の説明】
【００５６】
100  プロセッサベースシステム
102  DRAMキャッシュ管理回路
104  DRAMキャッシュ
106  タグディレクトリ
108  高帯域幅メモリ
110  システムメモリDRAM
112  コンピュートダイ
114  システムキャッシュ
116  メモリライン
118  DRAMキャッシュライン
120  ウェイ
122  タグ
124  有効ビット
126  ダーティビット
128  メモリ読込み要求
130  読込みアドレス
132  メモリ書込み要求
134  書込みアドレス
136  書込みデータ
138  タグディレクトリキャッシュ
140  タグディレクトリキャッシュディレクトリ
142  タグディレクトリキャッシュライン
144  ウェイ
146  タグ
148  有効ビット
150  ダーティビット
152  負荷分散回路
200  DRAMキャッシュライン
202  メモリライン
204  タグディレクトリエントリ
206  アドレスタグ
208  有効ビット
210  ダーティビット
212  DRAMキャッシュライン
214  データセグメント
216  タグディレクトリエントリ
218  アドレスタグ
220  有効ビット
222  ダーティビット
600  プロセッサベースシステム
602  CPU
604  プロセッサ
606  キャッシュメモリ
608  システムバス
610  メモリコントローラ
612  メモリシステム
614  入力デバイス
616  出力デバイス
618  ネットワークインターフェースデバイス
620  ディスプレイコントローラ
622  ネットワーク
624  メモリユニット
626  ディスプレイ
628  ビデオプロセッサ
【図１】
2019506671.tif 000003
【図２Ａ】
2019506671.tif 000004
【図２Ｂ】
2019506671.tif 000005
【図３Ａ】
2019506671.tif 000006
【図３Ｂ】
2019506671.tif 000007
【図４Ａ】
2019506671.tif 000008
【図４Ｂ】
2019506671.tif 000009
【図４Ｃ】
2019506671.tif 000010
【図４Ｄ】
2019506671.tif 000011
【図４Ｅ】
2019506671.tif 000012
【図５Ａ】
2019506671.tif 000013
【図５Ｂ】
2019506671.tif 000014
【図５Ｃ】
2019506671.tif 000015
【図５Ｄ】
2019506671.tif 000016
【図６】
2019506671.tif 000017
【国際調査報告】
2019506671.tif 000018
2019506671.tif 000019