ロードストア キューの基本的な動作を理解しています。
- ロードがアドレスを計算するとき、同じアドレスへの以前のストアがないかストア キューをチェックし、存在する場合は最新のストアからデータを取得し、そうでない場合は書き込みバッファまたはデータ キャッシュからデータを取得します。
- ストアがアドレスを計算するとき、ロード キューでロード違反がないかチェックします。
私の疑問は、いつ何が起こるかです
最初のケースでは、ストア キュー内のいくつかの未解決のストア アドレスが原因でデータ キャッシュのロード アクセスが行われ、アクセスが L1 データ キャッシュでミスされ、データがキャッシュから取得される前に、ストア アドレスが解決されます。現在、ストアはロード キューをチェックして違反をチェックしています。従属ロードは以前にデータ キャッシュにアクセスしましたが、長い待ち時間のミスのため、まだキャッシュから値を受け取っていません。ストアはロード違反をポストしますか?それともストアからロードへの転送を行い、キャッシュからデータをキャンセルしますか?
l1 データ キャッシュでロード アクセス ミスが発生すると、実行ステージをブロックしないように、ロードが MSHR に配置されます。ミスが解消されると、そのロードの MSHR エントリには宛先レジスタと物理アドレスに関する情報が含まれます。したがって、値は物理レジスターで更新できますが、MSHR は値が使用可能であることをロード・キューとどのように通信するのでしょうか? これはパイプライン段階でいつ発生しますか? MSHR ストアの物理アドレスとロードストア キュー ストアの仮想アドレスをどこかで読んだことがあるからです。では、MSHR はどのように LSQ と通信するのでしょうか?
これらの疑問に関するリソースは見つかりませんでした。