IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ マイクロソフト テクノロジー ライセンシング,エルエルシーの特許一覧

特表2022-545848投機的データ要求が非投機的になるまでの、投機的データ要求に応答したプロセッサベースのシステム内の非投機的キャッシュメモリにおけるキャッシュ状態更新の延期
<>
  • 特表-投機的データ要求が非投機的になるまでの、投機的データ要求に応答したプロセッサベースのシステム内の非投機的キャッシュメモリにおけるキャッシュ状態更新の延期 図1
  • 特表-投機的データ要求が非投機的になるまでの、投機的データ要求に応答したプロセッサベースのシステム内の非投機的キャッシュメモリにおけるキャッシュ状態更新の延期 図2
  • 特表-投機的データ要求が非投機的になるまでの、投機的データ要求に応答したプロセッサベースのシステム内の非投機的キャッシュメモリにおけるキャッシュ状態更新の延期 図3
  • 特表-投機的データ要求が非投機的になるまでの、投機的データ要求に応答したプロセッサベースのシステム内の非投機的キャッシュメモリにおけるキャッシュ状態更新の延期 図4
  • 特表-投機的データ要求が非投機的になるまでの、投機的データ要求に応答したプロセッサベースのシステム内の非投機的キャッシュメモリにおけるキャッシュ状態更新の延期 図5A
  • 特表-投機的データ要求が非投機的になるまでの、投機的データ要求に応答したプロセッサベースのシステム内の非投機的キャッシュメモリにおけるキャッシュ状態更新の延期 図5B
  • 特表-投機的データ要求が非投機的になるまでの、投機的データ要求に応答したプロセッサベースのシステム内の非投機的キャッシュメモリにおけるキャッシュ状態更新の延期 図6A
  • 特表-投機的データ要求が非投機的になるまでの、投機的データ要求に応答したプロセッサベースのシステム内の非投機的キャッシュメモリにおけるキャッシュ状態更新の延期 図6B
  • 特表-投機的データ要求が非投機的になるまでの、投機的データ要求に応答したプロセッサベースのシステム内の非投機的キャッシュメモリにおけるキャッシュ状態更新の延期 図7A
  • 特表-投機的データ要求が非投機的になるまでの、投機的データ要求に応答したプロセッサベースのシステム内の非投機的キャッシュメモリにおけるキャッシュ状態更新の延期 図7B
  • 特表-投機的データ要求が非投機的になるまでの、投機的データ要求に応答したプロセッサベースのシステム内の非投機的キャッシュメモリにおけるキャッシュ状態更新の延期 図7C
  • 特表-投機的データ要求が非投機的になるまでの、投機的データ要求に応答したプロセッサベースのシステム内の非投機的キャッシュメモリにおけるキャッシュ状態更新の延期 図7D
  • 特表-投機的データ要求が非投機的になるまでの、投機的データ要求に応答したプロセッサベースのシステム内の非投機的キャッシュメモリにおけるキャッシュ状態更新の延期 図8
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2022-10-31
(54)【発明の名称】投機的データ要求が非投機的になるまでの、投機的データ要求に応答したプロセッサベースのシステム内の非投機的キャッシュメモリにおけるキャッシュ状態更新の延期
(51)【国際特許分類】
   G06F 12/0895 20160101AFI20221024BHJP
   G06F 12/084 20160101ALI20221024BHJP
   G06F 12/0893 20160101ALI20221024BHJP
