問題タブ [micro-architecture]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
0 に答える
244 参照

x86 - 命令の実行過程とgem5での実現?

私はgem5でプログラムの実行プロセスを学んでいます。そして何冊か本を読んでください。しかし、プログラム実行の部分についてはまだ混乱しています。以下の私の理解は正しいですか?

  1. まず、コンピュータの命令が ICache に配置され、コンピュータの CPU が命令のフェッチを制御し、フェッチされた命令を命令キューに入れます。次に、命令キューから命令を取得し、命令をマイクロ操作にデコードします. これらのマイクロ操作は、リオーダー バッファに送信されます。リオーダ バッファ内のマイクロ操作がロード/ストアの場合、ロード/ストア キューに送信されます。足し算や引き算などの演算であれば、直接実行ユニットに送られます。このプロセスでは、各実行ユニットに、レジスターの名前変更用に予約されたステーションがあります。マイクロ操作が完了すると、リオーダー バッファに戻ります。マイクロ操作がリオーダ バッファの先頭に到達すると、CPU 外のキャッシュまたはメモリに書き戻すことができます。
  2. ロード キューは、キャッシュからデータを取得します。キャッシュは通常、仮想アドレス インデックスと物理アドレス タグです。ロード操作は、キャッシュから並行してフェッチし、仮想アドレス変換を実行します。キャッシュが見つからない場合、ロード操作は MSHR に送信されます。MSHR は、フェッチしたデータをメモリに送信します。データがメモリ内にある場合、データは最初にキャッシュにフェッチされ、次にフェッチされたデータが MSHR に返され、次にロード キューに返されます。データがメモリ内にない場合、オペレーティング システムはページ フォールトを発行し、データはハード ディスクからメモリにフェッチされ、キャッシュからフェッチされ、MSHR に返されてから、ロード キュー。

質問:

  1. マイクロ操作とは、デコードされたときの mov や add などの操作を指しますか?
  2. 命令発行は、リオーダ バッファに送信された、またはリオーダ バッファから実行ユニットに送信されたマイクロ操作に関するものですか? 命令がデコードされた後、直接リオーダ バッファに送られますか?
  3. ディスパッチと発行は同じプロセスを指しますか?
  4. また、浮動小数点数キューやその他のキューなどのキューも見てきました。リオーダバッファから実行ユニットに命令を送る際に、実行ユニットが不足して命令を一時的に格納する場所のことですか?これらのキューは、トマスロ アルゴリズムのリザベーション ステーションと同じものを指しますか?

ここに画像の説明を入力

0 投票する
0 に答える
69 参照

caching - How is coherence implemented in multi-level caches?

I have understood how the cache coherence FSM works for single private L1 cache and a common LLC/memory. But couldn't find good resources where they discuss about cache coherence when there are 2 private caches - L1 and L2 and a common memory. I don't understand where the interconnection network is placed in the whole model, what does L1 caches snoop and their FSM.

0 投票する
1 に答える
201 参照

queue - MSHR が存在する場合、Load Store Queue はどのように機能しますか?

ロードストア キューの基本的な動作を理解しています。

  1. ロードがアドレスを計算するとき、同じアドレスへの以前のストアがないかストア キューをチェックし、存在する場合は最新のストアからデータを取得し、そうでない場合は書き込みバッファまたはデータ キャッシュからデータを取得します。
  2. ストアがアドレスを計算するとき、ロード キューでロード違反がないかチェックします。

私の疑問は、いつ何が起こるかです

  1. 最初のケースでは、ストア キュー内のいくつかの未解決のストア アドレスが原因でデータ キャッシュのロード アクセスが行われ、アクセスが L1 データ キャッシュでミスされ、データがキャッシュから取得される前に、ストア アドレスが解決されます。現在、ストアはロード キューをチェックして違反をチェックしています。従属ロードは以前にデータ キャッシュにアクセスしましたが、長い待ち時間のミスのため、まだキャッシュから値を受け取っていません。ストアはロード違反をポストしますか?それともストアからロードへの転送を行い、キャッシュからデータをキャンセルしますか?

  2. l1 データ キャッシュでロード アクセス ミスが発生すると、実行ステージをブロックしないように、ロードが MSHR に配置されます。ミスが解消されると、そのロードの MSHR エントリには宛先レジスタと物理アドレスに関する情報が含まれます。したがって、値は物理レジスターで更新できますが、MSHR は値が使用可能であることをロード・キューとどのように通信するのでしょうか? これはパイプライン段階でいつ発生しますか? MSHR ストアの物理アドレスとロードストア キュー ストアの仮想アドレスをどこかで読んだことがあるからです。では、MSHR はどのように LSQ と通信するのでしょうか?

これらの疑問に関するリソースは見つかりませんでした。