(57)【要約】方法は、ペナルティメイトレベルキャッシュからメインメモリへの投機的メモリ読み出し要求の要求レートを監視することを含む。投機的メモリ読み出し要求は、ペナルティメイトレベルキャッシュ内でミスしたデータ読み出し要求に対応する。データ読み出し要求によって要求されたデータについての最終レベルキャッシュの検索のヒット率を監視する。メインメモリへのコアデマンドの投機的メモリ読み出し要求は、要求レート及びヒット率に基づいて、対応するコアデマンドデータ読み出し要求のデータについての最終レベルキャッシュの検索と並行して、選択的に有効にされる。メインメモリへのプリフェッチの投機的メモリ読み出し要求は、要求レート及びヒット率に基づいて、対応するプリフェッチデータ読み出し要求のデータについての最終レベルキャッシュの検索と並行して選択的に有効にされる。【選択図】図９
2021510886.tif 000002
【特許請求の範囲】
【請求項１】
メモリシステムのメモリアクセスのレイテンシを低減する方法であって、
ペナルティメイトレベルキャッシュからメインメモリへの投機的メモリ読み出し要求の要求レートを監視することであって、前記投機的メモリ読み出し要求は、前記ペナルティメイトレベルキャッシュ内でミスしたデータ読み出し要求に対応しており、前記投機的メモリ読み出し要求の各々は、コアデマンド投機的メモリ読み出し要求又はプリフェッチ投機的メモリ読み出し要求であり、前記データ読み出し要求の各々は、コアデマンドデータ読み出し要求又はプリフェッチデータ読み出し要求である、ことと、
前記データ読み出し要求によって要求されたデータについての最終レベルキャッシュの検索のヒット率を監視することであって、前記投機的メモリ読み出し要求の各々は、対応するデータについての前記最終レベルキャッシュの検索と並行して発行される、ことと、
前記要求レート及び前記ヒット率に基づいて、対応するコアデマンドデータ読み出し要求のデータについての前記最終レベルキャッシュの検索と並行して、前記メインメモリへのコアデマンド投機的メモリ読み出し要求を選択的に有効にすることと、
前記要求レート及び前記ヒット率に基づいて、対応するプリフェッチデータ読み出し要求のデータについての前記最終レベルキャッシュの検索と並行して、前記メインメモリへのプリフェッチ投機的メモリ読み出し要求を選択的に有効にすることと、を含む、
方法。
【請求項２】
前記コアデマンド投機的メモリ読み出し要求が有効にされること、前記プリフェッチ投機的メモリ読み出し要求が有効にされること、及び、前記要求レートが所定の要求レート閾値を超えるか前記ヒット率が所定のヒット率閾値を超えたことに応じて、前記コアデマンド投機的メモリ読み出し要求を選択的に有効にすることは、前記コアデマンド投機的メモリ読み出し要求を有効にすることを含み、前記プリフェッチ投機的メモリ読み出し要求を選択的に有効にすることは、前記プリフェッチ投機的メモリ読み出し要求を無効にすることを含む、
請求項１の方法。
【請求項３】
前記コアデマンド投機的メモリ読み出し要求が有効にされること、前記プリフェッチ投機的メモリ読み出し要求が無効にされること、前記要求レートが第２の所定の要求レート閾値未満であること、及び、前記ヒット率が第２の所定のヒット率閾値未満であることに応じて、前記コアデマンド投機的メモリ読み出し要求を選択的に有効にすることは、前記コアデマンド投機的メモリ読み出し要求を有効にすることを含み、前記プリフェッチ投機的メモリ読み出し要求を選択的に有効にすることは、前記プリフェッチ投機的メモリ読み出し要求を有効にすることを含み、
前記第２の所定の要求レート閾値は、前記所定の要求レート閾値未満であり、前記第２の所定のヒット率閾値は、前記所定のヒット率閾値未満である、
請求項２の方法。
【請求項４】
前記コアデマンド投機的メモリ読み出し要求が有効にされること、前記プリフェッチ投機的メモリ読み出し要求が無効にされること、及び、前記要求レートが所定の要求レート閾値を超えるか前記ヒット率が所定のヒット率閾値を超えることに応じて、前記コアデマンド投機的メモリ読み出し要求を選択的に有効にすることは、前記コアデマンド投機的メモリ読み出し要求を無効にすることを含み、前記プリフェッチ投機的メモリ読み出し要求を選択的に有効にすることは、前記プリフェッチ投機的メモリ読み出し要求を無効にすることを含む、
請求項１の方法。
【請求項５】
前記コアデマンド投機的メモリ読み出し要求が無効にされること、前記プリフェッチ投機的メモリ読み出し要求が無効にされること、前記要求レートが第２の所定の要求レート閾値未満であること、及び、前記ヒット率が第２の所定のヒット率閾値未満であることに応じて、前記コアデマンド投機的メモリ読み出し要求を選択的に有効にすることは、前記コアデマンド投機的メモリ読み出し要求を有効にすることを含み、前記プリフェッチ投機的メモリ読み出し要求を選択的に有効にすることは、前記プリフェッチ投機的メモリ読み出し要求を無効にすることを含み、
前記第２の所定の要求レート閾値は、前記所定の要求レート閾値未満であり、前記第２の所定のヒット率閾値は、前記所定のヒット率閾値未満である、
請求項４の方法。
【請求項６】
前記コアデマンド投機的メモリ読み出し要求が有効にされること、前記プリフェッチ投機的メモリ読み出し要求が有効にされること、前記要求レートが所定の要求レート閾値未満であること、及び、前記ヒット率が所定のヒット率閾値未満であることに応じて、前記コアデマンド投機的メモリ読み出し要求を選択的に有効にすることは、前記コアデマンド投機的メモリ読み出し要求を有効にすることを含み、前記プリフェッチ投機的メモリ読み出し要求を選択的に有効にすることは、前記プリフェッチ投機的メモリ読み出し要求を有効にすることを含む、
請求項１の方法。
【請求項７】
コアデマンド投機的メモリ読み出し要求が有効にされること、プリフェッチ投機的メモリ読み出し要求が無効にされること、前記要求レートが所定の要求レート閾値未満であること、及び、前記ヒット率が前記所定のヒット率閾値未満であることに応じて、前記コアデマンド投機的メモリ読み出し要求を選択的に有効にすることは、前記コアデマンド投機的メモリ読み出し要求を有効にすることを含み、前記プリフェッチ投機的メモリ読み出し要求を選択的に有効にすることは、前記プリフェッチ投機的メモリ読み出し要求を無効にすることを含む、
請求項１の方法。
【請求項８】
前記コアデマンド投機的メモリ読み出し要求が無効にされること、前記プリフェッチ投機的メモリ読み出し要求が無効にされること、前記要求レートが所定の要求レート閾値未満であること、及び、前記ヒット率が所定のヒット率閾値未満であることに応じて、前記コアデマンド投機的メモリ読み出し要求を選択的に有効にすることは、前記コアデマンド投機的メモリ読み出し要求を無効にすることを含み、前記プリフェッチ投機的メモリ読み出し要求を選択的に有効にすることは、前記プリフェッチ投機的メモリ読み出し要求を無効にすることを含む、
請求項１の方法。
【請求項９】
前記メインメモリに接続された複数のペナルティメイトレベルキャッシュに対するクラスタレベルの要求レートを監視することと、
前記複数のペナルティメイトレベルキャッシュ内でミスしたデータ読み出し要求によって要求されたデータについて、共有された最終レベルキャッシュの検索のクラスタレベルのヒット率を監視することと、をさらに含み、
前記コアデマンド投機的メモリ読み出し要求を選択的に有効にすることは、前記クラスタレベルの要求レート及び前記クラスタレベルのヒット率にさらに基づいており、
前記プリフェッチ投機的メモリ読み出し要求を選択的に有効にすることは、前記クラスタレベルの要求レート及び前記クラスタレベルのヒット率にさらに基づいている、
請求項１、２、３、４、５、６、７又は８の方法。
【請求項１０】
所定の要求レート閾値又は所定のヒット率閾値を、前記クラスタレベルの要求レート又は前記クラスタレベルのヒット率に基づいて調整することをさらに含み、
前記コアデマンド投機的メモリ読み出し要求を選択的に有効にすることは、前記所定の要求レート閾値及び前記所定のヒット率閾値にさらに基づいており、
前記プリフェッチ投機的メモリ読み出し要求を選択的に有効にすることは、前記所定の要求レート閾値及び前記所定のヒット率閾値にさらに基づいている、
請求項９の方法。
【請求項１１】
前記投機的メモリ読み出し要求の各々は、前記検索することと並行して発行される実際の投機的メモリ読み出し要求、又は、未実現の投機的メモリ読み出し要求である、
請求項１、２、３、４、５、６、７又は８の方法。
【請求項１２】
ペナルティメイトレベルキャッシュと、
最終レベルキャッシュと、
メインメモリと、
前記ペナルティメイトレベルキャッシュから前記メインメモリへの投機的メモリ読み出し要求の要求レートを記憶するように構成される第１カウンタであって、前記投機的メモリ読み出し要求の各々が、対応するデータ読み出し要求の前記ペナルティメイトレベルキャッシュ内でのミスに応答している、第１カウンタと、
前記ペナルティメイトレベルキャッシュ内でミスしたデータ読み出し要求のデータについての前記最終レベルキャッシュの検索のヒット率のインジケータを記憶するように構成された第２カウンタと、
前記ペナルティメイトレベルキャッシュに関連するコントローラと、を備え、
前記コントローラは、
前記要求レート、前記ヒット率、所定の要求レート閾値及び所定のヒット率閾値に基づいて、前記検索と並行して、前記メインメモリへのコアデマンド投機的メモリ読み出し要求を選択的に有効にし、
前記要求レート、前記ヒット率、前記所定の要求レート閾値及び前記所定のヒット率閾値に基づいて、前記検索と並行して、前記メインメモリへのプリフェッチ投機的メモリ読み出し要求を選択的に有効にする、
ように構成されており、
前記投機的メモリ読み出し要求の各々は、コアデマンド投機的メモリ読み出し要求又はプリフェッチ投機的メモリ読み出し要求である、
メモリシステム。
【請求項１３】
前記コントローラは、前記ペナルティメイトレベルキャッシュ内での各ミスに応じて前記第１カウンタをインクリメントし、前記最終レベルキャッシュ内での各ヒットに応じて前記第２カウンタをインクリメントし、前記第１カウンタ及び前記第２カウンタを定期的にリセットするように構成されている、
請求項１２のメモリシステム。
【請求項１４】
コアデマンドデータ読み出し要求についての前記コアデマンド投機的メモリ読み出し要求を選択的に有効にすることは、第２の所定の要求レート閾値及び第２の所定のヒット率閾値にさらに基づいており、
プリフェッチ投機的メモリ読み出し要求を選択的に有効にすることは、第２の所定の要求レート閾値及び第２の所定のヒット率閾値にさらに基づいている、
請求項１２のメモリシステム。
【請求項１５】
前記最終レベルキャッシュと前記メインメモリとの間に接続されたクラスタ相互接続構造を備え、
前記クラスタ相互接続構造は、
対応するペナルティメイトレベルキャッシュ内でミスしたデータ読み出し要求の要求されたデータについての前記最終レベルキャッシュの検索と並行して、コアクラスタ内の何れかのペナルティメイトレベルキャッシュから前記メインメモリへの投機的メモリ読み出し要求のクラスタレベルの要求レートを記憶するように構成された第３カウンタであって、前記最終レベルキャッシュは、前記コアクラスタ内のコアによって共有される、第３カウンタと、
前記投機的メモリ読み出し要求のクラスタレベルのヒット率のインジケータを、対応するペナルティメイトレベルキャッシュ内でミスしたデータ読み出し要求についての前記最終レベルキャッシュに記憶するように構成された第４カウンタと、を備える、
請求項１２のメモリシステム。
【請求項１６】
前記第１カウンタ及び前記第２カウンタは、コアクラスタのコアで実行される第１スレッドに関連付けられており、
前記メモリシステムは、
前記コアで実行される第２スレッドに関連付けられており、前記ペナルティメイトレベルキャッシュから前記メインメモリに前記第２スレッドについての投機的メモリ読み出し要求の要求レートを記憶するように構成された第３カウンタであって、前記第２スレッドについての前記投機的メモリ読み出し要求の各々が前記第２スレッドの対応するデータ読み出し要求の前記ペナルティメイトレベルキャッシュ内でのミスに応答する、第３カウンタと、
前記コアで実行される前記第２スレッドに関連付けられており、前記ペナルティメイトレベルキャッシュ内でミスした前記第２スレッドのデータ読み出し要求についての前記最終レベルキャッシュの検索のヒット率のインジケータを記憶するように構成される第４カウンタと、をさらに備える、
請求項１２のメモリシステム。
【請求項１７】
前記投機的メモリ読み出し要求は、前記最終レベルキャッシュの前記検索と並行して発行される実際の投機的メモリ読み出し要求、及び、未実現の投機的メモリ読み出し要求を含み、
前記ヒット率は、前記検索の前記最終レベルキャッシュ内でのヒットに基づいている、
請求項１２、１３、１４、１５又は１６のメモリシステム。
【発明の詳細な説明】
【背景技術】
【０００１】
一般に、プロセッサコアの速度とメインメモリの速度との間のギャップを埋めるために、プロセッサシステムは、マルチレベルキャッシュ階層を使用し、各キャッシュは、先行するキャッシュよりも大きく、後続のキャッシュよりも高速である。図１は、３つのキャッシュレベルを有するマルチレベルキャッシュ階層とメインメモリとを含む例示的な処理システムを示す図である。処理システム１００は、レベル２キャッシュ１１０に接続された分割レベル１キャッシュ（例えば、命令キャッシュ１０６及びデータキャッシュ１０８）を有するプロセッサ１０２を含む。レベル３キャッシュ１１２は、プロセッサ１０２の外部にあり、メインメモリ１１４と通信し、メインメモリは、従来のオフチップダイナミックランダムアクセスメモリ（ＤＲＡＭ）、より高速なオンチップＤＲＡＭ、及び／又は、メモリ技術（例えば、ＤＲＡＭ、スタティックランダムアクセスメモリ（ＳＲＡＭ）、相変化メモリ、メモリスタ若しくは他のメモリタイプ等）の組み合わせを含むことができる。最終レベルキャッシュ（例えば、レベル３キャッシュ１１２）からメインメモリ１１４にアクセスすることによるサービスミスは、長いメモリアクセスレイテンシ（例えば、少なくとも２００クロックサイクルのメモリアクセスレイテンシ）を有し、システムパフォーマンスに大きな影響を与える可能性がある。したがって、メモリにアクセスするための改善された技術が望まれる。
【発明の概要】
【０００２】
（本発明の実施形態の開示）
少なくとも１つの実施形態では、メモリシステムのメモリアクセスレイテンシを低減する方法は、ペナルティメイト（penultimate）レベルキャッシュからメインメモリへの投機的メモリ読み出し要求の要求レートを監視することを含む。投機的メモリ読み出し要求は、ペナルティメイトレベルキャッシュでミスしたデータ読み出し要求に対応する。投機的メモリ読み出し要求の各々は、コアデマンド投機的メモリ読み出し要求、又は、プリフェッチ投機的メモリ読み出し要求である。データ読み出し要求の各々は、コアデマンドデータ読み出し要求、又は、プリフェッチデータ読み出し要求である。この方法は、データ読み出し要求によって要求されたデータに関する最終レベルキャッシュの検索のヒット率を監視することを含む。投機的メモリ読み出し要求の各々は、対応するデータに関する最終レベルキャッシュの検索と並行して発行される。この方法は、要求レート及びヒット率に基づいて、対応するコアデマンドデータ読み出し要求のデータに関する最終レベルキャッシュの検索と並行して、メインメモリへのコアデマンド投機的メモリ読み出し要求を選択的に有効にすることを含む。この方法は、要求レート及びヒット率に基づいて、対応するプリフェッチデータ読み出し要求のデータに関する最終レベルキャッシュの検索と並行して、メインメモリへのプリフェッチ投機的メモリ読み出し要求を選択的に有効にすることを含む。投機的メモリ読み出し要求の各々は、検索と並行して発行される実際の投機的メモリ読み出し要求、又は、未実現の投機的メモリ読み出し要求であってもよい。
【０００３】
少なくとも１つの実施形態では、メモリシステムは、ペナルティメイトレベルキャッシュと、最終レベルキャッシュと、メインメモリと、第１カウンタと、第２カウンタと、ペナルティメイトレベルキャッシュに関連するコントローラと、を含む。第１カウンタは、ペナルティメイトレベルキャッシュからメインメモリへの投機的メモリ読み出し要求の要求レートを記憶するように構成されている。投機的メモリ読み出し要求の各々は、対応するデータ読み出し要求のペナルティメイトレベルキャッシュ内でのミスに応答する。第２カウンタは、ペナルティメイトレベルキャッシュ内でミスしたデータ読み出し要求のデータに関する最終レベルキャッシュの検索のヒット率のインジケータを記憶するように構成されている。コントローラは、要求レート、ヒット率、所定の要求レート閾値、及び、所定のヒット率閾値に基づく検索と並行して、メインメモリへのコアデマンド投機的メモリ読み出し要求を選択的に有効にするように構成されている。コントローラは、要求レート、ヒット率、所定の要求レート閾値、及び、所定のヒット率閾値に基づく検索と並行して、メインメモリへのプリフェッチ投機的メモリ読み出し要求を選択的に有効にするように構成されている。投機的メモリ読み出し要求の各々は、コアデマンド投機的メモリ読み出し要求、又は、プリフェッチ投機的メモリ読み出し要求である。投機的メモリ読み出し要求コントローラは、ペナルティメイトレベルキャッシュ内での各ミスに応じて第１カウンタをインクリメントし、最終レベルキャッシュでの各ヒットに応じて第２カウンタをインクリメントし、第１カウンタ及び第２カウンタを定期的にリセットするように構成されてもよい。
【０００４】
少なくとも１つの実施形態では、メモリシステムを動作させる方法は、ペナルティメイトレベルキャッシュ内でミスしたコアデマンドデータ読み出し要求によって要求されたデータに関する最終レベルキャッシュの検索と並行して、メインメモリへのコアデマンド投機的メモリ読み出し要求を有効にすることを含む。この方法は、ペナルティメイトレベルキャッシュ内でミスしたプリフェッチデータ読み出し要求によって要求されたデータについて、メインメモリへのプリフェッチ投機的メモリ読み出し要求を無効にすることを含む。この方法は、ペナルティメイトレベルキャッシュからメインメモリに発行される投機的メモリ読み出し要求の要求レートを監視することを含む。この要求レートは、コアデマンド投機的メモリ読み出し要求と、ペナルティメイトレベルキャッシュ内で欠落したプリフェッチデータ読み出し要求に関する未実現のプリフェッチ投機的メモリ読み出し要求と、に基づいている。この方法は、最終レベルキャッシュの検索のヒット率を監視することを含む。この方法は、要求レートが所定の要求レート閾値未満であり、ヒット率が所定のヒット率閾値未満であることに応じて、コアデマンド投機的メモリ読み出し要求を有効にし、プリフェッチ投機的メモリ読み出し要求を無効にすることを含む。少なくとも１つの実施形態では、この方法は、要求レートが所定の要求レート閾値よりも大きいこと、又は、ヒット率が所定のヒット率閾値よりも大きいことに応じて、コアデマンド投機的メモリ読み出し要求を無効にし、プリフェッチ投機的メモリ読み出し要求を無効にすることを含む。少なくとも１つの実施形態では、この方法は、要求レートが所定の第２要求レート閾値未満であり、ヒット率が所定の第２ヒット率閾値未満であることに応じて、コアデマンド投機的メモリ読み出し要求を有効にし、プリフェッチ投機的メモリ読み出し要求を有効にすることをさらに含む。所定の第２要求レート閾値は、所定の要求レート閾値未満であり、所定の第２ヒット率閾値は、所定のヒット率閾値未満である。
【０００５】
本発明は、添付の図面を参照することによってより良く理解することができ、その多くの目的、特徴及び利点が当業者に明らかになる。
【図面の簡単な説明】
【０００６】
【図１】１つの処理コアとマルチレベルメモリシステムとを含む処理システムの機能ブロック図である。
【図２】マルチレベルメモリシステムを含むマルチコア処理システムの機能ブロック図である。
【図３】要求及びデータフローを示す図２のマルチコア処理システムの別の機能ブロック図である。
【図４】図１又は図２の処理コアによって発生したメモリ要求に関するメモリシステムイベント及び関連するレイテンシのシーケンスを示す図である。
【図５】図２のマルチコア処理システムによる投機的ＤＲＡＭ読み出し要求の発行についての例示的な情報及び制御フローを示す図である。
【図６】図２のマルチコア処理システムの投機的ＤＲＡＭ読み出しのトラフィック、及び、投機的ＤＲＡＭ読み出しの精度を監視するための例示的な情報及び制御フローを示す図である。
【図７】図２のマルチコア処理システムに含まれる投機的ＤＲＡＭ読み出しアクティビティコントローラのステートマシン図（状態遷移図）である。
【図８】図２の処理コアのクラスタの投機的ＤＲＡＭ読み出しのトラフィック、及び、投機的ＤＲＡＭ読み出し要求の精度を監視するための例示的な情報及び制御フローを示す図である。
【図９】本発明の少なくとも１つの実施形態と一致する、図２のマルチコア処理システムにおけるプリフェッチャベースの投機的ＤＲＡＭ読み出し制御のための状態図である。
【発明を実施するための形態】
【０００７】
異なる図面で同じ符号を使用する場合には、類似又は同一の要素を示す。
【０００８】
最終レベルキャッシュ（例えば、レベル３キャッシュ）のミスレイテンシ（miss latency）を低減する技術は、投機的ＤＲＡＭ読み出し要求（すなわち、投機的メモリ読み出し要求）を発行することを含む。この技術は、実際のデマンド読み出し要求の前にメインメモリに投機的にＤＲＡＭ読み出し要求を発行して、最終レベルキャッシュの平均ミスレイテンシを低減する。投機的ＤＲＡＭ読み出し要求は、システムに対するサイクル当たりの命令を増加させるが、実行時には、従来の投機的ＤＲＡＭ読み出し要求は、メインメモリへのインタフェースにおける輻輳を増加させることにより、システムパフォーマンスに悪影響を及ぼす可能性がある。したがって、従来の投機的ＤＲＡＭ読み出し要求は、メモリシステムのレイテンシを低減するというよりはむしろ増加させる可能性がある。システム内で実行されるスレッドの数が増加すると、競合の増加によって、共有された最終レベルキャッシュのミスが増加するため、メモリシステムのアクセスレイテンシが増加する。
【０００９】
図２及び図３は、複数のプロセッサを含むマルチコア処理システム２００を示しており、プロセッサ１０２、プロセッサ１０４、プロセッサ１０６及びプロセッサ１０８は、それぞれ処理コア２０２、処理コア２０４、処理コア２０６及び処理コア２０８を含む。各処理コアは、少なくとも２つのスレッドを同時に実行することができ、プライベートな分割レベル１キャッシュ（すなわち、命令キャッシュとデータキャッシュとに分割されたレベル１キャッシュ）と、対応するプライベートな統合レベル２キャッシュと、を含む。プロセッサクラスタのプロセッサ１０２、プロセッサ１０４、プロセッサ１０６及びプロセッサ１０８は、レベル３キャッシュ（例えば、８ＭＢ）を共有し、レベル３キャッシュは、キャッシュスライス２１８、キャッシュスライス２２０、キャッシュスライス２２４及びキャッシュスライス２２６（例えば、２ＭＢスライス）に分割されている。レベル２キャッシュ２１０、レベル２キャッシュ２１２、レベル２キャッシュ２１４及びレベル２キャッシュ２１６は、厳密には、対応するレベル１キャッシュを厳密に含む、すなわち、対応するレベル１キャッシュに存在する全てのラインは、レベル２キャッシュ内にも存在する。ただし、レベル２キャッシュは、レベル３キャッシュを殆ど含まない、すなわち、レベル２キャッシュラインの殆どは、レベル３キャッシュに存在しない。また、レベル３キャッシュは、レベル２タグをシャドウタグ構造内に維持し、これらのシャドウタグ構造内のレベル２タグは、特定のラインがマルチコア処理システム２００内のプロセッサクラスタの何れかの他のレベル２キャッシュに存在するかどうかを判別するために使用される。
【００１０】
キャッシュ相互接続２３０は、レベル２キャッシュとレベル３キャッシュとの間の通信を提供する。クラスタ相互接続２４０は、レベル３キャッシュのキャッシュスライス２１８、キャッシュスライス２２０、キャッシュスライス２２４及びキャッシュスライス２２６と、メインメモリ１１４との間の通信を提供する。メモリ要求及び関連するデータは、クラスタ相互接続２４０を介してメインメモリ１１４に流れ、応答は、クラスタ相互接続２４０を介してレベル３キャッシュに戻る。例えば、レベル２キャッシュにおいてメモリ要求がミスした場合、レベル２キャッシュコントローラは、特定のアドレスビットに基づいて、メモリ要求をレベル３キャッシュの特定のスライスに送信する。そのデータラインを記憶するレベル３キャッシュのスライスがレベル３キャッシュのヒットをもたらす場合、レベル３キャッシュは、データを要求元のレベル２キャッシュに送信する。データラインがレベル３キャッシュに存在しない（すなわち、ラインがレベル３キャッシュをミスした）場合、レベル３キャッシュのシャドウタグ構造に記憶されたレベル２タグを検査すること等によって、レベル３キャッシュは、そのラインがプロセッサクラスタの何れかの他のレベル２キャッシュに存在するかどうかを最初に判別する。そのデータラインが何れかの他のコアのレベル２キャッシュに存在する場合、レベル３キャッシュは、レベル２キャッシュから別のレベル２キャッシュへのキャッシュ間転送を開始し、その要求をメインメモリ１１４に送信しない。しかしながら、データラインがプロセッサクラスタの何れのレベル２キャッシュにも存在しない場合、レベル３キャッシュコントローラは、そのメモリ要求をメインメモリ１１４に送信する。一般に、キャッシュ間転送は稀であるが、異なる処理コア上で実行される２つ以上のスレッドがデータ又は命令を共有する場合に発生することがある。
【００１１】
図４を参照すると、タイムラインは、処理コアによって発行されるメモリ要求についてのイベントシーケンスを表す。右向きの矢印は、要求元のコアからメモリシステムへの要求パスを表し、左向きの矢印は、メモリシステムから要求元のコアへの応答パスを表す。各矢印は、関連するクロックサイクルの数を表す、関連する重みを含む。ミスに応じて、対応するコントローラは、要求を次のキャッシュ又はメモリコンポーネントに渡す。メモリ要求を処理するのに必要な合計時間は、要求元のコアに対応するノード１と、要求されたデータを含むメモリシステムの第１レベルに対応するノードとの間の閉ループの全てのエッジの合計、すなわち、要求元のコアから要求されたデータラインを記憶するレベルのメモリへの総レイテンシと、そのレベルのメモリから要求元のコアに戻る応答と、の合計である。レイテンシは、メモリコントローラ又は相互接続ネットワークにおける他の競合又は輻輳がない場合の最小のレイテンシである。例えば、ノード３からノード５までのレイテンシは、ａ３＋ａ４クロックサイクルの最小値であり、これは、レベル２キャッシュでのミスの検出から、プロセッサクラスタのレベル３キャッシュ及び他のレベル２キャッシュでのミスを予測してメモリ要求がメインメモリに送信されるまでの間のレイテンシである。
【００１２】
システム分析（例えば、ＳＰＥＣｉｎｔベンチマークスイートを使用する）は、レベル３キャッシュ全体を使用してシングルスレッドが処理コアクラスタ上で実行されている場合、レベル２キャッシュをミスした平均して過半数（例えば、５４％）のメモリ要求が、レベル３キャッシュもミスすることを示す。複数のスレッドがレベル３キャッシュを共有して同時に実行される場合、そのミス率が増加する。例えば、８つのスレッドがＳＰＥＣｉｎｔベンチマークスイートを実行する場合、７０％のレベル２キャッシュミスが、レベル３キャッシュもミスし、プロセッサクラスタの他のレベル２キャッシュもミスする。メインメモリ１１４は、これらのメモリ要求の全てを処理する必要があり、レベル３キャッシュにおいて余分なレイテンシが生じる。このペナルティは、レベル３キャッシュコントローラで輻輳の量が増加すると、増加する。
【００１３】
したがって、レベル２キャッシュメモリコントローラは、投機的ＤＲＡＭ読み出し要求を実行して、メモリレイテンシを低減する。図２、図３及び図５を参照すると、ペナルティメイトレベル（例えば、レベル２）キャッシュコントローラは、前のレベル（例えば、レベル１）のキャッシュコントローラからメモリ要求を受信する。受信したメモリ要求は、対応する処理コア内のプリフェッチロジックによって生成されたプリフェッチ要求であってもよいし、対応する処理コアからのコアデマンド要求であってもよい。
【００１４】
ターゲットデータラインがレベル２キャッシュに存在する（すなわち、レベル２キャッシュにヒットする）場合、レベル２キャッシュはメモリ要求応答を提供する。要求されたデータラインがレベル２キャッシュに存在しない（すなわち、レベル２キャッシュをミスした）場合に（４０２）、レベル２キャッシュコントローラは、メモリ要求を最終レベルキャッシュ（例えば、レベル３キャッシュの対応するスライス）に転送するのと並行して、投機的ＤＲＡＭ読み出し要求をメインメモリ１１４に発行する（４０８）。メモリ要求がレベル３キャッシュの対応するスライスをミスした場合に（４０４）、レベル３キャッシュコントローラは、メモリ要求をクラスタ相互接続２４０に転送して、要求されたデータラインが処理コアクラスタの別のコアに関連するレベル２キャッシュに存在するかどうかを判別する。受信したメモリ要求が処理コアクラスタ内でミスした場合に（４０６）、レベル３キャッシュコントローラは、デマンドメモリ要求をメインメモリ１１４に転送する（４１０）。レベル２キャッシュからメインメモリ１１４に直接送信される（すなわち、レベル３キャッシュ及びクラスタ相互接続２４０をバイパスする）メモリ要求は、レベル３キャッシュにヒットした投機的ＤＲＡＭ読み出し要求と並行して送信される如何なる従来のメモリ要求もメインメモリ１１４によって処理される必要がないため、投機的とみなされ、投機的ＤＲＡＭ読み出し要求をレンダリングすることが不要になる。しかしながら、投機的ＤＲＡＭ読み出し要求は、図４を参照して上述したように、レベル３キャッシュをミスするメモリ要求のレイテンシを低減する。
【００１５】
図２及び図３を参照すると、メインメモリ１１４は、レベル３キャッシュから転送されたメモリ要求と同様に、投機的ＤＲＡＭ読み出し要求を処理し、メインメモリ１１４から対応するデータを読み出す。しかしながら、投機的ＤＲＡＭ要求データを送信してレベル３キャッシュに戻す代わりに、投機的ＤＲＡＭ読み出し要求データは、メインメモリ１１４内のローカルバッファに記憶される。コアデマンド要求がメインメモリ１１４に到達したときに同じメモリアドレスの投機的ＤＲＡＭ要求にヒットした場合、メモリコントローラは、バッファから応答データを送信する。したがって、全体的なメモリ読み出しレイテンシが低減するため、デマンド要求は、投機的ＤＲＡＭ読み出し要求から利益を得る。デマンド要求に対応する投機的ＤＲＡＭ読み出し要求は、システムパフォーマンスを向上させる有益な投機的ＤＲＡＭ読み出し要求とみなされる。ただし、レベル２のキャッシュをミスしたメモリ要求がレベル３キャッシュ又は処理コアクラスタにヒットした場合に、デマンド要求はメモリに送信されない。このようなメモリ要求に対して生成される投機的ＤＲＡＭ読み出し要求は、有用ではなく、不利益な投機的ＤＲＡＭ読み出し要求とみなされる。不利益な投機的ＤＲＡＭ読み出し要求によって読み出されるデータは、ローカルバッファに存在し、最終的に、他の投機的ＤＲＡＭ読み出し要求からのデータが、これらのデータを上書きする。
【００１６】
投機的ＤＲＡＭ要求ポリシーは、レベル２キャッシュをミスする全てのメモリ要求についての投機的ＤＲＡＭ読み出し要求をメインメモリ１１４に送信する。有益な投機的ＤＲＡＭ読み出し要求は、パフォーマンスを向上させるが、不利益な投機的ＤＲＡＭ読み出し要求は、ローカルバッファにデータを不必要に満たす。投機的ＤＲＡＭ要求が不利益な投機的ＤＲＡＭ読み出し要求によって遅延した後に発行されるコアデマンド要求は、システムの速度を低下させる。シングルスレッドが処理コアクラスタ内で実行される場合に、不利益な投機的ＤＲＡＭ読み出し要求は、システムパフォーマンスを大幅に低下させない。ただし、処理コアクラスタ上で実行されるスレッドの数が増加すると、ネットワーク及びメモリシステムがボトルネックになり、不利益な投機的ＤＲＡＭ読み出し要求は、システムパフォーマンスを大幅に低下させる。したがって、不利益な投機的ＤＲＡＭ読み出し要求は、他のメモリ要求と干渉し、帯域幅を浪費し、システム全体のパフォーマンスを低下させ、消費電力を増加させる。したがって、不利益な投機的ＤＲＡＭ読み出し要求の低減は、投機的ＤＲＡＭ要求の精度、システム全体のパフォーマンスを向上させ、消費電力を低減する。
【００１７】
少なくとも１つの実施形態では、ペナルティメイトレベルキャッシュコントローラは、投機的ＤＲＡＭ読み出し要求のトラフィック及び精度を制御して、システムパフォーマンスを向上させる投機的ＤＲＡＭ要求ポリシーを実装する。このポリシーは、レベル２キャッシュコントローラによって発行される投機的ＤＲＡＭ読み出し要求の数をインテリジェントに調整する。このポリシーは、投機的ＤＲＡＭ読み出し要求の品質を向上させ、最終レベルキャッシュ内の対応するヒットの数によって、投機的ＤＲＡＭ読み出し要求の精度（すなわち、品質や有効性）を測定する。ペナルティメイトレベルキャッシュコントローラは、要求レートカウンタ及びヒット率カウンタを、対応する所定の閾値と定期的に比較する。所定の閾値は、ＢＩＯＳ又は他のシステム初期化シーケンス中に構成されてもよい。何れかのカウンタが対応する所定の閾値を超える場合に、ペナルティメイトレベルキャッシュコントローラは、投機的ＤＲＡＭ読み出し要求がメモリ競合に追加すること又は低精度を有することに効果がないと判別する。ペナルティメイトレベルキャッシュコントローラは、各カウンタが対応する所定の閾値を下回るまで、投機的ＤＲＡＭ読み出し要求の発行を抑制する。ペナルティメイトレベルキャッシュコントローラは、デマンド要求についての未実現の投機的ＤＲＡＭ読み出し要求（すなわち、投機的ＤＲＡＭ読み出し要求を有効にした場合にペナルティメイトレベルキャッシュコントローラが発行する投機的ＤＲＡＭ読み出し要求）に対して、投機的ＤＲＡＭ読み出し要求のトラフィック及び精度を追跡し、メモリ競合及び／又は精度の問題が解決されたかどうかを判別する。両方の問題が解決されると、ペナルティメイトレベルキャッシュコントローラは、投機的ＤＲＡＭ読み出し要求の発行を再開する。この技術は、制御されていない投機的ＤＲＡＭ読み出し要求によるシステムパフォーマンスの低下を低減するのに有効である。ただし、アプリケーションによっては、このスキームは、投機的ＤＲＡＭ読み出し要求を完全には利用しない。
【００１８】
各レベル２キャッシュコントローラは、レベル２キャッシュのミス、及び、レベル３キャッシュのミスについてのカウンタを維持する。これらのカウンタを、レベル２キャッシュ又はキャッシュ相互接続２３０に含むことができる。レベル２キャッシュコントローラは、これらのカウンタを使用して、投機的ＤＲＡＭ要求レート及び投機的ＤＲＡＭ要求レートの各々の精度を推定する。レベル２キャッシュコントローラは、レベル３キャッシュからの応答とともに受信したレベル３キャッシュコントローラからのフィードバックを使用して、レベル３キャッシュミスカウンタを更新する。レベル２キャッシュコントローラは、不正確な投機的ＤＲＡＭ読み出し要求による干渉を評価し、これに応じて投機的ＤＲＡＭ読み出し要求レートを調整することにより、投機的ＤＲＡＭ読み出し要求の精度を向上させる。
【００１９】
処理コアクラスタとメインメモリ１１４との間の最終レベルキャッシュコントローラ（又は、クラスタ相互接続ネットワーク２４０）は、それを通過する投機的ＤＲＡＭ読み出し要求及びデマンド要求をカウントして、競合を測定する。図６を参照すると、受信したメモリ要求がレベル２キャッシュをミスした場合に（５０２）、クラスタ相互接続ネットワーク２４０は、対応する投機的ＤＲＡＭ読み出し要求トラフィックカウンタをインクリメントする（５０４）。サンプル期間が終了した場合に（５０６）、ペナルティメイトレベルキャッシュコントローラは、投機的ＤＲＡＭ読み出し要求トラフィックカウンタの内容を対応する所定の閾値と比較し、比較結果を使用して（５０８）、カウンタをリセットする（５１０）。一方、ペナルティメイトレベルキャッシュコントローラが最終レベルキャッシュ（例えば、レベル３キャッシュのスライス）からヒット応答を受信した場合、ペナルティメイトレベルキャッシュコントローラは、最終レベルキャッシュヒットカウンタをインクリメントする（５１２）。サンプル期間が終了した場合に（５０６）、ペナルティメイトレベルキャッシュコントローラは、最終レベルキャッシュヒット率カウンタの内容を対応する所定の閾値と比較し、比較結果を使用して（５０８）、最終レベルキャッシュヒット率カウンタをリセットする（５１０）。
【００２０】
図７を参照すると、ペナルティメイトレベルキャッシュコントローラは、比較情報を使用する。所定の閾値は、投機的ＤＲＡＭ読み出し要求レート及び最終レベルキャッシュヒット率の許容値を示す。処理システムが、有効になっている投機的ＤＲＡＭ読み出し要求を有する状態にあり（６０２）、両方のカウンタが対応する所定の閾値未満の場合に（６０６）、キャッシュコントローラは、投機的ＤＲＡＭ読み出し要求を発行し続ける。何れかのカウンタが対応する所定の閾値を超えた場合（６１４）、キャッシュコントローラは、投機的ＤＲＡＭ読み出し要求を無効にする（６０４）。キャッシュコントローラは、投機的ＤＲＡＭ読み出し要求が無効になっている間、トラフィック及び精度を監視し続ける。何れかのカウンタが対応する所定の閾値を超えた場合、投機的ＤＲＡＭ読み出し要求は、無効のままである（６１０）。しかしながら、各カウンタが対応する第２の所定の閾値未満の値（例えば、対応する所定の閾値の半分未満の値）を有する場合（６１２）、ペナルティメイトレベルキャッシュコントローラは、投機的ＤＲＡＭ読み出し要求を有効にする（６０２）。
【００２１】
図２及び図３を参照すると、少なくとも１つの実施形態では、クラスタ相互接続２４０は、処理コアクラスタ内の任意の処理コアからメインメモリ１１４に送信される投機的ＤＲＡＭ読み出し要求の総数を監視する。その情報は、対応するペナルティメイトレベルキャッシュコントローラにフィードバックされてもよく、キャッシュコントローラは、その情報を使用して、所定の閾値レベルを調整してもよい。例えば、図８を参照すると、クラスタ相互接続２４０は、クラスタの全ての処理コアから投機的ＤＲＡＭ読み出し要求を受信し、受信した投機的ＤＲＡＭ読み出し要求毎に、クラスタレベルの投機的ＤＲＡＭ読み出し要求レートカウンタをインクリメントする（７０２）。サンプル期間が終了した場合（７０４）、クラスタ相互接続２４０は、クラスタレベルの投機的ＤＲＡＭ読み出し要求レートカウンタ値を所定のクラスタレベルの要求レート閾値と比較する（７０６）。クラスタレベルの投機的ＤＲＡＭ読み出し要求レートカウンタ値が所定のクラスタレベルの要求レート閾値を超えた場合、クラスタ相互接続２４０は、１つ以上のコアキャッシュコントローラに信号を送信して、要求レート閾値を低減する。クラスタレベルの要求レートカウント値が所定の閾値（又は、所定の閾値に基づいて別々に記憶され若しくは生成され得る第２の所定のクラスタレベルの要求レート閾値）未満の場合、クラスタ相互接続２４０は、レベル３キャッシュの対応するスライスのキャッシュコントローラに信号を送信して、対応する投機的ＤＲＡＭ読み出し要求レート閾値を緩和する。適切な信号を送信した後に、クラスタ相互接続２４０は、クラスタレベルの投機的ＤＲＡＭ読み出し要求レートカウンタをリセットする（７０８）。上記のポリシーは、コアクラスタ上で１つのスレッドを実行するためには良好に機能するが、コアクラスタ上で複数のスレッドを実行するために生成される余分なトラフィックは、システムパフォーマンスを低下させ、１サイクル当たりの命令の大幅な損失を引き起こす。処理コアクラスタの投機的ＤＲＡＭ読み出し要求トラフィックが増加すると閾値レベルがより厳しくなり、これにより、投機的ＤＲＡＭ読み出し要求のより低レベルへの投入の割合を低減することができる。処理コアクラスタの投機的ＤＲＡＭ読み出し要求トラフィックが減少すると、キャッシュコントローラは、閾値レベルを緩和することができる。
【００２２】
投機的ＤＲＡＭ読み出し要求のフローを制御するインテリジェントポリシーは、投機的ＤＲＡＭ読み出し要求のパフォーマンスを向上させることができる。最終レベルキャッシュ内でミスする投機的ＤＲＡＭ読み出し要求のみを発行する投機的ＤＲＡＭ要求ポリシーは、投機的ＤＲＡＭ読み出し要求に対して１００％の精度を維持し、メインメモリ１１４において如何なる不必要なトラフィックも生成しない。ただし、ペナルティメイトレベルキャッシュコントローラは、最終レベルキャッシュにヒットするメモリ要求を１００％の精度で予測することができない。投機的ＤＲＡＭ読み出し要求よりもデマンドメモリ要求を優先させることにより、有益な投機的ＤＲＡＭ読み出し要求を遅延させ、その有効性を低下させる可能性がある。有益な投機的ＤＲＡＭ読み出し要求でさえ、状況によっては不利益であることに留意されたい。例えば、メモリ集約型スレッドが計算集約型スレッドと同時に実行される場合、メモリ集約型スレッドからの有益な投機的ＤＲＡＭ読み出し要求は、計算集約型スレッドからのデマンドメモリ要求を遅延させる可能性がある。投機的ＤＲＡＭ読み出し要求は、メモリ集約型スレッドにわずかな改善を提供する可能性があるが、計算集約型スレッドに対してパフォーマンスの大幅な低下を引き起こす可能性もある。
【００２３】
処理コア２０２、処理コア２０４、処理コア２０６及び処理コア２０８は、かなりの量のプリフェッチ要求を生成して、事前にメインメモリ１１４からキャッシュにデータをロードし、キャッシュミスの数を減少させる。処理コアのプリフェッチャは、時間的に近接したアプリケーションが必要とするキャッシュラインを予測し、これらの予測に基づいてプリフェッチデータ読み出し要求を生成する。一部のプリフェッチデータ読み出し要求のみが、有用なデータをキャッシュにロードする。プリフェッチデータ読み出し要求が実際のコアデマンド要求に先行することから、投機的ＤＲＡＭ読み出し要求を用いてレベル２プリフェッチ応答を高速化しても、レイテンシを低減することができない場合がある。したがって、投機的ＤＲＡＭ読み出し要求を発行するためのコアデマンド要求に対する優先順位を上げると、投機的ＤＲＡＭ読み出し要求によるメモリシステムでの余分なトラフィックを制限することができる。各レベル２キャッシュコントローラは、実行中の投機的ＤＲＡＭ読み出し要求のフローを調整し、投機的ＤＲＡＭ読み出し要求の精度を向上させ、システム全体のパフォーマンスを向上させる。ただし、投機的ＤＲＡＭ読み出し要求を長期間無効にすることによって、システムは、これらの期間中に、如何なるパフォーマンスの利点も引き出すことができない。さらに、投機的ＤＲＡＭ読み出し要求のパフォーマンスは、所定の閾値の選択に依存し、投機的ＤＲＡＭ読み出し要求レートを適切に制御するために、アプリケーション固有のかなりの量の調整を必要とする。投機的ＤＲＡＭ読み出し要求トラフィック全体を監視することにより、このスキームは、不利益な投機的ＤＲＡＭ読み出し要求から有益な投機的ＤＲＡＭ読み出し要求を分離する機能を欠いている。
【００２４】
プリフェッチャベースの投機的ＤＲＡＭ読み出し要求技術は、カウンタベースのメカニズムを使用してメモリシステムへの投機的ＤＲＡＭ読み出し要求の投入をインテリジェントに制御し、上述した投機的ＤＲＡＭ読み出しのトラフィック及び精度を監視する。ただし、プリフェッチャベースの投機的ＤＲＡＭ読み出し要求技術は、投機的ＤＲＡＭ読み出し要求をシステムに投入するための選択的なアプローチを実施する。プリフェッチャベースの投機的ＤＲＡＭ読み出し要求技術の少なくとも１つの実施形態では、ペナルティメイトレベルキャッシュコントローラは、投機的ＤＲＡＭ読み出し要求の最終レベルキャッシュにおける要求レート又はヒット率のうち少なくとも１つが対応する所定の閾値を超えると判別した場合、先ず、プリフェッチについての投機的ＤＲＡＭ読み出し要求を抑制する。一般に、プリフェッチは要求よりも前に発行されるため、投機的ＤＲＡＭ読み出し要求を使用してそれらのレイテンシを低減させても、さらなる利益が得られない場合がある。さらに、上述したように、全てのプリフェッチが有用であるわけではなく、投機的ＤＲＡＭ読み出し要求を発行することでメモリの競合を増加させる。したがって、プリフェッチャベースの投機的ＤＲＡＭ読み出し要求技術は、先ず、不要なトラフィックをフィルタリングすることによって、投機的ＤＲＡＭ読み出し要求の精度を向上させる。上述したカウンタベースのメカニズムは、投機的ＤＲＡＭ読み出し要求レート、及び、最終レベルキャッシュヒット率を監視する。投機的ＤＲＡＭ読み出し要求レート又は最終レベルキャッシュヒット率が対応する所定の閾値を超えるとペナルティメイトレベルキャッシュコントローラが検出した場合、ペナルティメイトレベルキャッシュコントローラは、プリフェッチ投機的ＤＲＡＭ読み出し要求の発行を無効にし、これにより、投機的ＤＲＡＭ読み出しトラフィックを大幅に減少させる。さらに、プリフェッチが最終レベルキャッシュにヒットした場合、プリフェッチ投機的ＤＲＡＭ読み出し要求のフィルタリングによって、投機的ＤＲＡＭ読み出し要求の精度も向上する。したがって、選択的技術により、システムが重大なコアデマンド要求に対する投機的ＤＲＡＭ読み出し要求のパフォーマンスの利益を引き出すことを可能にし、メモリシステムを過剰な投機的ＤＲＡＭ読み出し要求で溢れさせることがない。
【００２５】
プリフェッチ投機的ＤＲＡＭ読み出し要求を無効にした後に、選択的技術は、さらなる閾値違反の発生に応答して、残りの有効な投機的ＤＲＡＭ読み出し要求（すなわち、コアデマンド投機的ＤＲＡＭ読み出し要求）を無効にする。ペナルティメイトレベルキャッシュコントローラは、投機的ＤＲＡＭ読み出し要求の発行を再開する場合に、先ず、コアデマンド要求に対する投機的ＤＲＡＭ読み出し要求を有効にする。ペナルティメイトレベルキャッシュコントローラは、システムが投機的ＤＲＡＭ読み出しトラフィック全体を処理することができると判別した場合、プリフェッチ要求に対する投機的ＤＲＡＭ読み出し要求も有効にする。
【００２６】
少なくとも１つの実施形態では、プリフェッチャベースの投機的ＤＲＡＭ読み出し要求技術は、トラフィック（例えば、要求レート）及び精度（例えば、最終レベルキャッシュヒット率）についての所定の閾値違反に応答して、次のシーケンスで投機的ＤＲＡＭ読み出し要求を選択的に有効にする。
１．投機的ＤＲＡＭ読み出し要求精度又は投機的ＤＲＡＭ読み出し要求レートが対応する所定の閾値に違反した場合、キャッシュコントローラは、先ず、プリフェッチのための投機的ＤＲＡＭ読み出し要求を無効にする。
２．投機的ＤＲＡＭ読み出し要求がプリフェッチに対してのみ無効にされ、投機的ＤＲＡＭ読み出し要求精度又は投機的ＤＲＡＭ読み出し要求レートが対応する所定の閾値に違反した場合、キャッシュコントローラは、全ての投機的ＤＲＡＭ読み出し要求を無効にする。
【００２７】
選択的技術は、次のような段階で投機的ＤＲＡＭ読み出し要求を再開する。
１．全ての投機的ＤＲＡＭ読み出し要求が無効にされ、投機的ＤＲＡＭ読み出し要求の精度が第２のターゲット範囲内にある場合、キャッシュコントローラは、コアデマンド要求に対してのみ投機的ＤＲＡＭ読み出し要求を有効にする。プリフェッチについての投機的ＤＲＡＭ読み出し要求は無効のままである。
２．コアデマンドの投機的ＤＲＡＭ読み出し要求のみが有効にされ、投機的ＤＲＡＭ読み出しトラフィック及び投機的ＤＲＡＭ読み出し要求の精度が第２のターゲット範囲内にある場合、コントローラは、ペナルティメイトレベルキャッシュ内の全てのミスについて投機的ＤＲＡＭ読み出し要求を有効にする。
【００２８】
図９を参照すると、プリフェッチャベースの投機的ＤＲＡＭ読み出し要求技術の一実施形態では、ペナルティメイトレベルキャッシュコントローラ（例えば、レベル２キャッシュコントローラ）は、投機的ＤＲＡＭ読み出し要求を監視し、要求レートカウンタ及び最終レベルキャッシュヒット率カウンタによって収集された情報を、ＢＩＯＳ又は他のシステム初期化シーケンス中に構成され得る対応する所定の閾値と定期的に比較する。所定の閾値は、投機的ＤＲＡＭ読み出し要求レート（例えば、ペナルティメイトレベルキャッシュのミス率）及び精度（例えば、最終レベルキャッシュにおけるヒット率）の許容値を示す。システムが両方のタイプの投機的ＤＲＡＭ読み出し要求を有効にした状態にあり（９０２）、トラフィック及び精度カウンタの値が対応する所定の閾値未満の場合（９０８）、キャッシュコントローラは、プリフェッチ及びコアデマンド要求の両方についての投機的ＤＲＡＭ読み出し要求を発行し続ける。何れかのカウンタが対応する所定の閾値を超えた場合（９１０）、キャッシュコントローラは、プリフェッチ投機的ＤＲＡＭ読み出し要求を無効にする（９０４）。キャッシュコントローラは、プリフェッチ投機的ＤＲＡＭ読み出し要求が無効にされ、コアデマンド投機的ＤＲＡＭ読み出し要求が有効にされている間、トラフィック及び精度を監視し続ける。何れかのカウンタが対応する所定の閾値を超えた場合に（９１２）、投機的ＤＲＡＭ読み出し要求は無効のままであり、キャッシュコントローラは、コアデマンド投機的ＤＲＡＭ読み出し要求をさらに無効にする（９０６）。しかしながら、各カウンタが対応する第２の所定の閾値未満の値を有する場合（９１６）、キャッシュコントローラは、コアデマンド投機的ＤＲＡＭ読み出し要求を再度有効にする（９０４）。第２の所定の閾値は、第１の所定の閾値に基づいて別々に記憶され又は生成されてもよい。第２の所定の閾値は、第１の所定の閾値よりもさらに厳密（例えば、対応する所定の閾値の半分）であってもよい。カウンタ値の各々が、少なくとも一期間、対応する所定の閾値未満のままである場合（９１８）、プリフェッチ投機的ＤＲＡＭ読み出し要求は無効にされたままであるが、コア投機的ＤＲＡＭ読み出し要求は有効にされたままである（９０４）。しかしながら、両方のカウンタ値が対応する第２の所定の閾値（例えば、対応する所定の閾値の１／２）を下回ると（９２０）、ペナルティメイトレベルキャッシュコントローラは、プリフェッチ投機的ＤＲＡＭ読み出し要求を再度有効にする（９０２）。なお、この技術では、状態９０２において処理システムを開始するものとして説明しているが、他の実施形態では、有効なコアデマンド投機的ＤＲＡＭ読み出し要求及び無効なプリフェッチ投機的ＤＲＡＭ読み出し要求を有する状態９０４において処理システム動作が開始されてもよいし、無効なコアデマンド投機的ＤＲＡＭ読み出し要求及び無効なプリフェッチ投機的ＤＲＡＭ読み出し要求を有する状態９０６において処理システム動作が開始されてもよいことに留意されたい。
【００２９】
プリフェッチャベースの投機的ＤＲＡＭ読み出し要求技術の少なくとも１つの実施形態では、ペナルティメイトレベルキャッシュコントローラは、プリフェッチについての投機的ＤＲＡＭ読み出し要求を無効にした後、条件９１２が真である場合、状態９０６に移行する前に、状態９０４においてトラフィック閾値及び精度閾値を強化する。逆に、ペナルティメイトレベルキャッシュコントローラは、条件９２０が満たされる場合、プリフェッチについての投機的ＤＲＡＭ読み出し要求を有効にする前に、状態９０４において、トラフィック閾値及び精度閾値を緩和する。プリフェッチャベースの投機的ＤＲＡＭ読み出し要求技術の少なくとも１つの実施形態では、クラスタ相互接続２４０からのクラスタレベルフィードバックにより、ペナルティメイトレベルキャッシュコントローラが閾値をより厳密に調整するようになり、個々のコアが閾値に違反するとすぐに、クラスタの処理コアのペナルティメイトレベルキャッシュコントローラが、必要に応じて、プリフェッチ投機的ＤＲＡＭ読み出し要求をコア単位で抑制することができる。プリフェッチャベースの投機的ＤＲＡＭ読み出し要求技術の他の実施形態では、クラスタレベルフィードバックにより、クラスタの全ての処理コアが、プリフェッチ投機的レベルＤＲＡＭ読み出し要求、及び／又は、コアデマンド投機的レベルＤＲＡＭ読み出し要求を同時に無効にする。
【００３０】
プリフェッチャベースの投機的ＤＲＡＭ読み出し要求技術の少なくとも１つの実施形態では、投機的ＤＲＡＭ読み出し要求トラフィックは、実際の投機的ＤＲＡＭ読み出し要求及び未実現の投機的ＤＲＡＭ読み出し要求のカウントを含み、投機的ＤＲＡＭ読み出し要求の閾値と比較される、ペナルティメイトレベルキャッシュにおけるミスに基づいて定量化される。未実現の投機的ＤＲＡＭ読み出し要求は、ペナルティメイトレベルキャッシュコントローラによって投機的ＤＲＡＭ読み出し要求が有効にされた場合にメモリシステムに発行される投機的ＤＲＡＭ読み出し要求である。少なくとも１つの実施形態では、精度は、レベル３キャッシュ（すなわち、最終レベルキャッシュ）におけるヒットのカウントに基づいて定量化され、そのカウントは、レベル３キャッシュヒットの所定の閾値と比較される。
【００３１】
選択的技術は、メモリ競合を減少させ、重大なコアデマンド読み出し要求を高速化することによって、パフォーマンスを大幅に向上させることができる。選択的技術は、上述したポリシーと比較して、システムが投機的ＤＲＡＭ読み出し要求を発行しない期間を短縮させる。プリフェッチ投機的ＤＲＡＭ読み出し要求がそのデータのコアデマンドに先行して既に発行されているので、プリフェッチ投機的ＤＲＡＭ読み出し要求を先ず抑制することによって、不利益な可能性のある投機的ＤＲＡＭ読み出し要求から有用な投機的ＤＲＡＭ読み出し要求をフィルタリングする。その結果、ペナルティメイトレベルキャッシュは、コアデマンド投機的ＤＲＡＭ読み出し要求のみを発行するため、不要なメモリ競合を減少させ、サイクル当たりの命令を向上させる。
【００３２】
上述したプリフェッチャベースの投機的ＤＲＡＭ読み出し要求技術の実施形態では、投機的ＤＲＡＭ読み出し要求トラフィックは、投機的ＤＲＡＭ読み出し要求のカウントによって示され、投機的ＤＲＡＭ読み出し要求の閾値と比較され、投機的ＤＲＡＭ読み出し要求の精度は、レベル３キャッシュ（すなわち、最終レベルキャッシュ）でのヒットのカウントを使用して定量化され、そのカウントは、レベル３キャッシュヒットの所定の閾値と比較される。ただし、投機的ＤＲＡＭ読み出し要求トラフィック及び投機的ＤＲＡＭ読み出し要求精度の他のインジケータを使用することができる。例えば、他の実施形態は、精度のために、バッファ内の投機的要求を追跡し、最終レベルキャッシュ内の対応するヒット率を使用する。
【００３３】
本明細書に記載された本発明の説明は例示的なものであり、以下の特許請求の範囲に記載された本発明の範囲を限定することを意図するものではない。例えば、本発明は、メモリシステムが３つのレベルのキャッシュ及びメインメモリを含む実施形態で説明されているが、当業者は、本明細書における教示が、他の階層を含むメモリシステムによって利用される得ることを理解するであろう。さらに、本発明は、メインメモリ１１４がＤＲＡＭである実施形態で説明されているが、当業者は、本明細書における教示が、他のメモリタイプ（例えば、ＳＲＡＭ、相変化メモリ、メモリスタ又は他のメモリタイプ）を含むメインメモリによって利用され得ることを理解するであろう。以下の特許請求の範囲に記載された本発明の範囲から逸脱することなく、本明細書に示された説明に基づいて、本明細書に開示された実施形態の変形及び修正が行われてもよい。
【図１】
2021510886.tif 000003
【図２】
2021510886.tif 000004
【図３】
2021510886.tif 000005
【図４】
2021510886.tif 000006
【図５】
2021510886.tif 000007
【図６】
2021510886.tif 000008
【図７】
2021510886.tif 000009
【図８】
2021510886.tif 000010
【図９】
2021510886.tif 000011
【国際調査報告】
2021510886.tif 000012
2021510886.tif 000013