【FI】
G06F12/0895 110
G06F12/084
G06F12/0893
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2022514238
(86)(22)【出願日】2020-06-17
(85)【翻訳文提出日】2022-04-28
(86)【国際出願番号】 US2020037990
(87)【国際公開番号】W WO2021045814
(87)【国際公開日】2021-03-11
(31)【優先権主張番号】16/558,843
(32)【優先日】2019-09-03
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】314015767
【氏名又は名称】マイクロソフト テクノロジー ライセンシング,エルエルシー
(74)【代理人】
【識別番号】100107766
【弁理士】
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【弁理士】
【氏名又は名称】伊東 忠彦
(74)【代理人】
【識別番号】100135079
【弁理士】
【氏名又は名称】宮崎 修
(72)【発明者】
【氏名】コティンティ ナレッシュ,ヴィニヤン レディ
(72)【発明者】
【氏名】ペライス,アーサー
(72)【発明者】
【氏名】アル シェイク,ラミ モハマド
(72)【発明者】
【氏名】プリヤダルシ,シヴァム
【テーマコード(参考)】
5B205
【Fターム(参考)】
5B205KK14
5B205MM01
5B205NN43
5B205NN46
(57)【要約】
投機的データ要求が非投機的になるまで、投機的データ要求に応答したプロセッサベースのシステム内の非投機的キャッシュメモリにおけるキャッシュ状態更新を延期することについて開示する。データ要求から結果として生じるキャッシュメモリ内の少なくとも1つのキャッシュ状態の更新は、データ要求が非投機的になるまで延期される。したがって、キャッシュメモリ内のキャッシュ状態は、誤予測から結果として生じる要求に対して更新されない。キャッシュメモリ内のキャッシュ状態の更新を延期することは、データ要求が非投機的になるまで、キャッシュミスの結果としてキャッシュメモリのメインデータアレイに受信した投機的要求データの記憶を延期することを含むことができる。受信した投機的要求データは、まず、キャッシュメモリに関連づけられた投機的バッファメモリに記憶し、次いで、データ要求が非投機的になった場合にメインデータアレイに記憶することができる。
【特許請求の範囲】
【請求項1】
プロセッサベースのシステムにおける非投機的キャッシュメモリであって、
前記プロセッサベースのシステムのメモリシステムにおけるメモリアドレスに関連づけられたキャッシュデータを記憶するように各々構成された複数のキャッシュエントリを含むメインデータアレイと、
前記メモリシステムにおけるメモリアドレスに関連づけられたキャッシュデータを記憶するように構成されたデータエントリを各々含む複数のバッファエントリを含む投機的バッファメモリと、
キャッシュコントローラであり、
ターゲットアドレスと、前記プロセッサベースのシステム内のプロセッサにより処理される前記ターゲットアドレスを含むロード命令を識別する命令識別(ID)とを含む、要求元からのデータ要求を受信し、
前記データ要求の前記ターゲットアドレスに関連づけられた前記メインデータアレイ内のキャッシュエントリについて検索し、
前記データ要求の前記ターゲットアドレスに関連づけられたバッファエントリについて前記投機的バッファメモリを検索し、
前記メインデータアレイ内のキャッシュデータが前記ターゲットアドレスに関連づけられ、前記投機的バッファメモリ内のバッファエントリ内のキャッシュデータが前記ターゲットアドレスに関連づけられていることに基づいて、前記データ要求に対するデータ応答を前記要求元に送信し、
非投機的である命令の命令IDを含むコミットインジケータを受信し、
前記コミットインジケータ内の受信した命令IDが、前記データ要求の前記ロード命令が非投機的であると示すことに応答して、
前記データ要求の前記ターゲットアドレスに関連づけられた前記メインデータアレイ内のキャッシュエントリのキャッシュ状態を更新する、
ように構成される、キャッシュコントローラと、
を含む非投機的キャッシュメモリ。
【請求項2】
前記キャッシュコントローラはさらに、前記メインデータアレイ内のキャッシュエントリが前記データ要求の前記ターゲットアドレスに関連づけられているかを決定するように構成され、
前記メインデータアレイ内のキャッシュエントリが前記データ要求の前記ターゲットアドレスに関連づけられていることに応答して、前記キャッシュコントローラは、前記データ要求の前記ターゲットアドレスに関連づけられた前記ターゲットアドレスを有する前記メインデータアレイ内の前記キャッシュエントリ内のキャッシュデータを含む、前記データ要求に対する前記データ応答を、前記要求元に送信するように構成される、
請求項1に記載の非投機的キャッシュメモリ。
【請求項3】
前記キャッシュコントローラは、前記コミットインジケータ内の前記受信した命令IDが、前記データ要求の前記ロード命令が非投機的であると示すことに応答して、前記データ要求の前記ターゲットアドレスに関連づけられた前記メインデータアレイ内の前記キャッシュエントリのキャッシュ置換状態を含む前記キャッシュ状態を更新するように構成される、請求項2に記載の非投機的キャッシュメモリ。
【請求項4】
命令IDエントリとメインデータアレイエントリとを含む投機的アクセスレコード(SAR)エントリを記憶するように構成されたSAR回路、をさらに含み、
前記キャッシュコントローラはさらに、
前記メインデータアレイ内のキャッシュエントリが前記データ要求の前記ターゲットアドレスに関連づけられていることに応答して、前記キャッシュコントローラはさらに、
前記SAR回路内のSARエントリを割り当て、前記SARエントリは、前記データ要求の前記ロード命令の前記命令IDを含む命令IDエントリと、前記データ要求の前記ターゲットアドレスに関連づけられた前記メインデータアレイ内のキャッシュエントリに対するインデックスを含むメインデータアレイエントリとを含む
ように構成され、
前記コミットインジケータ内の前記受信した命令IDが、前記データ要求の前記ロード命令が非投機的であると示すことに応答して、
前記受信した命令IDが前記SAR回路内のSARエントリ内の命令IDエントリに含まれるかを決定し、
前記受信した命令IDが前記SAR回路内のSARエントリに含まれると決定することに応答して、前記受信した命令IDを含む前記SARエントリ内の前記メインデータアレイエントリ内の前記インデックスに対応する前記メインデータアレイ内の前記キャッシュエントリの前記キャッシュ置換状態を更新する
ように構成される、請求項3に記載の非投機的キャッシュメモリ。
【請求項5】
前記キャッシュコントローラはさらに、前記メインデータアレイ内のキャッシュエントリが前記データ要求の前記ターゲットアドレスに関連づけられていないことに応答して、
前記投機的バッファメモリ内のバッファエントリが前記データ要求の前記ターゲットアドレスに関連づけられているかを決定し、
前記投機的バッファメモリ内のバッファエントリが前記データ要求の前記ターゲットアドレスに関連づけられていることに応答して、前記キャッシュコントローラは、前記データ要求の前記ターゲットアドレスに関連づけられた前記ターゲットアドレスを有する前記投機的バッファメモリ内の前記バッファエントリ内のキャッシュデータを含む、前記データ要求に対する前記データ応答を、前記要求元に送信するように構成される
ように構成される、請求項2に記載の非投機的キャッシュメモリ。
【請求項6】
前記キャッシュコントローラはさらに、前記投機的バッファメモリ内のバッファエントリが前記データ要求の前記ターゲットアドレスに関連づけられていないことに応答して、
前記データ要求を前記プロセッサベースのシステム内の次により上位レベルのメモリに送信し、
前記次により上位レベルのメモリから前記データ要求に対するデータを受信し、
前記投機的バッファメモリ内のバッファエントリがキャッシュデータを記憶するために利用可能かを決定し、
前記投機的バッファメモリ内のバッファエントリがキャッシュデータを記憶するために利用可能であると決定することに応答して、前記投機的バッファメモリ内の利用可能なバッファエントリ及び前記データ要求の前記ターゲットアドレスに関連づけられた利用可能なバッファエントリに、前記次により上位レベルのメモリから受信した前記データ要求に対する前記データを書き込む
ように構成される、請求項5に記載の非投機的キャッシュメモリ。
【請求項7】
前記キャッシュコントローラは、前記コミットインジケータ内の前記受信した命令IDが、前記データ要求の前記ロード命令が非投機的であると示すことに応答して、
前記データ要求の前記ターゲットアドレスに関連づけられた前記投機的バッファメモリ内の前記バッファエントリ内の前記データ要求に対するデータを、前記データ要求の前記ターゲットアドレスに関連づけられた前記メインデータアレイ内のキャッシュエントリに書き込むように構成されることにより、前記データ要求の前記ターゲットアドレスに関連づけられた前記メインデータアレイ内の前記キャッシュエントリの前記キャッシュ状態を更新する
ように構成される、請求項6に記載の非投機的キャッシュメモリ。
【請求項8】
前記キャッシュコントローラはさらに、それぞれのバッファエントリの非投機的インジケータ内の投機的状態に基づいて、前記投機的バッファメモリ内の前記複数のバッファエントリの中で、前記投機的バッファメモリから追い出すべきバッファエントリを選択するように構成される、請求項7に記載の非投機的キャッシュメモリ。
【請求項9】
前記投機的バッファメモリ内の各バッファエントリは、前記バッファエントリが非投機的であるかを示す非投機インジケータをさらに含み、
前記キャッシュコントローラはさらに、
前記投機的バッファメモリ内のバッファエントリが前記データ要求の前記ターゲットアドレスに関連づけられていることに応答して、
前記データ要求の前記ターゲットアドレスに関連づけられた前記投機的バッファメモリ内の前記バッファエントリ内の非投機的インジケータを投機的状態に設定し、
前記コミットインジケータ内の前記受信した命令IDが、前記データ要求の前記ロード命令が非投機的であると示すことに応答して、
前記データ要求の前記ターゲットアドレスに関連づけられた前記投機的バッファメモリ内の前記バッファエントリ内の前記非投機的インジケータを非投機的状態に設定し、
前記データ要求の前記ターゲットアドレスに関連づけられた前記投機的バッファメモリ内の前記バッファエントリ内の前記非投機的インジケータが非投機的状態に設定されていることに応答して、
前記データ要求の前記ターゲットアドレスに関連づけられた前記投機的バッファメモリ内の前記バッファエントリ内の前記データ要求に対するデータを、前記データ要求の前記ターゲットアドレスに関連づけられた前記メインデータアレイ内のキャッシュエントリに書き込むように構成することにより、前記データ要求の前記ターゲットアドレスに関連づけられた前記メインデータアレイ内の前記キャッシュエントリの前記キャッシュ状態を更新する
ように構成される、請求項6に記載の非投機的キャッシュメモリ。
【請求項10】
命令IDエントリと仮想フィルバッファ(VFB)インデックスエントリとを含む投機的アクセスレコード(SAR)エントリを記憶するように構成されたSAR回路と、
命令IDエントリとVFBインデックスエントリとを含むVFBエントリを記憶するように構成されたVFB回路と、
をさらに含み、
前記キャッシュコントローラはさらに、
前記投機的バッファメモリ内のバッファエントリが前記データ要求の前記ターゲットアドレスに関連づけられていないことに応答して、
前記VFB回路内のVFBエントリを割り当て、前記VFBエントリは、前記データ要求の前記ロード命令の前記命令IDを含む命令IDエントリと、前記データ要求の前記ターゲットアドレスに関連づけられた前記投機的バッファメモリ内のバッファエントリに対するインデックスを含むVFBインデックスエントリとを含み、
前記SAR回路内のSARエントリを割り当て、前記SARエントリは、前記データ要求の前記ロード命令の前記命令IDを記憶する前記命令IDエントリと、前記命令IDを含む命令IDエントリを有する前記VFB回路内のVFBエントリに対するインデックスを記憶する前記VFBインデックスエントリとを含み、
前記コミットインジケータ内の前記受信した命令IDが、前記データ要求の前記ロード命令が非投機的であると示すことに応答して、
前記受信した命令IDを含む命令IDエントリを有する前記SAR回路内のSARエントリ内の前記VFBインデックス内のインデックスに基づいて、インデキシングされた命令IDを含む命令IDエントリを有する関連づけられた前記VFB回路内のVFBエントリを決定し、
前記VFB回路内の前記決定されたVFBエントリ内の前記VFBインデックスエントリ内のインデックスに基づいて、非投機的状態に設定された前記データ要求の前記ターゲットアドレスに関連づけられた前記投機的バッファメモリ内の前記バッファエントリを決定し、
前記キャッシュコントローラは、
前記データ要求の前記ターゲットアドレスに関連づけられた前記投機的バッファメモリ内の前記決定されたバッファエントリ内の前記バッファエントリ内の前記非投機的インジケータを非投機的状態に設定するように構成される、
ように構成される、請求項9に記載の非投機的キャッシュメモリ。
【請求項11】
前記キャッシュコントローラはさらに、前記SAR回路内の前記SARエントリを割り当てることに応答して、
前記SAR回路に含まれる別のSARエントリが、その命令IDエントリ内に前記命令IDを、及びそのVFBエントリ内に前記VFBインデックスエントリを含むかを決定し、
前記別のSARエントリが前記SAR回路に含まれると決定することに応答して、前記SAR回路内の前記SARエントリを割り当て解除する
ように構成される、請求項10に記載の非投機的キャッシュメモリ。
【請求項12】
前記キャッシュコントローラはさらに、前記投機的バッファメモリ内のバッファエントリを、前記メインデータアレイ内のキャッシュエントリが前記バッファエントリに対応するメモリアドレスに対応して追い出されることに応答して、追い出すように構成される、請求項1に記載の非投機的キャッシュメモリ。
【請求項13】
プロセッサベースのシステム内の非投機的キャッシュメモリにおけるキャッシュ状態を更新する方法であって、
ターゲットアドレスと、前記プロセッサベースのシステム内のプロセッサにより処理される前記ターゲットアドレスを含むロード命令を識別する命令識別(ID)とを含む、要求元からのデータ要求を受信するステップと、
前記プロセッサベースのシステムのメモリシステム内のメモリアドレスに関連づけられたキャッシュデータを記憶するように各々構成された複数のキャッシュエントリの中の、前記データ要求の前記ターゲットアドレスに関連づけられたキャッシュエントリについて、メインデータアレイを検索するステップと、
前記メモリシステム内のメモリアドレスに関連づけられたキャッシュデータを記憶するように各々構成された複数のバッファエントリの中の、前記データ要求の前記ターゲットアドレスに関連づけられたバッファエントリについて、投機的バッファメモリを検索するステップと、
前記メインデータアレイ内のキャッシュエントリが前記ターゲットアドレスに関連づけられ、前記投機的バッファメモリ内のバッファエントリ内のキャッシュデータが前記ターゲットアドレスに関連づけられていることに基づいて、前記データ要求に対するデータ応答を前記要求元に送信するステップと、
非投機的である命令の命令IDを含むコミットインジケータを受信するステップと、
前記コミットインジケータ内の受信した命令IDが、前記データ要求の前記ロード命令が非投機的であると示すことに応答して、前記データ要求の前記ターゲットアドレスに関連づけられた前記メインデータアレイ内のキャッシュエントリのキャッシュ状態を更新するステップと、
を含む方法。
【請求項14】
さらに、前記メインデータアレイ内のキャッシュエントリが前記データ要求の前記ターゲットアドレスに関連づけられているかを決定するステップ、を含み、
前記メインデータアレイ内のキャッシュエントリが前記データ要求の前記ターゲットアドレスに関連づけられていることに応答して、前記データ要求の前記ターゲットアドレスに関連づけられた前記ターゲットアドレスを有する前記メインデータアレイ内の前記キャッシュエントリ内のキャッシュデータを含む、前記データ要求に対する前記データ応答を、前記要求元に送信するステップ、を含む請求項13に記載の方法。
【請求項15】
前記メインデータアレイ内のキャッシュエントリが前記データ要求の前記ターゲットアドレスに関連づけられていないことに応答して、
前記投機的バッファメモリ内のバッファエントリが前記データ要求の前記ターゲットアドレスに関連づけられているかを決定するステップと、
前記データ要求の前記ターゲットアドレスに関連づけられた前記ターゲットアドレスを有する前記投機的バッファメモリ内の前記バッファエントリ内のキャッシュデータを含む、前記データ要求に対する前記データ応答を、前記要求元に送信するステップと、
をさらに含む請求項14に記載の方法。
【発明の詳細な説明】
【技術分野】
【0001】
本開示の技術は、「プロセッサ」としても知られる中央処理装置(CPU)を採用するプロセッサベースのシステムに関し、より詳細には、プロセッサによるより高速なアクセスのために情報のコピーをメインメモリに記憶又は「キャッシュ」するために使用されるプロセッサベースのシステム内のキャッシュメモリに関する。
【背景技術】
【0002】
「プロセッサ」としても知られる中央処理装置(CPU)は、広範なアプリケーションのための計算タスクを実行する。従来のプロセッサは、「CPUコア」としても知られる1つ以上のプロセッサコアを含む。プロセッサは、命令メモリからフェッチされる、「ソフトウェア命令」としても知られるコンピュータプログラム命令(「命令」)を実行する。プロセッサは、メモリからフェッチされた命令を実行して、命令タイプ及びデータオペランドに基づいて演算を実行し、結果を生成する。結果は、別の命令により消費されるべき入力として提供し、かつ/あるいはデータとしてデータメモリに記憶することができる。命令及びデータメモリは、プロセッサを含むプロセッサベースのシステムの一部として、メインメモリ内に提供することができる。命令及びデータメモリは、キャッシュメモリの形態で提供することもできる。例えば、データキャッシュメモリは、データへのより高速なアクセスをプロセッサに提供するために、メインメモリに記憶されるデータのより小さいコピーを含み、あるいは「キャッシュ」する。キャッシュメモリシステムは、プロセッサとメインメモリとの間の階層に編成された1つ以上のキャッシュメモリを含む。データは、キャッシュのヒット及びミスに基づいて、メインメモリと異なるレベルのキャッシュメモリとの間を移動する。プロセッサが、キャッシュメモリのレベルのいずれにも記憶されていないデータを要求した場合(すなわち、キャッシュミス)、データは、メインメモリから取り出され、キャッシュメモリのレベルに記憶される。同じデータに対する後の要求が行われてキャッシュヒットを結果としてもたらす(すなわち、データがキャッシュメモリのレベルから追い出される前に、データが要求される)場合、データは、メインメモリからデータを再フェッチする必要があるのと対照的に、キャッシュメモリからプロセッサに提供される。
【0003】
より下位レベルのキャッシュメモリにおけるキャッシュミスの結果として、より上位レベルのキャッシュメモリ又はメインメモリから取り出されたデータは、より下位レベルのキャッシュメモリ内のフィルバッファとして知られる専用の構造に一時的に記憶される。フィルバッファは、ミスステータス保持レジスタ(miss status holding register、MSHR)としても知られている。キャッシュメモリのフィルバッファは、キャッシュメモリ内のキャッシュエントリが入ってくるデータを記憶するために利用可能になるまで、入ってくるデータをキャッシュメモリに記憶するためのステージングエリアとして機能する。キャッシュメモリは、キャッシュミスの結果として新たな入ってくるデータのための空きを作るために、最も長く使用されていない(least recently used)などの追い出しポリシーに基づいてキャッシュメモリのデータアレイ内の既存のキャッシュエントリを追い出す。より下位レベルのキャッシュメモリに対するキャッシュミスは、そのデータアレイに記憶されているか、又はキャッシュデータアレイに記憶される前のフィルバッファに依然として記憶されている要求されたデータを有する、次により上位レベルのキャッシュメモリに対するデータ要求(すなわち、読み出し要求)を結果としてもたらす可能性がある。いずれにせよ、より上位レベルのキャッシュメモリのフィルバッファ又はデータアレイのいずれかに含まれる要求されたデータは、より下位レベルのキャッシュメモリからのデータに対する要求に応答して、より下位レベルのキャッシュメモリに提供することができる。キャッシュメモリは、入ってくるデータをそのフィルバッファ内に保持し、フィルバッファがフルになるまでデータをそのデータアレイに記憶しないことが可能であり、なぜならば、データに対しての入ってくる要求は、データアレイと同様にフィルバッファから満たすことができるためである。
【0004】
プロセッサは、処理手法として命令パイプライン化を利用することができ、それにより、実行されるコンピュータ命令のスループットは、各命令の処理を一連のステップに分割することにより増加され得る。これらのステップは、複数の段階から構成される実行パイプラインで実行される。しかしながら、不正確な計算結果に至ることなく次の命令を実行することができない命令パイプラインにおいて、構造ハザードが生じる可能性がある。例えば、プロセッサにおける正確な割り込みを引き起こす制御フロー命令の実行の結果として、制御ハザードが生じ得る。制御ハザードを引き起こす可能性がある制御フロー命令の一例は、条件付き分岐命令である。条件付き分岐命令は、制御分岐命令の条件が実行されるとき評価された条件に基づいて、命令実行のフローパスをリダイレクトすることがある。プロセッサ性能を最大化する1つのアプローチには、予測回路を利用して、条件付き分岐命令の条件の結果をその実行の前に投機的に予測することが含まれる。このようにして、条件付き分岐命令の予測されたフローパスに従うより若い命令をフェッチし、さらに、条件付き分岐命令が実行されるときに分岐条件が解決されるまでストールする代わりに、命令パイプライン内で処理することができる。条件付き分岐命令が命令パイプラインの実行段階に最終的に到達し、実行されると、条件付き分岐命令の結果として生じるターゲットアドレスは、それを条件付き分岐命令がフェッチされたときに前に予測されたターゲットアドレスと比較することにより検証される。予測されたターゲットアドレスと実際のターゲットアドレスが一致する場合、正しい予測が行われたことを意味し、命令実行に遅延は招かれず、なぜならば、条件付き分岐命令が命令パイプラインの実行段階に到達したとき、ターゲットアドレスにおける後の命令は正しくフェッチされ、命令パイプライン内に既に存在していることになるためである。しかしながら、予測されたターゲットアドレスと実際のターゲットアドレスが一致しない場合、正確な割り込みを引き起こす命令パイプラインで誤予測された分岐ハザードが生じる。結果として、誤予測回復プロセスが実行され、それにより、命令パイプライン内の条件付き分岐命令より若い命令はフラッシュされ、命令パイプラインフェッチユニットは、ターゲットアドレスから開始する新しい命令をフェッチするためにリダイレクトされ、遅延と性能の低下を結果としてもたらす。
【0005】
誤予測回復が、不正確に予測されたフローパスにおける条件付き分岐命令より若い命令をフラッシュし、次いで、正しいフローパスにおける命令をフェッチし、命令を処理することを含むとしても、不正確なフローパスにおけるより若い命令の処理は、依然として、キャッシュミスの結果としてデータをキャッシュメモリに至らせる可能性がある。これは、漏洩という形でセキュリティ問題を引き起こす可能性がある。例えば、プロセッサ内で実行する悪意のある攻撃者プロセスは、メモリから大量のデータをロードして、このデータに共有キャッシュメモリをフィルしてキャッシュメモリに準備する(prime)ことをさせるコードを含むことができる。攻撃者プロセスは、分岐予測回路に準備して、後に実行されるビクティム(victim)プロセスにおける条件付き分岐命令の不正確な投機的予測を、後に行われるように強制することもできる。ビクティムプロセス内の条件付き分岐命令に従う、不正確な投機されたフローパス内のロード命令は、これらのロード命令が後に、条件付き分岐命令が実行されてその条件が解決されるときにフラッシュされるとしても、プロセッサにキャッシュメモリへデータをロードさせる。これは、攻撃者プロセスにより準備されたキャッシュメモリ内のデータの一部を、ビクティムプロセスにおける不正確なフローパス内のロード命令によりキャッシュメモリから追い出させる。攻撃者プロセスが、ビクティムプロセスが切り替えられた後に再び実行されると、攻撃者プロセスは、その準備されたデータのうちのいずれがキャッシュメモリから追い出されたかを判断することができる。この情報は、ビクティムプロセスによりアクセスされるデータアドレスに関する情報を提供する可能性がある。
【0006】
前述のセキュリティ問題は、投機的に処理されるロード命令の処理からロードされたデータを記憶するために、共有キャッシュメモリの外部に非共有の投機バッファを設けることにより対処することができる。投機的に処理されるロード命令を処理することからの、投機バッファへの投機的にロードされたデータは、投機的に処理されるロード命令に依存してコンシューマ(consumer)命令に依然として提供することができる。データを投機バッファに投機的にロードさせたロード命令が実行され、非投機的になると、投機的予測が正しかった場合、投機的要求は非投機的に再発行することができる。投機的予測が正しくなかった場合、データに対する投機的要求は再発行されず、したがって、投機的にロードされたデータがキャッシュメモリにインストールされることを防止する。このようにして、データは、不正確に投機されたロード命令を処理した結果としてキャッシュメモリにロードされない。しかしながら、データをプロセッサにロードするために、最大で2倍の数(2X)のデータ要求が発行されることになり、これは非効率的である。
【発明の概要】
【0007】
本明細書に開示される態様は、投機的(speculative)データ要求が非投機的(non-speculative)になるまで、投機的データ要求に応答したプロセッサベースのシステム内の非投機的キャッシュメモリにおけるキャッシュ状態更新を延期する(deferring)ことを含む。プロセッサベースのシステムは、メインメモリに記憶されたロードされたデータに基づいて動作を実行するためのコンピュータソフトウェア命令を実行する1つ以上のプロセッサコアを含み得るプロセッサを含む。プロセッサベースのシステムは、プロセッサとメインメモリとの間の階層に編成された1つ以上のプライベート及び/又は共有キャッシュメモリを含むキャッシュメモリシステムをさらに含む。各キャッシュメモリは、新しいデータ要求(すなわち、ロード/読み出し要求)を記憶するための空きを作るために、そのキャッシュエントリ内のどのデータがより上位レベルのキャッシュメモリ又はメインメモリに追い出される(evicted)かを管理するキャッシュ置換ポリシーを有する。条件付きフロー制御命令(例えば、条件付き分岐命令)の条件を投機的に予測した結果としてプロセッサにより投機的に処理されるロードベースの命令(「ロード命令」)は、キャッシュメモリシステムに対してデータ要求を行わせる。しかしながら、条件付きフロー制御命令の条件が、実行において誤予測されたと判定される場合、投機的に処理されたロードベースの命令は、フラッシュされ得る。しかしながら、もはや有効でない投機的なロードベースの命令の処理から結果として生じる、キャッシュメモリシステムに対する前のデータ要求は、キャッシュメモリシステムに対して行われた。そのようなデータ要求が、キャッシュメモリシステム内の他のキャッシュデータを追い出させることを許容されていた場合、これは、キャッシュ汚染を引き起こす可能性がある。これは、セキュリティ問題も引き起こす可能性がある。例えば、悪意のある攻撃者プロセスは、キャッシュメモリシステムにロードされた不正確な投機的データに基づいて、ビクティムプロセスによりアクセスされるデータに関する情報を学習し得る。悪意のある攻撃者プロセスは、その独自のデータを用いてキャッシュメモリシステムに準備し、ビクティムプロセスにおける条件付きフロー制御命令について誤予測を行うように制御予測回路に準備し、不正確な投機的データをキャッシュメモリシステムにロードさせる可能性がある。攻撃者アプリケーションは、キャッシュメモリシステム内の準備されたビクティムデータのうちのいずれが、キャッシュメモリシステムにロードされる不正確な投機的データで置換されたかに基づいて、ビクティムプロセスに関する情報を学習する可能性がある。
【0008】
この点に関し、本明細書に開示される例示的な態様において、キャッシュメモリにおける少なくとも1つのキャッシュ状態は、データ要求が非投機的になるまで、受信したデータ要求に応答してキャッシュメモリ内で更新されることを延期される。これは、キャッシュメモリが、誤予測が発生した場合に、発行されるべきでなかった誤予測から結果として生じるデータ要求に基づいて更新されないためであり、したがって、キャッシュメモリは、非投機的キャッシュメモリである。このようにして、キャッシュ汚染が低減され得る。別の例として、攻撃者プロセスは、キャッシュメモリ内の投機的に変更されたキャッシュ状態を結果としてもたらすデータ要求をビクティムプロセスにより発行させる制御予測回路における誤予測を準備することにより、プロセッサ内で実行しているビクティムプロセスによるデータアクセスに関する情報を取得することができない。非投機的であるとして解決されないデータ要求が、キャッシュメモリにおけるキャッシュ状態を変更できる場合、攻撃者アプリケーションは、キャッシュメモリにおける変更されたキャッシュ状態を理解することにより、ビクティムプロセスによるデータアクセスに関する理解を得る可能性がある。
【0009】
一例示的な態様において、キャッシュメモリにおけるキャッシュ状態更新の延期は、キャッシュメモリに対するキャッシュミスの結果としてより上位レベルのメモリから受信した、受信した投機的な要求されたデータを、キャッシュメモリのメインデータアレイ内のキャッシュエントリに最初に記憶しないことにより、提供される。代わりに、受信した投機的な要求されたデータは、まず、キャッシュメモリのメインデータアレイ内でない投機的バッファメモリに記憶される。例えば、投機的バッファメモリは、キャッシュメモリのメインデータアレイ内のキャッシュエントリが入ってくるデータを記憶するために利用可能になるまで、要求されたデータを記憶するためのステージングエリアとして機能するキャッシュメモリ内のフィルバッファ回路でもよい。投機的バッファメモリに記憶された投機的な要求されたデータは、データ要求が要求される結果をもたらしたロード命令が非投機的になった場合に、キャッシュメモリのメインデータアレイ内の利用可能なキャッシュエントリに記憶される。データ要求が非投機的になることに応答して、投機的バッファメモリに記憶された投機的な要求されたデータをキャッシュメモリ内のキャッシュエントリに記憶させるために、プロセッサによりキャッシュメモリシステムに対して新しいデータ要求が発行される必要はない。
【0010】
別の例示的な態様において、プロセッサからキャッシュメモリシステム内のキャッシュメモリに発行されたデータ要求がキャッシュメモリのメインデータアレイ内のキャッシュエントリに含まれるとき、キャッシュヒットが結果として生じる。投機的な要求されたデータが、キャッシュメモリ内のメインデータアレイのキャッシュエントリに既に含まれるため、キャッシュメモリ内のメインデータアレイ内のヒットキャッシュエントリ内の投機的な要求されたデータは、プロセッサ内の要求元に返される。しかしながら、投機的な要求されたデータを含むメインデータアレイ内のキャッシュエントリの置換キャッシュ状態の更新は、データに対するデータ要求を開始したロード命令が非投機的になるまで延期することができる。これは、例えば、誤予測の結果としてデータ要求がフラッシュされる場合に、キャッシュメモリのメインデータアレイの置換ポリシーが、データ要求の結果として投機的な要求されたデータを含むメインデータアレイのキャッシュエントリに対して変更された置換キャッシュ状態に基づいて実行されないためである。
【0011】
別の例示的な態様において、プロセッサからキャッシュメモリへ発行されたデータ要求がメインデータアレイに含まれないが、キャッシュメモリに関連づけられた投機的バッファメモリに含まれる場合、投機的バッファメモリ内の投機的な要求されたデータも、キャッシュヒットとしてプロセッサ内の要求元に返される。投機的な要求されたデータに対するキャッシュ状態の更新は、データ要求が非投機的になるまで、投機的な要求されたデータをキャッシュメモリのメインデータアレイ内のキャッシュエントリに書き込まないことにより延期される。また、一例として、上記で論じたように、投機的な要求されたデータに対する置換キャッシュ状態の更新は、同じデータに対する新しいデータ要求がキャッシュメモリのメインデータアレイにおけるキャッシュヒットを結果としてもたらすまで、自動的に延期される。
【0012】
この点に関し、一例示的な態様において、プロセッサベースのシステムにおける非投機的キャッシュメモリが提供される。非投機的キャッシュメモリは、プロセッサベースのシステムのメモリシステム内のメモリアドレスに関連づけられたデータのキャッシュデータを記憶するように各々構成された複数のキャッシュエントリを含むメインデータアレイを含む。非投機的キャッシュメモリは、メモリシステム内のメモリアドレスに関連づけられたキャッシュされたデータを記憶するように構成されたデータエントリを各々含む複数のバッファエントリを含む投機的バッファメモリをさらに含む。非投機的キャッシュメモリは、ターゲットアドレスと、プロセッサベースのシステム内のプロセッサにより処理されるターゲットアドレスを含むロード命令を識別する命令識別(ID)とを含む、要求元からのデータ要求を受信するように構成されたキャッシュコントローラをさらに含む。キャッシュコントローラはさらに、データ要求のターゲットアドレスに関連づけられたメインデータアレイ内のキャッシュエントリについて検索するように構成される。キャッシュコントローラはさらに、データ要求のターゲットアドレスに関連づけられたバッファエントリについて投機的バッファメモリを検索するように構成される。キャッシュコントローラはさらに、メインデータアレイ内のキャッシュデータがターゲットアドレスに関連づけられ、投機的バッファメモリ内のバッファエントリ内のキャッシュデータがターゲットアドレスに関連づけられていることに基づいて、データ要求に対するデータ応答を要求元に送信するように構成される。キャッシュコントローラはさらに、非投機的である命令の命令IDを含むコミットインジケータ(commit indicator)を受信するように構成される。キャッシュコントローラはさらに、コミットインジケータ内の受信した命令IDが、データ要求のロード命令が非投機的であると示すことに応答して、データ要求のターゲットアドレスに関連づけられたメインデータアレイ内のキャッシュエントリのキャッシュ状態を更新するように構成される。
【0013】
別の例示的な態様において、プロセッサベースのシステム内の非投機的キャッシュメモリにおけるキャッシュ状態を更新する方法が提供される。当該方法は、ターゲットアドレスと、プロセッサベースのシステム内のプロセッサにより処理されるターゲットアドレスを含むロード命令を識別する命令IDとを含む、要求元からのデータ要求を受信するステップを含む。当該方法は、プロセッサベースのシステムのメモリシステム内のメモリアドレスに関連づけられたキャッシュデータを記憶するように各々構成された複数のキャッシュエントリの中の、データ要求のターゲットアドレスに関連づけられたキャッシュエントリについて、メインデータアレイを検索するステップをさらに含む。当該方法は、メモリシステム内のメモリアドレスに関連づけられたキャッシュデータを記憶するように各々構成された複数のバッファエントリの中の、データ要求のターゲットアドレスに関連づけられたバッファエントリについて、投機的バッファメモリを検索するステップをさらに含む。当該方法は、メインデータアレイ内のキャッシュエントリがターゲットアドレスに関連づけられ、投機的バッファメモリ内のバッファエントリ内のキャッシュデータがターゲットアドレスに関連づけられることに基づいて、データ要求に対するデータ応答を要求元に送信することをさらに含む。当該方法は、非投機的である命令の命令IDを含むコミットインジケータを受信するステップをさらに含む。当該方法は、コミットインジケータ内の受信した命令IDが、データ要求のロード命令が非投機的であることを示すことに応答して、データ要求のターゲットアドレスに関連づけられたメインデータアレイ内のキャッシュエントリのキャッシュ状態を更新するステップをさらに含む。
【0014】
当業者は、添付の図面と関連して好適な実施形態の以下の詳細な説明を読んだ後、本開示の範囲を理解し、そのさらなる態様を実現するであろう。
【図面の簡単な説明】
【0015】
本明細書に組み込まれ、本明細書の一部を形成する添付の図面は、本開示のいくつかの態様を例示し、本説明と共に、本開示の原理を説明するのに役立つ。
図1】キャッシュメモリシステム及びメインメモリを含むメモリシステムに対してメモリ要求(すなわち、データ読み出し要求及びデータ書き込み要求)を発行するように構成されたプロセッサを含む、一例示的なプロセッサベースのシステムの図であり、キャッシュメモリシステム内の少なくとも1つのキャッシュメモリは、データ要求が非投機的になるまで、プロセッサからのデータ要求を受信した応答においてキャッシュ状態を更新することを延期するように構成される。
図2図1のプロセッサに含めることができ、実行のためのコンピュータ命令を処理するための1つ以上の命令パイプラインを含む、一例示的な命令処理回路の図であり、命令処理回路は、命令処理回路によりフェッチ及び処理される条件付きフロー制御命令の状態を投機的に予測するように構成された制御フロー予測回路を含む。
図3図1のキャッシュメモリシステムにおける一例示的な非投機的キャッシュメモリの図である。
図4図3のキャッシュメモリにおけるキャッシュコントローラが、投機的である受信したデータ要求に対するデータのキャッシュ状態を更新することを延期し、データ要求が非投機的になることに応答して、データ要求に関連づけられたデータに対するメインデータアレイにおける延期されたキャッシュ状態を更新する、一例示的なプロセスを示すフローチャートである。
図5A図1のプロセッサが、キャッシュメモリシステムへのデータ要求を発行してキャッシュメモリのメインデータアレイにおけるキャッシュヒットを結果としてもたらし、キャッシュメモリのキャッシュコントローラが、データ要求を生成したプロセッサにより処理されるロード命令に関連づけられた投機的アクセスレコード(SAR)回路内のエントリを割り当てて、投機的な要求されたデータを記憶するメインデータアレイ内のキャッシュエントリに対するキャッシュ状態更新延期を記録することを示す。
図5B図3のキャッシュメモリが、プロセッサにより処理されるロード命令が非投機的になったことを示すプロセッサからの非投機的インジケータを受信し、キャッシュメモリのキャッシュコントローラが、非投機的になったロード命令に関連づけられた記録されたキャッシュ状態更新延期にアクセスし、それにより、投機的な要求されたデータを記憶するメインデータアレイ内のキャッシュエントリのキャッシュ状態が更新されることを示す。
図6A図1のプロセッサが、キャッシュメモリシステムへのデータ要求を発行してキャッシュメモリのメインデータアレイにおけるキャッシュミスを結果としてもたらし、投機的アクセスレコード(SAR)回路内に割り当てられたエントリが、データ要求に関連づけられた命令に関連づけられたインデックスを、データ要求に対するキャッシュデータを記憶するために割り当てられた投機的バッファメモリ内のバッファエントリに記憶して、データ要求に対するキャッシュ状態更新延期を記録することを示す。
図6B図3のキャッシュメモリが、プロセッサにより処理されるロード命令が非投機的になったことを示すプロセッサからの非投機的インジケータを受信し、応答して、キャッシュメモリ内のキャッシュコントローラが、データ要求に関連づけられた命令に関連づけられたSAR回路内のエントリによりインデキシングされた投機的バッファメモリ内のロード命令に関連づけられた記録されたキャッシュ状態更新延期にアクセスして、要求されたデータを記憶するメインデータアレイ内のキャッシュエントリのキャッシュ状態を更新することを示す。
図7A図7A図7Dは、図1のプロセッサが、キャッシュメモリシステムへのデータ要求を発行してキャッシュメモリのメインデータアレイにおけるキャッシュヒット及びキャッシュミスを結果としてもたらすこと、及び、仮想フィルバッファ回路をインデキシングするように構成されたSAR回路の使用により、データ要求に関連づけられたメインデータアレイ内のキャッシュデータに対するキャッシュ状態の更新を延期する例示的な処理、及び、仮想フィルバッファ回路が、データ要求が非投機的になるとデータ要求に関連づけられたキャッシュ状態を更新する際に使用されるべき延期されたキャッシュ状態更新を記録するために、投機的バッファメモリをインデキシングするように構成されることの一例を示す。
図7B図7A図7Dは、図1のプロセッサが、キャッシュメモリシステムへのデータ要求を発行してキャッシュメモリのメインデータアレイにおけるキャッシュヒット及びキャッシュミスを結果としてもたらすこと、及び、仮想フィルバッファ回路をインデキシングするように構成されたSAR回路の使用により、データ要求に関連づけられたメインデータアレイ内のキャッシュデータに対するキャッシュ状態の更新を延期する例示的な処理、及び、仮想フィルバッファ回路が、データ要求が非投機的になるとデータ要求に関連づけられたキャッシュ状態を更新する際に使用されるべき延期されたキャッシュ状態更新を記録するために、投機的バッファメモリをインデキシングするように構成されることの一例を示す。
図7C図7A図7Dは、図1のプロセッサが、キャッシュメモリシステムへのデータ要求を発行してキャッシュメモリのメインデータアレイにおけるキャッシュヒット及びキャッシュミスを結果としてもたらすこと、及び、仮想フィルバッファ回路をインデキシングするように構成されたSAR回路の使用により、データ要求に関連づけられたメインデータアレイ内のキャッシュデータに対するキャッシュ状態の更新を延期する例示的な処理、及び、仮想フィルバッファ回路が、データ要求が非投機的になるとデータ要求に関連づけられたキャッシュ状態を更新する際に使用されるべき延期されたキャッシュ状態更新を記録するために、投機的バッファメモリをインデキシングするように構成されることの一例を示す。
図7D図7A図7Dは、図1のプロセッサが、キャッシュメモリシステムへのデータ要求を発行してキャッシュメモリのメインデータアレイにおけるキャッシュヒット及びキャッシュミスを結果としてもたらすこと、及び、仮想フィルバッファ回路をインデキシングするように構成されたSAR回路の使用により、データ要求に関連づけられたメインデータアレイ内のキャッシュデータに対するキャッシュ状態の更新を延期する例示的な処理、及び、仮想フィルバッファ回路が、データ要求が非投機的になるとデータ要求に関連づけられたキャッシュ状態を更新する際に使用されるべき延期されたキャッシュ状態更新を記録するために、投機的バッファメモリをインデキシングするように構成されることの一例を示す。
図8】キャッシュメモリシステム及びメインメモリを含むメモリシステムに対してメモリ要求を発行するように構成されたプロセッサを含む一例示的なプロセッサベースのシステムのブロック図であり、キャッシュメモリシステムは、少なくとも1つのキャッシュメモリを含み、これらに限られないが、データ要求が非投機的になるまで、プロセッサからのデータ要求を受信した応答においてキャッシュ状態を更新することを延期するように構成された、図1図3図5A図5B図6A図6B、及び図7A図7Dのキャッシュメモリが含まれる。
【発明を実施するための形態】
【0016】
本明細書に開示される態様は、投機的データ要求が非投機的になるまで、投機的データ要求に応答したプロセッサベースのシステム内の非投機的キャッシュメモリにおけるキャッシュ状態更新を延期することを含む。プロセッサベースのシステムは、メインメモリに記憶されたロードされたデータに基づいて動作を実行するためのコンピュータソフトウェア命令を実行する1つ以上のプロセッサコアを含み得るプロセッサを含む。プロセッサベースのシステムは、プロセッサとメインメモリとの間の階層に編成された1つ以上のプライベート及び/又は共有キャッシュメモリを含むキャッシュメモリシステムをさらに含む。各キャッシュメモリは、新しいデータ要求(すなわち、ロード/読み出し要求)を記憶するための空きを作るために、そのキャッシュエントリ内のどのデータがより上位レベルのキャッシュメモリ又はメインメモリに追い出されるかを管理するキャッシュ置換ポリシーを有する。条件付きフロー制御命令(例えば、条件付き分岐命令)の条件を投機的に予測した結果としてプロセッサにより投機的に処理されるロードベースの命令(「ロード命令」)は、キャッシュメモリシステムに対してデータ要求を行わせる。本明細書に開示される例示的な態様において、キャッシュメモリにおける少なくとも1つのキャッシュ状態は、データ要求が非投機的になるまで、受信したデータ要求に応答してキャッシュメモリ内で更新されることを延期される。これは、キャッシュメモリが、誤予測が発生した場合に、発行されるべきでなかった誤予測から結果として生じるデータ要求に基づいて更新されないためであり、したがって、キャッシュメモリは、非投機的キャッシュメモリである。
【0017】
このようにして、キャッシュ汚染が低減され得る。別の例として、攻撃者プロセスは、キャッシュメモリ内の投機的に変更されたキャッシュ状態を結果としてもたらすデータ要求をビクティムプロセスにより発行させる制御予測回路における誤予測を準備することにより、プロセッサ内で実行しているビクティムプロセスによるデータアクセスに関する情報を取得することができない。非投機的であるとして解決されないデータ要求が、キャッシュメモリにおけるキャッシュ状態を変更できる場合、攻撃者アプリケーションは、キャッシュメモリにおける変更されたキャッシュ状態を理解することにより、ビクティムプロセスによるデータアクセスに関する理解を得る可能性がある。
【0018】
図1は、キャッシュメモリシステム106及びメインメモリ108を含むメモリシステム104に対してメモリ要求(すなわち、データ読み出し要求及びデータ書き込み要求)を発行するように構成された中央処理装置(CPU)又はプロセッサ102を含む、一例示的なプロセッサベースのシステム100の図である。例えば、メインメモリ108は、別個のDRAMチップに設けられたダイナミックランダムアクセスメモリ(DRAM)でもよい。プロセッサ102は、1つ以上のそれぞれのCPUコア110(1)~110(N)を含み、「N」は、プロセッサ102に含まれるCPUコアの数を表す正の整数である。プロセッサ102は、集積回路(IC)チップ112にパッケージすることができる。キャッシュメモリシステム106は、CPUコア110(1)~110(N)とメインメモリ108との間に論理的に位置するプロセッサベースのシステム100内の異なる階層に存在し得る1つ以上のキャッシュメモリ114(1)~114(X)を含み、「X」は、プロセッサ102に含まれるCPUコアの数を表す正の整数である。キャッシュメモリは、メインメモリ108に含まれるデータのサブセットを記憶又はキャッシュして、データ要求を満たすためにメインメモリ108内のデータへのより高速なアクセスをCPUコア110(1)~110(N)に提供する。メモリコントローラ116は、メインメモリ108へのアクセスを制御する。
【0019】
例えば、要求デバイスとしてのCPUコア110(1)~110(N)は、ロード命令を処理することに応答してデータを読み出すためのデータ要求118を発行することができる。データ要求118は、メモリから読み出されるデータのターゲットアドレスを含む。データ要求118は、CPUコア110(1)~110(N)にデータ要求118を発行させた命令を識別する命令識別(ID)をさらに含んでもよい。CPUコア110(1)を一例として用いると、要求されたデータが、レベル1(L1)キャッシュメモリと見なされ得るプライベートキャッシュメモリ114(1)内にない場合(すなわち、キャッシュメモリ114(1)に対するキャッシュミス)、プライベートキャッシュメモリ114(1)は、データ要求118を、この例では相互接続バス117を通じて、レベル(3)キャッシュメモリであり得る全てのCPUコア110(1)~110(N)に共有される共有キャッシュメモリ114(X)に送信する。CPUコア110(1)~110(N)のサブセットとのみ共有されるプロセッサ102との他の共有キャッシュメモリ114(2)、114(3)も、レベル2(2)キャッシュメモリとみなされ得る。要求されたデータは最終的に、キャッシュメモリ114(1)~114(X)において、又はキャッシュメモリ114(1)~114(X)のいずれにも含まれない場合にはメインメモリ108においてのいずれかで取得される。キャッシュミスに起因して、より上位レベルのキャッシュメモリ114(1)~114(X)又はメインメモリ108からキャッシュメモリ114(1)~114(X)により受信されたデータは、受信キャッシュメモリ114(1)~114(N)に、新しいキャッシュデータのための空きを作るためにキャッシュデータをより上位レベルのメモリへ追い出させる。各キャッシュメモリ114(1)~114(X)は、キャッシュミスを結果としてもたらしたデータ要求118に対する新しいキャッシュデータを記憶するための空きを作るために、そのキャッシュデータのうちのいずれがより上位レベルのキャッシュメモリ114(1)~114(X)又はメインメモリ108に追い出されるかを管理するキャッシュ置換ポリシーを有する。
【0020】
図2は、図1のプロセッサ102のCPUコア110(1)~110(N)のいずれかとすることができるCPUコア110に設けられた命令処理回路200を示す。命令処理回路200は、例として、命令キャッシュメモリ206又は命令メモリ208に記憶された一連の命令202から実行のために命令フェッチ回路204によりフェッチされた、フェッチされたコンピュータ命令202Fを処理するための1つ以上の命令パイプラインI~Iを含む。命令キャッシュメモリ206は、図1のプロセッサベースのシステム100内のキャッシュメモリ106内のキャッシュメモリ114(1)~114(X)の一部として設けられてもよい。命令メモリ208は、図1のプロセッサベースのシステム100内のメインメモリ108内に、又はメインメモリ108の一部として設けられてもよい。命令フェッチ回路204は、フェッチされた命令202Fが実行回路212に到達して実行される前に、フェッチされた命令202Fを前処理されるように命令処理回路200内の命令ストリーム210として1つ以上の命令パイプラインI~Iに提供するように構成される。命令パイプラインI~Iは、実行回路212によるフェッチされた命令202Fの実行の前に、スループットを増加させるために同時に実行することができる一連のステップでフェッチされた命令202Fを前処理及び処理するために、命令処理回路200の異なる処理回路又は段階にわたって提供される。
【0021】
引き続き図2を参照し、命令処理回路200は、命令フェッチ回路204によりフェッチされたフェッチされた命令202Fをデコードされた命令202Dにデコードして必要とされる命令タイプ及び動作を決定するように構成された命令デコード回路214を含む。デコードされた命令202Dは、命令パイプラインI~Iのうちの1つ以上に配置され、次に、命令処理回路200内のリネーム回路216に提供されて、デコードされた命令202D内のいずれかのレジスタ名が、並列又はアウトオブオーダ処理を妨げることになるレジスタ依存性を解消するためにリネームされる必要があるかどうかが決定される。リネーム回路216は、レジスタマップテーブル(RMT)218を呼び出して、論理ソースレジスタオペランドをリネームし、かつ/あるいはデコードされた命令202Dの宛先レジスタオペランドを物理レジスタファイル(PRF)222内の利用可能な物理レジスタ220(1)~220(X)(P、P、....、P)に書き込むように構成される。RMT218は、それぞれの論理レジスタR~Rに各々マッピングされた(すなわち、関連づけられた)複数のマッピングエントリを含む。マッピングエントリは、物理レジスタファイル(PRF)222内の物理レジスタ220(1)~220(X)を指すために、アドレスポインタの形式の情報を記憶するように構成される。PRF222内の各物理レジスタ220(1)~220(X)は、デコードされた命令202Dのソース及び/又は宛先レジスタオペランドのためのデータを記憶するように構成されたデータエントリを含む。
【0022】
命令処理回路200は、実行回路212内の実行された命令202Eから生成された値を取り出すために、デコードされた命令202DのソースレジスタオペランドのRMT218内の論理レジスタR~Rにマッピングされたマッピングエントリに基づいてPRF222内の物理レジスタ220(1)~220(X)にアクセスするように構成されたレジスタアクセス(RACC)回路224をさらに含む。RACC回路224はさらに、実行されるべきデコードされた命令202Dのソースレジスタオペランドとして、実行されたデコードされた命令202Eから取り出された生成値を提供するように構成される。さらに、命令処理回路200において、スケジューラ回路226が命令パイプラインI~Iに設けられ、デコードされた命令202Dのための全てのソースレジスタオペランドが利用可能になるまで、デコードされた命令202Dを予約(reservation)エントリに記憶するように構成される。スケジューラ回路226は、実行レーンL~Lにおいて実行可能な状態であるデコードされた命令202Dを実行回路212に発行する。さらに、書き込み回路228が命令処理回路200に設けられて、実行された命令202Eから生成された値をPRF222、キャッシュメモリシステム106、又はメインメモリ108などのメモリに書き戻し、あるいはコミットする。
【0023】
引き続き図2を参照し、命令処理回路200は、フロー制御予測回路230をさらに含む。フロー制御予測回路230は、実行のために命令パイプラインI~Iに、命令ストリーム210の命令制御フローパス内の取られたパスがフェッチされるか、又は取られていないパスがフェッチされるかを制御する、条件付き分岐命令などのフェッチされる条件付きフロー制御命令202Fの条件の結果を投機的に予測するように構成される。このように、命令処理回路200が投機的にフェッチされた命令202Fを処理し続けることができる前に、フェッチされた条件付きフロー制御命令202Fの状態は、実行回路212による実行において解決される必要はない。フロー制御予測回路230により行われる予測は、フェッチすべき次の命令202を決定するために命令フェッチ回路204により使用されるように、予測情報232として命令フェッチ回路204に対して提供することができる。
【0024】
しかしながら、条件付きフロー制御命令202Fが実行回路212で実行されるとき、条件付きフロー制御命令202Fの条件が誤予測されたと判断される場合、条件付きフロー制御命令202Fの後にフェッチされ、命令処理回路202で処理された投機的なフェッチされた命令202Fは、これらの命令が処理されるべきではなかったため、フラッシュされる。命令処理回路202は、条件付きフロー制御命令202Fが処理されたときの前に存在した状態に戻される。誤予測に応答してフラッシュされる投機的なフェッチされた命令202Fは、図1のプロセッサベースのシステム100内のキャッシュメモリシステム106に対して投機的データ要求118を発行したロードベースの命令(「ロード命令」)を含んでいた可能性がある。このような投機的データ要求118がキャッシュミスを結果としてもたらした場合、任意のこのような投機的データ要求118に対するデータ応答のための空きを作るために、キャッシュメモリシステム106からデータが追い出される。これは、キャッシュ汚染を引き起こす可能性がある。これは、セキュリティ問題も引き起こす可能性がある。例えば、プロセッサ102内で実行されている悪意のある攻撃者プロセスは、キャッシュメモリシステム106にロードされた不正確な投機的データに基づいて、プロセッサ102内で実行されているビクティムプロセスによりアクセスされるデータに関する情報を学習し得る。悪意のある攻撃者プロセスは、その独自のデータを用いてキャッシュメモリシステム106に準備し、ビクティムプロセスにおける条件付きフロー制御命令202Fについて誤予測を行うようにフロー制御予測回路に準備し、不正確な投機的データをキャッシュメモリシステム106にロードさせる可能性がある。攻撃者アプリケーションは、キャッシュメモリシステム106内の準備されたビクティムデータのうちのいずれが、キャッシュメモリシステム106にロードされる不正確な投機的データで置換されたかに基づいて、ビクティムプロセスに関する情報を学習する可能性がある。
【0025】
これに関して、図1のプロセッサベースのシステム100内のキャッシュメモリシステム106内のキャッシュメモリ114(1)~114(X)のうちの1つ以上は、非投機的キャッシュメモリであるように構成することができる。非投機的キャッシュメモリは、データ要求が非投機的になるまで、受信したデータ要求118に対するキャッシュエントリのキャッシュ状態の更新を更新されることを延期するように構成される。例えば、図3は、非投機的キャッシュメモリ114として構成された図1のプロセッサベースのシステム100内のキャッシュメモリ114の一例を示す。図3に示すように、非投機的キャッシュメモリ114は、非投機的キャッシュメモリ114に記憶されたキャッシュデータへのアクセスのためのデータ要求118を処理し、キャッシュデータのデータ応答302を要求元に提供することを含む、非投機的キャッシュメモリ114の動作を制御するように構成された回路であるキャッシュコントローラ300と、受信したデータ要求118に対するキャッシュミスに応答してより上位レベルのメモリからキャッシュデータを取得するためのフィル(fill)要求304と、フィル要求304に応答してより上位レベルのメモリから受信したキャッシュデータを有するフィル応答306を含む。
【0026】
非投機的キャッシュメモリ114は、図1のメモリシステム104に記憶されたキャッシュデータ314(0)~314(M)をそれぞれのタグ312(0)~312(M)に関連づけられたメモリアドレスに記憶するように各々構成された複数のキャッシュエントリ310(0)~310(M)を含むメインデータアレイ308をさらに含む。非投機的キャッシュメモリ114は、それぞれのキャッシュエントリ310(0)~310(M)に対応する複数のタグ312(0)~312(M)を記憶するように構成されるタグアレイ311をさらに含む。メインデータアレイ308は、非投機的データ要求118に対する新しいデータがメインデータアレイ308に記憶される必要があるとき、どのキャッシュエントリ310(0)~310(M)を追い出すべきかを決定するためにキャッシュコントローラ300により使用される関連づけられたキャッシュエントリ310(0)~310(M)の置換状態を示すために、各それぞれのキャッシュエントリ310(0)~310(M)にキャッシュ置換状態315(0)~315(M)をさらに含んでもよい。メインデータアレイ308は、キャッシュデータ314(0)~314(M)が有効であるかを示すために、各それぞれのキャッシュエントリ310(0)~310(M)に有効インジケータ316(0)~316(M)をさらに含んでもよい。この例における非投機的キャッシュメモリ114は、メモリシステム104に記憶されたキャッシュデータ324(0)~324(B)をそれぞれのバッファタグ322(0)~322(B)に関連づけられたメモリアドレスに記憶するように各々構成された複数のバッファエントリ320(0)~320(B)を含む投機的バッファメモリ318をさらに含む。非投機的キャッシュメモリ114は、それぞれのバッファエントリ320(0)~320(B)に関連づけられたバッファタグ322(0)~322(B)を記憶するように構成されるタグアレイ323をさらに含む。例えば、投機的バッファメモリ318は、メインデータアレイ308内のキャッシュエントリ310(0)~310(M)が入ってくるデータを記憶するために利用可能になるまで、非投機的キャッシュメモリ114に記憶されるべき、発行されたフィル要求304に応答したフィル応答306における入ってくるデータのためのステージングエリアとして機能する、非投機的キャッシュメモリ114のためのフィルバッファでもよい。
【0027】
引き続き図3を参照し、投機的バッファメモリ318は、データ要求118が非投機的になるか、及びデータ要求118が非投機的になるときを追跡するために、非投機的キャッシュメモリ114に対するデータ要求118を発行したロード命令の命令IDを記憶するために、各それぞれのバッファエントリ320(0)~320(B)に命令識別子(ID)326(0)~326(B)をさらに含む。キャッシュコントローラ300は、データ要求118を発行させた命令がプロセッサ102において非投機的になった後、データ要求118に関連づけられたメインデータアレイ308内のキャッシュエントリ310(0)~310(M)におけるデータ要求118に関連づけられたキャッシュ状態を更新するように構成される。以下により詳細に論じるように、キャッシュコントローラ300は、受信したデータ要求118に応答して投機的バッファメモリ318内のバッファエントリ320(0)~320(B)を割り当てるように構成される。キャッシュコントローラ300は、投機的として受信したデータ要求118について、各バッファエントリ320(0)~320(B)において投機的状態でそれぞれの投機的インジケータ(NS)330(0)~330(B)を最初更新するように構成される。投機的バッファメモリ318内の各バッファエントリ320(0)~320(B)は、関連づけられたバッファエントリ320(0)~320(B)のデータがメインデータアレイ308内のキャッシュエントリ310(0)~310(M)に記憶されているかを示すインキャッシュ(in-cache)インジケータ332(0)~332(B)と、バッファエントリ320(0)~320(B)が有効であるかを示す有効インジケータ334(0)~334(B)をさらに含む。非投機的キャッシュメモリ114は、非投機的である命令の命令IDを含むプロセッサ102により発行されたコミットインジケータ328を受信するように構成される。キャッシュコントローラ300は、コミットインジケータ328内の受信した命令IDを使用して、投機的バッファメモリ318内の命令ID326(0)~326(B)を検索して、各バッファエントリ320(0)~320(B)内のそれぞれの非投機的インジケータ(NS)330(0)~330(B)を更新することができる。次いで、キャッシュコントローラ300は、データ要求118に対する非投機的インジケータ(NS)330(0)~330(B)が非投機的になることに応答して、メインデータアレイ308内のキャッシュエントリ310(0)~310(M)内のデータ要求118に関連づけられたデータに対するキャッシュ状態を更新することができる。
【0028】
例えば、図2のプロセッサ102内の制御フロー予測に基づいて投機的に処理されるロード命令202Dが、プロセッサ102に、図3の非投機的キャッシュメモリ114に対するデータのデータ要求118を発行させる場合、キャッシュコントローラ300は、データ要求118のターゲットアドレスに関連づけられたキャッシュエントリ310(0)~310(M)内のタグ312(0)~312(M)についてタグアレイ311を検索して、データ要求118に対するデータが存在するかを決定するように構成される。キャッシュコントローラ300はさらに、データ要求118のターゲットアドレスに関連づけられたバッファエントリ320(0)~320(B)に対応するタグアレイ323内のバッファタグ322(0)~322(B)について投機的バッファメモリ318を検索して、データ要求118に対するデータが投機的バッファメモリ318内に存在するかを決定するように構成される。データ要求118に対するデータがメインデータアレイ308又は投機的バッファメモリ318のいずれにも存在しない場合に、キャッシュミスが発生した場合、キャッシュコントローラ300は、より上位レベルのメモリからのデータのためのフィル要求304を発行し、要求したデータをフィル応答306として受信する。キャッシュコントローラ300は、データ要求118に対するフィル応答306において受信したデータをメインデータアレイ308内のキャッシュエントリ310(0)~310(M)に最初記憶しないことにより、データ要求118に対するキャッシュ状態の更新を延期するように構成され得る。代わりに、データ要求118に対して受信したデータは、メインデータアレイ308を投機的データで汚染しないように、投機的バッファメモリ318内の割り当てられたバッファエントリ320(0)~320(B)にキャッシュデータ324(0)~324(B)として最初記憶され得る。データ要求118が、投機的バッファメモリ318内のバッファエントリ320(0)~320(B)内の命令ID326(0)~326(B)に一致するコミットインジケータ328内の命令IDにより示されるとおり、非投機的になると、キャッシュコントローラ300は、データ要求118に対するデータをメインデータアレイ308内の割り当てられたキャッシュエントリ310(0)~310(M)に記憶させることができる。
【0029】
別の例において、データ要求118のターゲットアドレスが、非投機的キャッシュメモリ114内のタグアレイ311内の一致するタグ312(0)~312(M)に対応するとき、キャッシュヒットが結果として生じる。これは、データ要求118に対するデータが、一致したタグ312(0)~312(M)に対応するメインデータアレイ308内のキャッシュエントリ310(0)~310(M)に既に含まれていることを意味する。それぞれのキャッシュエントリ310(0)~310(M)に記憶されたデータ要求118に対するキャッシュデータ314(0)~314(M)は、データ応答302としてプロセッサ102内の要求元に返される。しかしながら、データ要求118に対するキャッシュデータ314(0)~314(M)を有するキャッシュエントリ310(0)~310(M)のキャッシュ置換状態315(0)~315(M)の更新は、データ要求118が非投機的になるまで延期され得る。これは、例えば、非投機的キャッシュメモリ114の置換ポリシーが、キャッシュ状態の更新を無効にする誤予測に起因してプロセッサ102内でフラッシュされ得る投機的データ要求118により変更されたメインデータアレイ308内のキャッシュエントリ310(0)~310(M)に対する置換キャッシュ状態に基づいて実行されないためである。
【0030】
別の例において、プロセッサ102から非投機的キャッシュメモリ114に発行されたデータ要求118がメインデータアレイ308内のキャッシュエントリ310(0)~310(M)に含まれないが、投機的バッファメモリ318内のバッファエントリ320(0)~320(B)に含まれる場合、データ要求118に対する対応するキャッシュデータ324(0)~324(B)が、データ応答302としてプロセッサ102内の要求元に返される。しかしながら、キャッシュコントローラ300は、メインデータアレイ308を投機的データで汚染しないように、データ要求118に対する投機的バッファメモリ318内のデータをメインデータアレイ308内のキャッシュエントリ310(0)~310(M)に記憶しないことにより、データ要求118に対するキャッシュ状態の更新を延期するように構成され得る。データ要求118が、投機的バッファメモリ318内のバッファエントリ320(0)~320(B)内の命令ID326(0)~326(B)に一致するコミットインジケータ328内の命令IDにより示されるとおり、非投機的になると、キャッシュコントローラ300は、データ要求118に対するデータをメインデータアレイ308内の割り当てられたキャッシュエントリ310(0)~310(M)に記憶させることができる。したがって、別の例として、新しい後続のデータ要求118に対してこのような割り当てられたキャッシュエントリ310(0)~310(M)上で後のキャッシュヒットが発生した場合、データ要求118に対するキャッシュデータ314(0)~314(M)を有するメインデータアレイ308内のキャッシュエントリ310(0)~310(M)のキャッシュ置換状態315(0)~315(M)の更新は、メインデータアレイ308に対するキャッシュヒットについて上記で論じたように、データ要求118が非投機的になるまで延期される。
【0031】
図4は、投機的である受信したデータ要求118に対するデータのキャッシュ状態を更新することを延期する、図3の非投機的キャッシュメモリ114内のキャッシュコントローラ300の例示的なプロセス400を示すフローチャートである。図4のプロセス400は、データ要求118が非投機的になることに応答して、データ要求118に関連づけられたデータに対するメインデータアレイ308内の延期されたキャッシュ状態を更新することをさらに含む。図4のプロセス400は、図3の非投機的キャッシュメモリ114並びに図1及び図2のプロセッサ102と関連して論じられる。この点に関して、非投機的キャッシュメモリ114は、ターゲットアドレスと、プロセッサ102により処理されるターゲットアドレスを含むロード命令を識別する命令識別(ID)とを含む、要求元からのデータ要求118を受信する(図4のブロック402)。キャッシュコントローラ300は、データ要求118のターゲットアドレスに関連づけられたタグ312(0)~312(M)についてタグアレイ311を検索する(図4のブロック404)。キャッシュコントローラ300は、さらに、データ要求118のターゲットアドレスに関連づけられたバッファタグ322(0)~322(B)について投機的バッファメモリ318を検索する(図4のブロック406)。キャッシュコントローラ300は、メインデータアレイ308内のキャッシュエントリ310(0)~310(M)内のタグ312(0)~312(M)がターゲットアドレスに関連づけられ、投機的バッファメモリ318内のタグアレイ323内のバッファタグ322(0)~322(B)がデータ要求118のターゲットアドレスに関連づけられていることに基づいて、データ要求118に対するデータ応答302をプロセッサ102内の要求元に送信する(図4のブロック408)。キャッシュコントローラ300は、非投機的である命令の命令IDを含むコミットインジケータ328を受信する(図4のブロック410)。コミットインジケータ328内の受信した命令IDが、データ要求118のロード命令が非投機的であると示すことに応答して、キャッシュコントローラ300は、データ要求118のターゲットアドレスに関連づけられたメインデータアレイ308内のキャッシュエントリ310(0)~310(M)のキャッシュ状態を更新する(図4のブロック412)。
【0032】
以下により詳細に論じるように、非投機的キャッシュメモリ114は、非投機的であることがまだわからないデータ要求118に関連づけられたデータがメインデータアレイ308又は投機的バッファメモリ318に含まれているかどうかを追跡するために、投機的アクセスレコード(speculative access record、SAR)回路336をさらに含んでもよい。上記で論じたように、受信したデータ要求118に対するデータは、既にメインデータアレイ308に含まれ、キャッシュヒットを結果としてもたらす可能性があり、投機的バッファメモリ318に既に含まれ、同様にキャッシュヒットを結果としてもたらす可能性があり、あるいはいずれにも含まれず、キャッシュミスを結果としてもたらす可能性がある。キャッシュミスの場合、データ要求118のデータを記憶するためのバッファエントリ320(0)~320(B)は、投機的バッファメモリ318に割り当てられる。したがって、データ要求118に対するデータは、メインデータアレイ308又は投機的バッファメモリ318のいずれかに記憶され得る。プロセッサ102によりコミットされた命令の命令IDを示すコミットインジケータ328を受信することに応答して、キャッシュコントローラ300は、命令IDに一致する命令の結果として発行されたデータ要求118に関連づけられたデータがメインデータアレイ308又は投機的バッファメモリ318に記憶されているかを決定し、それによりキャッシュ状態を更新することができる方法を必要とする。コミットインジケータ328内の命令IDにより識別されるコミットされた命令に関連づけられたデータがメインデータアレイ308に記憶されている場合、キャッシュコントローラ300は、コミットされたデータ要求118に対するデータを記憶するメインデータアレイ308内のキャッシュエントリ310(0)~310(M)のキャッシュ状態を更新する必要がある。コミットインジケータ328内の命令IDにより識別されるコミットされた命令に関連づけられたデータが投機的バッファメモリ318に記憶されている場合、キャッシュコントローラ300は、投機的バッファメモリ318内のバッファエントリ320(0)~320(B)の非投機的インジケータ(NS)330(0)~330(B)を更新する必要がある。キャッシュコントローラ300は、非投機的として命令IDに関連づけられたバッファエントリ320(0)~320(B)の非投機的インジケータ(NS)330(0)~330(B)を更新し、それにより、コミットされたデータ要求118に関連づけられたデータは、非投機的データとしてメインデータアレイ308に書き込まれる。
【0033】
これに関して、図3に示すように、非投機的キャッシュメモリ114は、それぞれの命令ID340(0)~340(S)に関連づけられたSARエントリ338(0)~338(S)を記憶するように構成されるSAR回路336を含む。データ要求118が受信されると、キャッシュコントローラ300は、データ要求118を発行した命令の命令IDに関連づけられたSAR回路336内に割り当てられたSARエントリ338(0)~338(S)を割り当てる。受信したデータ要求118の命令IDにより識別された命令に関連づけられたデータが、メインデータアレイ308内のキャッシュエントリ310(0)~310(M)に既に記憶されている場合、割り当てられたSARエントリ338(0)~338(S)に対するメインデータアレイ(MDA)インデックス342(0)~342(S)が、データ要求118に対するデータを含むメインデータアレイ308内のキャッシュエントリ310(0)~310(M)へのインデックスで更新される。受信したデータ要求118の命令IDにより識別された命令に関連づけられたデータがメインデータアレイ308内のキャッシュエントリ310(0)~310(M)に記憶されていないが、投機的バッファメモリ318内のバッファエントリ320(0)~320(B)に記憶されている場合、割り当てられたSARエントリ338(0)~338(S)に対する投機的バッファ(SB)インデックス344(0)~344(S)が、データ要求118に対するデータを含む投機的バッファメモリ318内のバッファエントリ320(0)~320(B)へのインデックスで更新される。受信したデータ要求118の命令IDにより識別された命令に関連づけられたデータが、メインデータアレイ308内のキャッシュエントリ310(0)~310(M)又は投機的バッファメモリ318内のバッファエントリ320(0)~320(B)に記憶されておらず、キャッシュミスを結果としてもたらす場合、割り当てられたSARエントリ338(0)~338(S)に対する投機的バッファ(SB)インデックス344(0)~344(S)が、フィル要求304に応答したより上位レベルのメモリからのフィル応答306から受信したデータ要求118に対するデータを含む投機的バッファメモリ318内のバッファエントリ320(0)~320(B)へのインデックスで更新される。上記で論じたように、SAR回路336内のデータ要求118に対するSARエントリ338(0)~338(S)を割り当てることにより、キャッシュコントローラ300は、メインデータアレイ308又は投機的バッファメモリ318内で非投機的になったデータ要求118に関連づけられたデータのキャッシュ状態を更新するかどうかを決定することができる。
【0034】
記録された投機的データ要求を追跡し、データ要求が非投機的になるまで非投機的キャッシュメモリ114におけるキャッシュ状態を更新することを延期できるようにするための、非投機的キャッシュメモリ114によるSAR回路336の使用の一例を示すために、図5A及び図5Bが提供される。図5Aは、図1のプロセッサ102が、非投機的キャッシュメモリ114により受信される命令IDとターゲットアドレスとを含むデータ要求118を発行し、投機的キャッシュメモリ114のメインデータアレイ308におけるキャッシュヒットを結果としてもたらすことを示す。この例において、データ要求118を発行させた処理命令を識別するデータ要求118の命令IDは、命令ID1である。非投機的キャッシュメモリ114内のキャッシュコントローラ300は、メインデータアレイ308及び投機的バッファメモリ318を検索して、データ要求118のターゲットアドレスに対応するデータについて検索するように構成される。この例において、データ要求118のターゲットアドレスに対応するデータはメインデータアレイ308に含まれ、キャッシュヒットが結果として生じる。メインデータアレイ308内のデータ要求118に対するデータは、データ応答302としてプロセッサ102内の要求元に返される。しかしながら、データ要求118を発行させた命令ID1により識別される命令は、前に論じたようにコミットインジケータ328が非投機的キャッシュメモリ114により受信され、そうでないと示すまで、投機的とみなされる。非投機的キャッシュメモリ114内のキャッシュコントローラ300は、図5Aの図示では、命令ID1に関連づけられたSAR回路336内のSARエントリ338(1)を割り当てて、データ要求118に対するメインデータアレイ308内のキャッシュ状態更新の延期を記録するように構成される。図5Aに示すように、命令ID1は、SARエントリ338(1)の命令ID340(1)に記憶される。データ要求118が、非投機的キャッシュメモリ114内のメインデータアレイ308に対するキャッシュヒット結果としてもたらしたため、データ要求118に対するデータを含むメインデータアレイ308内のキャッシュエントリ310(0)~310(M)の「12/4」のキャッシュセット/ウェイは、MDAインデックス342(1)に記憶される。この点に関し、キャッシュコントローラ300は、後に、命令ID1が受信したコミットインジケータ328に従ってコミットされたものとして示されるときに、MDAインデックス342(1)に基づいてメインデータアレイ308内のキャッシュエントリ310(0)~310(M)の位置を特定してそのキャッシュ状態を更新させることができる。SARエントリ338(1)のSBインデックス344(1)にはヌルが記憶され、なぜならば、データ要求118に対するデータはメインデータアレイ308にあり、投機的バッファメモリ318にはないためであることに留意する。この例において、SARエントリ338(0)は、SBインデックス344(0)に、投機的バッファメモリ318内のエントリ1に対応する、前のデータ要求118に対するデータの位置を記録していることに留意する。さらに、割り当てられたSARエントリ338(0)~338(S)は、キャッシュコントローラ300により、遅延されたキャッシュ置換ポリシー更新に関連する情報を用いて、任意で拡張できることに留意する。例えば、SARエントリ338(0)~338(S)は、最も長く使用されていない(least recently used、LRU)のキャッシュ置換ポリシーにおいて最も最近使用された(most recently used、MRU)エントリとしてマークされてもよい。
【0035】
図5Bは、図5Aのプロセッサ102が、命令ID1をコミットされているとして識別するコミットインジケータ328を受信する一例を示す。応答して、キャッシュコントローラ300は、SAR回路336を検索して、SARエントリ338が命令ID340(0)~340(S)に命令ID1を含み、命令ID1に関連づけられたデータ要求118のキャッシュ状態の更新が延期されたことを示すかを決定するように構成される。この例において、命令ID1は、図5Aに示され、前述したように、受信したデータ要求118が命令ID1の処理により引き起こされたことに応答してSARエントリ338(1)に含まれる。キャッシュコントローラ300は、命令ID1がSARエントリ338(1)に含まれると決定することに応答して、MDAインデックス342(1)によりインデキシングされた(indexed)メインデータアレイ308内のキャッシュエントリ310(0)~310(M)内のキャッシュ置換状態315(0)~315(M)を更新するように構成される。これは、命令IDに対してMDAインデックス342(1)によりインデキシングされたメインデータアレイ308内のキャッシュエントリ310(0)~310(M)が、受信したコミットインジケータ328に従ってもはや投機的でないためである。キャッシュコントローラ300は、命令ID1がコミットされたことを示すコミットインジケータ328を受信することに応答してSARエントリ338(1)を割り当て解除して、将来受信されるデータ要求118の遅延されたキャッシュ更新ステータスを記録するための空きを作ることができる。
【0036】
記録された投機的データ要求を追跡し、データ要求が非投機的になるまで非投機的キャッシュメモリ114におけるキャッシュ状態を更新することを延期できるようにするための、非投機的キャッシュメモリ114内のSAR回路336及び投機的バッファメモリ318の使用の一例を示すために、図6A及び図6Bが提供される。図6Aは、図1のプロセッサ102が、非投機的キャッシュメモリ114により受信される命令IDとターゲットアドレスとを含むデータ要求118を発行し、メインデータアレイ308及び投機的バッファメモリ318に対するキャッシュミスを結果としてもたらすことを示す。この例において、データ要求118を発行させた処理命令を識別するデータ要求118内の命令IDは、命令ID7である。非投機的キャッシュメモリ114内のキャッシュコントローラ300は、メインデータアレイ308及び投機的バッファメモリ318を検索して、データ要求118のターゲットアドレスに対応するデータについて検索するように構成される。この例において、データ要求118のターゲットアドレスに対応するデータは、非投機的キャッシュメモリ114のメインデータアレイ308又は投機的バッファメモリ318のいずれにも含まれない。データ要求118を発行させた命令ID1により識別される命令は、前に論じたようにコミットインジケータ328が非投機的キャッシュメモリ114により受信され、そうでないと示すまで、投機的とみなされる。
【0037】
非投機的キャッシュメモリ114内のキャッシュコントローラ300は、図6Aに示すように、投機的バッファメモリ318内の利用可能なバッファエントリ320(7)を割り当てるように構成され、これは、この例ではインデックス7である。これは、命令ID1に関連づけられ、より上位レベルのメモリから受信したフィル応答306に応答して投機的状態で投機的バッファメモリ318に記憶される、データ要求118に対するデータが、データ要求118が非投機的になるときにキャッシュコントローラ300により取り出され、メインデータアレイ308にインストールされることが可能なためである。バッファエントリ320(7)内のインキャッシュインジケータ332(7)は「0」に設定され、この例では、受信したデータ要求118に関連づけられたデータがメインデータアレイ308に含まれないことを意味する。バッファエントリ320(7)に対する非投機的インジケータ330(7)は「0」に設定され、この例では、投機的状態を示す。有効インジケータ334(7)は「1」に設定され、この例では、バッファエントリ320(7)が有効であることを示す。バッファエントリ320(0)~320(B)が投機的バッファメモリ318内で利用可能でない場合、キャッシュコントローラ300は、要求元に対して後の時間にデータ要求118をリトライするように指示するために、データ応答302としてプロセッサ102内の要求元にリトライインジケータを送信するように構成することができる。これは、投機的バッファメモリ318に記憶された記録された延期されたキャッシュ状態更新を有するデータ要求118が非投機的になるためのさらなる時間を提供し、これは次いで、図6Bに関して以下により詳細に論じるように、それらのそれぞれのバッファエントリ320(0)~320(B)が使用及び/又は再割り当てされることを可能にする。
【0038】
図6Aを参照し、非投機的キャッシュメモリ114内のキャッシュコントローラ300はさらに、命令ID1に関連づけられたSAR回路336内のSARエントリ338(0)を割り当てて、データ要求118に対するメインデータアレイ308内のキャッシュ状態更新の延期を記録するように構成される。図6Aに示すように、命令ID1は、SARエントリ338(0)の命令ID340(0)に記憶される。データ要求118はキャッシュミスを結果としてもたらしたため、MDAインデックス342(0)にヌルが含まれ、なぜならば、データ要求118に対するデータがメインデータアレイ308に記憶されていないためである。この例では、SBインデックス344(0)に「7」のSBインデックスが記憶され、命令ID1に関連づけられたデータ要求118の投機的状態を記録する投機的バッファメモリ318内で割り当てられたバッファエントリ320(7)を指し示す。この点に関し、キャッシュコントローラ300は、その後、命令ID1について、その関連づけられたデータ要求118が非投機的になるときSAR回路336内を検索し、バッファエントリ320(0)~320(B)を決定してそのそれぞれの投機的インジケータ330(7)を非投機的状態に更新することができる。SARエントリ338(1)のMDAインデックス342(0)にはヌルが記憶され、なぜならば、データ要求118に対するデータがメインデータアレイ308に含まれないためであることに留意する。キャッシュコントローラ300は、投機的インジケータ330(7)を非投機的状態として有する投機的バッファメモリ318内のバッファエントリ320(0)~320(B)に含まれる命令IDに関連づけられたデータ要求118に対するデータを書き込むように構成される。図6Bは、図6Aのプロセッサ102が、命令ID1をコミットされているとして識別するコミットインジケータ328を受信する一例を示す。応答して、キャッシュコントローラ300は、SAR回路336を検索して、SARエントリ338が命令ID340(0)~340(S)内に命令ID1を含み、命令ID1に関連づけられたデータ要求118のキャッシュ状態の更新が延期されたことを示すかを決定するように構成される。この例において、命令ID1は、図6Aに示され、前述したように、受信したデータ要求118が命令ID1の処理により引き起こされたことに応答してSARエントリ338(0)に含まれる。キャッシュコントローラ300は、命令ID1がSARエントリ338(0)に含まれると決定することに応答して、SBインデックス344(0)を参照し、命令ID1に関連づけられたバッファエントリ320(0)~320(B)を決定するように構成される。この例において、SBインデックス344(0)には「7」のインデックスが記憶され、投機的バッファメモリ318内のバッファエントリ320(7)を指し示す。非投機的インジケータ330(7)は非投機的状態に設定され、これは、この例では「1」である。このようにして、キャッシュコントローラ300は、メインデータアレイ308内にバッファエントリ320(7)に記録された命令ID1のデータ要求118に関連づけられたデータを書き込むことができる。キャッシュコントローラ300は、投機的バッファメモリ318内で新しいバッファエントリ320(0)~320(B)が割り当てられる必要があり、空のバッファエントリ320(0)~320(B)がない間、メインデータアレイ308内にバッファエントリ320(7)に記録された命令ID1のデータ要求118に関連づけられたデータを書き込むのを待ってもよい。命令ID1のデータ要求118に関連づけられたデータは、バッファエントリ320(7)内に残ることができ、なぜならば、同じデータに対する、そのターゲットアドレスに基づく後続のデータ要求118は、前述したように、投機的バッファメモリ318からのキャッシュヒットとして満たすことができるためである。キャッシュコントローラ300が、メインデータアレイ308内にバッファエントリ320(7)に記録された命令ID1のデータ要求118に関連づけられたデータを書き込むとき、インキャッシュインジケータ332(7)は、「1」インジケータにより、データがメインデータアレイ308に記憶されていることを示すように設定される。したがって、キャッシュコントローラ300が、新しいデータ要求118に対して投機的バッファメモリ318内の新しいバッファエントリ320(0)~320(B)を割り当てる必要があるとき、キャッシュコントローラ300は、この例では、そのインキャッシュインジケータを「1」に設定されたバッファエントリ320(0)~320(B)について検索することができる。これは、バッファエントリ320(0)~320(B)のデータが非投機的データとしてメインデータアレイ308に書き込まれ、したがって、関連づけられたバッファエントリ320(0)~320(B)は割り当て解除及び/又は再割り当てされることが可能であることを意味する。
【0039】
図3のSAR回路336及び投機的バッファメモリ318、並びに図6Bの例における追跡されるデータ要求118の投機的状態の非投機的状態への更新に関して、非投機的になった命令IDは、最終的に、命令IDに関連づけられたデータ要求118に対するデータをメインデータアレイ308に書き込むようにキャッシュコントローラ300をトリガする。上記論じたように、非投機的になった命令IDに対する投機的バッファメモリ318内のバッファエントリ320(0)~320(B)及び関連するそのマッピングされたSARエントリ338(0)~338(S)は、それを別のデータ要求118に対して利用可能にするために、投機的バッファメモリ318内で割り当て解除される。しかしながら、投機的バッファメモリ318内の同じバッファエントリ320(0)~320(M)にマッピングされたSAR回路336内のSARエントリ338(0)~338(S)に、他の命令IDが割り当てられてもよい。例えば、複数のデータ要求118が、同じターゲットアドレスを有し得る。複数のSARエントリ338(0)~338(S)にマッピングされた投機的バッファメモリ318内のバッファエントリ320(0)~320(M)が割り当て解除される場合、投機的バッファメモリ318内の同じバッファエントリ320(0)~320(M)にマッピングされた残りのSARエントリ338(0)~338(S)は、それが割り当て解除されたバッファエントリ320(0)~320(M)に対して指し示されていることを認識しない。したがって、後に非投機的になるそのようなSARエントリ338(0)~338(S)に関連づけられた命令IDは、投機的バッファメモリ318へのそのマッピングを失い、その関連づけられたキャッシュ状態を更新することが不可能になる。以下に論じるように、この問題に対処する1つの方法は、SAR回路336と投機的バッファメモリ318との間のマッピングの別のレベルの間接参照を提供することである。
【0040】
非投機的キャッシュメモリ114により受信されたデータ要求118の投機的状態を追跡するための上記で論じたSAR回路336は、仮想フィルバッファ(virtual fill buffer、VFB)回路と組み合わせて使用することもできる。後に論じるように、仮想フィルバッファ(VFB)回路は、SARエントリ338(0)~338(S)を投機的バッファメモリ318内のバッファエントリ320(0)~320(B)にマッピングするために使用することができる。VFB回路は、投機的バッファメモリ318内のバッファエントリ320(0)~320(B)に関連づけられたデータが非投機的になり、メインデータアレイ308に書き込まれているかを追跡するために使用することができ、それにより、他の命令IDは、VFB回路にマッピングされたままにすることができる。VFB回路は、SAR回路336からVFB回路にマッピングされたままである命令IDに関連づけられた投機的バッファメモリ318内のバッファエントリ320(0)~320(B)がメインデータアレイ308に書き込まれたかを追跡することができ、それにより、そのような他のマッピングされた命令IDに対するキャッシュ状態更新は、メインデータアレイ308へ直接更新することができ、なぜならば、投機的バッファメモリ318内のそのマッピングされた関連づけられたバッファエントリ320(0)~320(B)は、割り当て解除されていることになるためである。
【0041】
図3の非投機的キャッシュメモリ114を参照し、また図6A及び図6Bに関して、キャッシュエントリ310(0)~310(M)がキャッシュコントローラ300によりメインデータアレイ308から追い出されるとき、キャッシュコントローラ300は投機的バッファメモリ318内のバッファエントリ320(0)~320(B)を更新することもできることに留意する。例えば、メインデータアレイ308内の特定のキャッシュエントリ310(0)~310(M)(例えば、そのセット/ウェイによる)が、キャッシュコントローラ300により追い出されるビクティムエントリとして識別される場合、キャッシュコントローラ300は、バッファエントリ320(0)~320(B)を検索して、追い出されるキャッシュエントリ310(0)~310(M)に対応する投機的バッファメモリ318内の何らかのバッファエントリ320(0)~320(B)があるかを決定するように構成されてもよい。そうである場合、そのような対応するバッファエントリ320(0)~320(B)は、そのそれぞれの有効インジケータ334(0)~334(B)を無効状態に(例えば、「0」状態に)設定することにより無効にすることができる。このようにして、追い出されるキャッシュエントリ310(0)~310(M)に対応するターゲットアドレスを有する新しいデータ要求118が非投機的キャッシュメモリ114において受信され、これがメインデータアレイ308に対するキャッシュミスを結果としてもたらす場合、キャッシュヒットが投機的バッファメモリ318内で誤って発生することはない。この点に関し、図7A図7Dは、図1のプロセッサ102が、キャッシュメモリシステム106内の非投機的キャッシュメモリ114により受信されるデータ要求118を発行する一例を示す。この例において、非投機的キャッシュメモリは、投機的データ要求118を追跡し、それらが非投機的になるとメインデータアレイ308内のそのような要求のキャッシュ状態を更新するために、投機的バッファメモリ318にマッピングされる仮想フィルバッファ(VFB)回路708内のエントリにマッピングできる代替的なSAR回路700を含む。この例において、図7Aに示すように、3つのデータ要求118が非投機的キャッシュメモリ114に対して行われ、3つの命令IDにより命令ID1、4、及び8として識別される。非投機的キャッシュメモリ114内のキャッシュコントローラ300は、メインデータアレイ308及び投機的バッファメモリ318を検索して、これら3つのデータ要求118のターゲットアドレスに対応するデータについて検索するように構成される。この例において、命令ID1のデータ要求118のターゲットアドレスに対応するデータは、非投機的キャッシュメモリ114のメインデータアレイ308又は投機的バッファメモリ318のいずれにも含まれず、キャッシュミスが結果として生じる。キャッシュコントローラ300は、図3のSAR回路336と同様に、図7Aに示すSAR回路700のSARエントリ702(0)を割り当てる。SARエントリ702(0)の命令ID704(0)に命令ID1が記憶される。キャッシュコントローラ300はさらに、図7Aに示すVFB回路708内のVFBエントリ710(7)を割り当てる。割り当てられたVFBエントリ710(7)に対応するインデックス「7」は、SAR回路700内のVFBインデックス706(0)に記憶され、命令ID1に対するSARエントリ702(0)をVFB回路708内のVFBエントリ710(7)にマッピングする。SARエントリ702(7)内のインキャッシュインジケータ714(7)は、メインデータアレイ308内にないものとして、命令ID1から開始されたデータ要求118に関連づけられたデータに設定され、なぜならば、命令ID1に関するデータ要求118が、キャッシュミスを結果としてもたらしたためである。したがって、VFBエントリ710(7)内のMDAインデックス716(7)は、メインデータアレイ308内の位置を指し示さないように「0」又はヌルに設定される。しかしながら、VFB回路708内の投機的バッファ(SB)インデックス718(7)は、インデックス「4」に設定され、VFBエントリ710(7)を、フィル応答306から投機的バッファメモリ318内の割り当てられたバッファエントリ320(4)に受信されたデータを含む投機的バッファメモリ318内のバッファエントリ320(4)にマッピングする。
【0042】
非投機的キャッシュメモリ114内のキャッシュコントローラ300はさらに、メインデータアレイ308及び投機的バッファメモリ318を検索して、命令ID4及び8のデータ要求118のターゲットアドレスに対応するデータについて検索するように構成される。この例において、これらの検索の双方が投機的バッファメモリ318に対するキャッシュヒットを結果としてもたらし、なぜならば、これらの命令は、命令ID1のデータ要求118に対するターゲットアドレスと同じターゲットアドレスに対するものであり、キャッシュコントローラ300は、このデータをフィル応答306から投機的バッファメモリ318内のバッファエントリ320(4)にフィルしたためである。したがって、命令ID704(0)及び704(2)における命令ID1及び7を有するSARエントリ702(0)及び702(2)も双方、それぞれのVFBインデックス706(0)、706(2)においてVFBインデックス「7」にマッピングされる。したがって、VFB回路708を提供することにより、この例ではSARエントリ702(1)~702(2)である複数のSARエントリを同じVFBインデックスにマッピングすることができ、この同じVFBインデックスを投機的バッファメモリ318内のバッファエントリ320(0)~320(B)にマッピングして、別のレベルのマッピング間接参照を提供することができる。
【0043】
さらに、任意で、SAR回路700内の現在のSARエントリ702(0)~702(S)が、新しいデータ要求118に応答して割り当てられるとき、VFB回路708内の同じVFBエントリ710を指し示すより古いSARエントリ702(0)~702(S)がある場合、現在のSARエントリ702(0)~702(S)は、より古いSARエントリ702(0)~702(S)へ畳まれ(collapsed)得ることに留意する。現在のSARエントリ702(0)~702(S)は、より古いSARエントリ702(0)~702(S)を置換することができ、あるいは、新しいSARエントリ702(0)~702(S)が割り当てられないように無視することができる。例えば、図7BのSAR回路700において、SARエントリ702(0)及び702(1)が双方とも命令ID1に関連する場合、双方のSARエントリ702(0)、702(1)を1つのSARエントリ702として提供することができ、なぜならば、双方とも同じVFBエントリ710(7)を指し示すためである。図7Bに示すように、この例における非投機的キャッシュメモリ114は、命令ID1がプロセッサ102内でコミットされたことを示すための命令ID1に対するコミットインジケータ328を受信し、したがって、投機的バッファメモリ318内のバッファエントリ320(4)内の命令ID1のデータ要求118に関連づけられたデータは、今や非投機的である。これに関して、キャッシュコントローラ300は、バッファエントリ320(4)に対するNSインジケータ330(4)を「1」に変更して、このエントリが非投機的であることを示す。さらに図7Cに示すように、キャッシュコントローラ300はさらに、バッファエントリ320(4)内のインキャッシュインジケータ332(4)を「1」に変更して、命令ID1のデータ要求118に関連づけられたデータが、該データがデータ応答302においてより上位レベルのメモリから受信されたことに応答してメインデータアレイ308に含まれることを示す。キャッシュコントローラ300は、バッファエントリ320(4)が回収されるとき、図7Cに示すように、非投機的状態を示すそのNSインジケータ330(4)に基づいて、メインデータアレイ308内にバッファエントリ320(4)に記録された命令ID1のデータ要求118に関連づけられたデータを書き込むことができる。図7Dに示すように、VFBエントリ710(7)にマッピングされたSARエントリ702(0)、702(1)における命令ID4及び8は、命令ID4及び8が非投機的になるときに更新すべきキャッシュエントリ310(0)~310(M)の位置を知るために、インキャッシュインジケータ714(7)及びMDAインデックス716(7)を使用することができる。したがって、命令ID4及び8が非投機的になる前に、バッファエントリ320(4)がキャッシュコントローラ300により割り当て解除される場合、VFB回路708は、インキャッシュインジケータ714(7)及びMDAインデックス716(7)を使用してメインデータアレイ308内で更新される命令ID4及び8に関連づけられたデータ要求118のデータに対するキャッシュ状態に必要な情報を保持する。
【0044】
上記の記載例のいずれについても、非投機的キャッシュメモリ114内の投機的バッファメモリ318内のNSインジケータ330(0)~330(B)はさらに、投機的バッファメモリ318からバッファエントリ320(0)~320(B)が追い出される順序に影響するように、キャッシュコントローラ300により使用できることに留意する。バッファエントリ320(0)~320(B)を追い出すと、NSインジケータ330(0)~330(B)がバッファエントリ320(0)~320(B)に対して非投機的状態に設定されている場合、バッファエントリ320(0)~320(B)の対応するデータはメインメモリ108に書き込まれ、そうでない場合、バッファエントリ320(0)~320(B)が破棄されることを思い出されたい。ベースのフィルバッファ置換ポリシー(例えば、FIFO、LRU、PLRU、MRU、ランダム、SRRIP、DRRIPなど)を仮定すると、任意の強化された置換ポリシーを利用することができる。全てのバッファエントリ320(0)~320(B)に対するNSインジケータ330(0)~330(B)が非投機的状態でマークされている場合、バッファエントリ320(0)~320(B)を置換するために、ベース置換ポリシーをキャッシュコントローラ300により利用することができる。1つのバッファエントリ320(0)~320(B)に対するNSインジケータ330(0)~330(B)が非投機的状態でマークされている場合、そのようなバッファエントリ320(0)~320(B)を最初に置換することができる。複数のバッファエントリ320(0)~320(B)に対するNSインジケータ330(0)~330(B)が非投機的状態でマークされている場合、非投機的状態でマークされたNSインジケータ330(0)~330(B)を有する全てのバッファエントリ320(0)~320(B)にベース置換ポリシーを適用することができる。全てのバッファエントリ320(0)~320(B)が投機的状態でマークされたNSインジケータ330(0)~330(B)を有する場合、例として、以下の置換ポリシーのいずれかを利用することができ、すなわち、ベース置換ポリシー、最も最近使用された(MRU)バッファエントリ320(0)~320(B)を選択する、最も長く使用されていない(LRU)バッファエントリ320(0)~320(B)を選択する、最後に挿入されたバッファエントリ320(0)~320(B)を選択する、最初に挿入されたバッファエントリ320(0)~320(B)を選択する、及びランダムバッファエントリ320(0)~320(B)を選択する、である。上記の置換ポリシーの組み合わせを、キャッシュライン要求元に関する付加的なメタ情報に対して選択することができる(例えば、フラッシュされる可能性がある場合にMRU、又は、ストリームである場合にLRU)。
【0045】
さらに、非投機的キャッシュメモリ114が複数のCPUコア110(1)~110(N)からデータ要求118を受信できる場合、SAR回路336、700は、データ要求118に対する全てのデータアクセスのレコードと、要求元としてのCPUコア110(0)~110(N)の識別を維持するように実施することができる。VFB回路708は、複数のCPUコア110(1)~110(N)の間で共有することができる。データ要求118に応答して、非投機的キャッシュメモリ114は、CPUコア110(1)~110(N)によるターゲットコミットメッセージが非投機的キャッシュメモリ114(1)~114(X)に送られることを可能にするために、コミット識別を送り返すように構成することができる。これは、図1のCPUコア110(0)~110(N)とキャッシュメモリ114(1)~114(X)との間の相互接続バス117上のトラフィックを低下させることができる。さらに、非投機的データ要求118ごとに1つのコミットメッセージを送信する代わりに、プロセッサ102は、命令コミット情報のバンドルメッセージを送信して相互接続バス117のトラフィックを低下させることもできる。命令コミット情報のバンドルは、データ要求118の各命令IDがバンドルメッセージ内で指定される場合、明示的とすることができ、あるいは、命令IDが、非投機的命令IDより小さい全ての命令IDも非投機的であることを示す場合、暗黙的とすることができる。
【0046】
図8は、命令処理回路804を含むプロセッサ802(例えば、マイクロプロセッサ)を含む一例示的なプロセッサベースのシステム800のブロック図である。プロセッサベースのシステム800は、一例として、図1のプロセッサベースのシステム100とすることができる。命令処理回路804は、一例として、図2の命令処理回路200とすることができる。プロセッサベースのシステム800は、プリント回路板(PCB)、サーバ、パーソナルコンピュータ、デスクトップコンピュータ、ラップトップコンピュータ、パーソナルデジタルアシスタント(PDA)、計算パッド、モバイルデバイス、又は任意の他のデバイスなどの電子ボードカードに含まれる1つ又は複数の回路でもよく、例えば、サーバ又はユーザのコンピュータを表すことができる。この例において、プロセッサベースのシステム800は、プロセッサ802を含む。プロセッサ802は、マイクロプロセッサ、中央処理装置等などの1つ以上の汎用処理回路を表す。より詳細には、プロセッサ802は、EDGE命令セットマイクロプロセッサ、又は、プロデューサ(producer)命令の実行から結果として生じる生成値を通信するための明示的なコンシューマ命名をサポートする命令セットを実現する他のプロセッサでもよい。プロセッサ802は、本明細書で論じられる動作及びステップを実行するための命令の処理論理を実行するように構成される。この例において、プロセッサ802は、命令処理回路804によりアクセス可能な命令の一時的な、高速なアクセスのメモリストレージのための命令キャッシュ808を含む。メモリから、例えば、システムバス812を通じてメインメモリ810からフェッチ又はプリフェッチされた命令は、命令キャッシュ808に記憶される。命令処理回路804は、命令キャッシュ808内にフェッチされた命令を処理し、命令を実行のために処理するように構成される。
【0047】
プロセッサ802は、ローカルキャッシュメモリ814を含み、キャッシュされたデータをメインメモリ810に記憶することができる。ローカルキャッシュメモリ814とメインメモリ810との間のプロセッサ802の外部のキャッシュメモリ816も、キャッシュメモリシステム818を提供するために設けることができる。キャッシュメモリシステム818内のキャッシュメモリ814、816は、図1図3図5A~5B、図6A~6B、及び図7A~7Dのキャッシュメモリ114(1)~114(X)のうち任意のものを含み、データ要求が非投機的になるまで、プロセッサ802からのデータ要求を受信することに応答してキャッシュ状態を更新することを延期するように構成することができる。
【0048】
プロセッサ802及びメインメモリ810は、システムバス812に結合され、プロセッサベースのシステム800に含まれる周辺デバイスを相互結合することができる。良く知られるように、プロセッサ800は、システムバス812を通じてアドレス、制御、及びデータ情報を交換することにより、これらの他のデバイスと通信する。例えば、プロセッサ802は、スレーブデバイスの一例として、メインメモリ810内のメモリコントローラ819に、バストランザクション要求を通信することができる。図8には示されていないが、複数のシステムバス812を設けることができ、各システムバスは異なるファブリックを構成する。この例において、メモリコントローラ819は、メインメモリ810内のメモリアレイ820にメモリアクセス要求を提供するように構成される。メモリアレイ820は、データを記憶するための記憶ビットセルのアレイを含む。メインメモリ810は、非限定的な例として、読取専用メモリ(ROM)、フラッシュメモリ、同期DRAM(SDRAM)などのダイナミックランダムアクセスメモリ(DRAM)等、及びスタティックメモリ(例えば、フラッシュメモリ、スタティックランダムアクセスメモリ(SRAM)等)でもよい。
【0049】
システムバス812に、他のデバイスを接続することができる。図8に示すように、これらのデバイスには、例として、メインメモリ810、1つ以上の入力デバイス822、1つ以上の出力デバイス824、モデム826、及び1つ以上のディスプレイコントローラ828を含むことができる。入力デバイス822は、これらに限られないが、入力キー、スイッチ、音声プロセッサなどを含む任意のタイプの入力デバイスを含むことができる。出力デバイス824は、これらに限られないが、オーディオ、ビデオ、他の視覚インジケータなどを含む任意のタイプの出力デバイスを含むことができる。モデム826は、ネットワーク830との間でのデータの交換を可能にするように構成された任意のデバイスとすることができる。ネットワーク830は、これらに限られないが、有線又は無線ネットワーク、プライベート又はパブリックネットワーク、ローカルエリアネットワーク(LAN)、無線ローカルエリアネットワーク(WLAN)、ワイドエリアネットワーク(WAN)、BLUETOOTH(登録商標)TMネットワーク、及びインターネットを含む任意のタイプのネットワークとすることができる。モデム826は、所望される任意のタイプの通信プロトコルをサポートするように構成することができる。さらに、プロセッサ802は、1つ以上のディスプレイ832に送信される情報を制御するために、システムバス812を通じてディスプレイコントローラ828にアクセスするように構成されてもよい。ディスプレイ832は、これらに限られないが、陰極線管(CRT)、液晶ディスプレイ(LCD)、プラズマディスプレイ等を含む任意のタイプのディスプレイを含むことができる。
【0050】
図8のプロセッサベースのシステム800は、命令に従って所望される任意のアプリケーションのためにプロセッサ802により実行される命令834のセットを含むことができる。命令834は、非一時的コンピュータ読取可能媒体836の例として、メインメモリ810、プロセッサ802、及び/又は命令キャッシュ808に記憶されてもよい。命令834は、さらに、その実行の間、メインメモリ810内及び/又はプロセッサ802内に、完全に又は少なくとも部分的に存在してもよい。命令834は、さらに、ネットワーク830がコンピュータ読取可能媒体836を含むように、モデム826を介してネットワーク830を通じて送信又は受信されてもよい。
【0051】
コンピュータ読取可能媒体836は、一例示的な実施形態において単一の媒体であるように示されるが、用語「コンピュータ読取可能媒体」は、1つ以上の命令セットを記憶する単一の媒体又は複数の媒体(例えば、集中型又は分散型データベース、及び/又は関連するキャッシュ及びサーバ)を含むように解されるべきである。用語「コンピュータ読取可能媒体」は、さらに、処理デバイスによる実行のための命令のセットを記憶、符号化、又は担持することができ、かつ処理デバイスに本明細書に開示される実施形態の方法論のいずれか1つ以上の方法を実行させる、任意の媒体を含むように解されるものとする。用語「コンピュータ読取可能媒体」は、したがって、これらに限られないが、ソリッドステートメモリ、光学媒体、及び磁気媒体を含むように解されるものとする。
【0052】
本明細書に開示される実施形態は、様々なステップを含む。本明細書に開示される実施形態のステップは、ハードウェアコンポーネントにより形成されてもよく、あるいはマシン実行可能命令で具現化されてもよく、該命令は、命令によりプログラムされた汎用又は専用プロセッサにステップを実行させることができる。あるいは、ステップは、ハードウェアとソフトウェアの組み合わせにより実行されてもよい。
【0053】
本明細書に開示される実施形態は、コンピュータシステム(又は、他の電子デバイス)を本明細書に開示される実施形態に従うプロセスを実行するようにプログラムするために使用され得る命令を記憶したマシン読取可能媒体(又は、コンピュータ読取可能媒体)を含み得る、コンピュータプログラム製品又はソフトウェアとして提供されてもよい。マシン読取可能媒体は、マシン(例えば、コンピュータ)により読取可能な形式の情報を記憶又は送信するための任意のメカニズムを含む。例えば、マシン読取可能媒体は、マシン読取可能記憶媒体(例えば、ROM、ランダムアクセスメモリ(RAM)、磁気ディスク記憶媒体、光学記憶媒体、フラッシュメモリデバイス等)などを含む。
【0054】
別段具体的に示されない限り、及び前の議論から明らかなように、本説明を通して、「処理」、「計算」、「決定」、「表示」などのような用語を使用する議論は、コンピュータシステムのレジスタ内の物理的(電子的)数量として表されるデータ及びメモリを、コンピュータシステムのメモリ若しくはレジスタ又は他のこのような情報記憶、送信、又は表示デバイス内の物理的数量として同様に表される他のデータに操作及び変換する、コンピュータシステム又は同様の電子コンピューティングデバイスの動作及びプロセスを指すことが理解される。
【0055】
本明細書に提示されるアルゴリズム及び表示は、本質的に、いずれかの特定のコンピュータ又は他の装置に関連するものではない。様々なシステムが、本明細書の教示に従ったプログラムと共に使用されてもよく、あるいは、必要な方法ステップを実行するために、より特化された装置を構築するのが便利であることが分かり得る。様々なこれらのシステムに必要な構造は、上記の説明から明らかであろう。さらに、本明細書に記載される実施形態は、いずれかの特定のプログラミング言語を参照して記載されているものではない。本明細書に記載される実施形態の教示を実現するために、様々なプログラミング言語が使用され得ることが理解されるであろう。
【0056】
当業者は、さらに、本明細書に開示される実施形態に関連して説明される様々な例示的な論理ブロック、モジュール、回路、及びアルゴリズムが、電子ハードウェア、メモリ又は他のコンピュータ読取可能媒体に記憶され、かつプロセッサ又は他の処理デバイスにより実行される命令、又は双方の組み合わせとして実現され得ることを理解するであろう。本明細書に記載される分散アンテナシステムのコンポーネントは、例として、任意の回路、ハードウェアコンポーネント、集積回路(IC)、又はICチップにおいて利用されてもよい。本明細書に開示されるメモリは、任意のタイプ及びサイズのメモリであってよく、所望される任意のタイプの情報を記憶するように構成されてもよい。この交換可能性を明確に説明するために、様々な例示的なコンポーネント、ブロック、モジュール、回路、及びステップが、それらの機能性の観点で一般的に上述されている。このような機能性がどのように実現されるかは、特定の適用、設計上の選択、及び/又はシステム全体に課される設計上の制約に依存する。当業者は、各特定の適用に対して様々な方法で記載の機能性を実施し得るが、このような実施判断は、本実施形態の範囲からの逸脱をもたらすものと解釈されるべきではない。
【0057】
本明細書に開示される実施形態に関連して説明される様々な例示的な論理ブロック、モジュール、及び回路は、プロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、若しくは他のプログラマブル論理デバイス、個別のゲート若しくはトランジスタ論理、個別のハードウェアコンポーネント、又は本明細書に記載される機能を実行するように設計されたこれらの任意の組み合わせを用いて実施又は実行されてもよい。さらに、コントローラはプロセッサでもよい。プロセッサは、マイクロプロセッサでもよいが、代替的に、プロセッサは、任意の従来のプロセッサ、コントローラ、マイクロコントローラ、又はステートマシンでもよい。プロセッサは、さらに、コンピューティングデバイスの組み合わせ(例えば、DSPとマイクロプロセッサの組み合わせ、複数のマイクロプロセッサ、DSPコアと関連した1つ以上のマイクロプロセッサ、又は任意の他のそのような構成)として実現されてもよい。
【0058】
本明細書に開示される実施形態は、ハードウェアにおいて、及びハードウェアに記憶される命令において具現化されてもよく、例えば、RAM、フラッシュメモリ、ROM、電気的プログラマブルROM(EPROM)、電気的消去可能プログラマブルROM(EEPROM)、レジスタ、ハードディスク、リムーバブルディスク、CD-ROM、又は当該分野で知られr任意の他の形態のコンピュータ読取可能媒体に存在してもよい。一例示的な記憶媒体はプロセッサに結合され、それにより、プロセッサは、記憶媒体から情報を読み出し、記憶媒体に情報を書き込むことができる。代替的に、記憶媒体はプロセッサと一体でもよい。プロセッサと記憶媒体はASIC内に存在してもよい。ASICは、遠隔局内に存在してもよい。代替的に、プロセッサ及び記憶媒体は、遠隔局、基地局、又はサーバ内の別個のコンポーネントとして存在してもよい。
【0059】
さらに、本明細書の例示的な実施形態のいずれかに記載される動作ステップは、例及び議論を提供するために記載されていることに留意されたい。記載される動作は、例示されたシーケンス以外の多くの異なるシーケンスで実行されてもよい。さらに、単一の動作ステップに記載される動作は、実際には、いくつかの異なるステップで実行されてもよい。さらに、例示的な実施形態で論じられる1つ以上の動作ステップは、組み合わせられてもよい。さらに、当業者は、情報及び信号が様々な技術及び手法のうち任意のものを使用して表され得ることを理解するであろう。例えば、上記説明を通して参照され得るデータ、命令、コマンド、情報、信号、ビット、シンボル、及びチップは、電圧、電流、電磁波、磁場、若しくは粒子、光学場若しくは粒子、又はこれらの任意の組み合わせにより表されてもい。
【0060】
別段明示的に示されない限り、本明細書に記載されるいずれの方法も、そのステップが特定の順序で実行されることを要求するものと解釈されることは決して意図されない。したがって、方法クレームが、そのステップにより従うべき命令を実際に記載していない場合、又は、ステップが特定の順序に限定されるべきであることが、特許請求の範囲又は説明に別段具体的に示されていない場合、特定の順序が推論されることは決して意図されない。
【0061】
当業者には、本発明の主旨又は範囲から逸脱することなく様々な修正及び変形を行えることが明らかであろう。本発明の主旨及び内容を組み込んだ開示の実施形態の修正、組み合わせ、サブ組み合わせ、及び変形が当業者に生じ得るため、本発明は、添付の特許請求の範囲及びそれらの同等物の範囲内のあらゆるものを含むように解釈されるべきである。
図1
図2
図3
図4
図5A
図5B
図6A
図6B
図7A
図7B
図7C
図7D
図8
【国際調査報告】