3

知りたいのですが、マイクロプロセッサ (ロング モードの SandyBridge アーキテクチャで言う) は、データを「L1 コード」キャッシュから「L1 データ」キャッシュに、またはその逆にどのように切り替えますか? ページがデータ ストレージに使用されたため、L1 キャッシュにキャッシュされたとします。次に、OS の実行中に、命令ポインタが現在 L1 データ キャッシュにキャッシュされているメモリ位置にジャンプします (JMP 命令を発行します)。プロセッサはデータを L1 データから L1 コード キャッシュに移行しますか? データ管理命令が L1 コード キャッシュに格納されているアドレスに対して発行された場合 (つまり、アドレスがコード実行ではなくデータ格納に適していることを意味します) についても同じ質問があります。プロセッサはこれらの問題をどのように処理しますか?

私は自己変更コードについて勉強しているので、これを尋ねています。コードキャッシュの詳細を読むことができる追加情報があれば、リンク/参照を投稿してください。

4

1 に答える 1

3

最新のインテル プログラマーズ マニュアル、第 3 巻、システム プログラミング、具体的には次のセクションを参照してください。

  • 8.1.3 自己変更コードと相互変更コードの処理
  • 11.6 自己修正コード

特定の CPU モデルの動作を知り、それに依存することは望まないと思います。別の CPU または新しい CPU ではコードが不安定になるからです。自己修正コードと相互修正コードを設計および実行する方法については、公式のガイドラインに従ってください。

また、キャッシュの無効化によってパフォーマンスが低下するため、実行時に多くのコード変更を行いたくありません。

于 2011-10-31T01:42:19.980 に答える