18

今週の私の課題についてこの質問がありますが、キャッシュを無効にする方法や、アセンブリプログラムでキャッシュを表示する方法がわかりません。誰かが私を正しい方向に向けることができますか?

アセンブリプログラムの例を使用して、2つの異なるキャッシュ(連想および直接マッピング)を無効にする方法を示します。これが発生する理由と修正方法を説明してください。キャッシュを無効にするために使用される同じプログラムは同じですか?

注:これは宿題です。質問に答えるだけでなく、資料を理解するのに役立ちません。

4

3 に答える 3

6

パフォーマンスを向上させるためにキャッシュがあります。したがって、キャッシュを無効にするということは、パフォーマンスを向上させるのではなく、パフォーマンスを低下させる(キャッシュが存在する場合)メモリアクセスのパターンを見つけることを意味します。

キャッシュのサイズには制限があるため(たとえば、メインメモリよりも小さい)、通常、キャッシュを無効にするには、キャッシュにアクセスする直前に、アクセスしようとしているデータを破棄するようにキャッシュをいっぱいにする必要があります。

于 2011-07-10T15:06:50.837 に答える
3

ヒントを探している場合は、データワードを2つのキャッシュラインに分割することを検討してください。

(答えも探している場合は、x264開発者が同様の問題に遭遇しました。詳細についてはこちらこちらをご覧ください。リンクは非常に有益であり、見つけた後でも読むことをお勧めします。答え。)

于 2011-07-10T15:58:51.203 に答える
0

覚えておくべきもう1つのことは、処理するキャッシュが仮想的または物理的にインデックス付け/タグ付けされているかどうかです。一部のバリアントでは、キャッシュ自体が完全にいっぱいになっていない場合でも、キャッシュエイリアシングによって行が強制的に置き換えられます。他の変形では、キャッシュ/ページの色の衝突が立ち退きを引き起こす可能性があります。最後に、特定のワークロード下のマルチプロセッサシステムでは、 (異なるCPUのキャッシュ間での)キャッシュラインの移行により、CPUキャッシュの有用性が制限される場合があります。

于 2011-07-11T17:10:09.130 に答える