##まえがき
実際はこんな感じです。リーダーが引き継ぎました。perf ハードウェア パフォーマンス監視タスクがあります。perf を使用するプロセス中に、コマンド perf list を入力すると、次の情報が表示されました。
misses と
loads が何を意味するのかわからないということです。
1. キャッシュとは何ですか?
まず、CPU はメモリに直接アクセスせず、最初にキャッシュを経由する必要があることを知っておく必要があります。 原因: CPU内のデータはレジスタに格納されており、レジスタへのアクセス速度は非常に速いですが、レジスタの容量は小さいです。メモリ容量は多いですが、速度は遅いです。CPU とメモリ間の速度と容量の問題を解決するために、キャッシュ Cache が導入されます。
キャッシュは CPU とメイン メモリの間にあります。CPU がメイン メモリにアクセスするとき、まずキャッシュにアクセスして、キャッシュにそのようなデータがあるかどうかを確認します。ある場合は、キャッシュからデータを CPU に返します; キャッシュにデータがない場合は、メイン メモリに再度アクセスします。
2. マルチレベル キャッシュのストレージ構造
一般的に言えば、キャッシュは複数ありますが、 、つまりマルチレベルキャッシュですが、なぜですか?
理由: CPU アクセス キャッシュも非常に高速です。しかし、速度と容量を完全に両立させることはできず、CPU がキャッシュにアクセスする速度と CPU がレジスタにアクセスする速度が同じであれば、キャッシュは非常に高速であるが、容量は非常に小さいことを意味します。小さなキャッシュ容量ではニーズを満たすことができないため、マルチレベル キャッシュが導入されました。
マルチレベル キャッシュは、キャッシュを複数のレベル L1、L2、L3 などに分割します。
#速度に応じて、L1 > L2 > L3 の順になります。
#ストレージ容量に応じて、L3 > L2 > L1 の順になります。

通常、L1 は命令キャッシュ (
ICache) とデータ キャッシュ (DCache) に分割され、L1 キャッシュは CPU 専用であり、それぞれCPU L1キャッシュあり。
#3. 「ヒット」と「ハズレ」とは何を意味しますか? Hit
: CPU がアクセスするデータがキャッシュにキャッシュされます。これを「ヒット」といいます。つまりcache hitMissing
キャッシュ ミスといいます。
4. キャッシュラインとは何ですか?
キャッシュ ライン
: キャッシュ ライン。キャッシュは多くの等しいブロックに均等に分割され、各ブロックのサイズは キャッシュ ラインと呼ばれます。 ###。
キャッシュ ラインは、キャッシュとメイン メモリ間のデータ転送の最小単位でもあります。
CPU が 1 バイトのデータをロードしようとすると、キャッシュが見つからない場合、キャッシュ コントローラーはキャッシュ ライン サイズのデータをメイン メモリからキャッシュに一度にロードします。たとえば、キャッシュ ラインのサイズは 8 バイトです。 CPU が 1 バイトを読み取る場合でも、キャッシュが失われた後、キャッシュはメイン メモリから 8 バイトをロードして、キャッシュ ライン全体を埋めます。#CPU がキャッシュにアクセスするときのアドレス エンコーディングは、通常、タグ、インデックス、オフセットの 3 つの部分で構成されます。

- ##tag
(タグフィールド)
: キャッシュラインにキャッシュされたデータのアドレスがプロセッサのアドレス指定アドレスと一致するかどうかを判断するために使用されます。 -
(インデックスフィールド)
: アドレスがキャッシュ内のどの行にあるかインデックスを付けて検索するために使用されます。
- (offset)
: キャッシュライン内のオフセット。キャッシュ ラインの内容は、ワードまたはバイトでアドレス指定できます。 キャッシュ ラインとタグ、インデックス、オフセットなどの関係は、図に示すとおりです。
#5. キャッシュは仮想アドレスにアクセスしますか?それとも物理アドレスにアクセスしますか?
CPU がメモリに直接アクセスするのではなく、CPU が仮想アドレスを発行し、それが MMU によって物理アドレスに変換され、その後データが送信されることがわかっています。物理アドレスに従ってメモリからフェッチされます。それでは、キャッシュは仮想アドレスにアクセスしているのでしょうか、それとも物理アドレスにアクセスしているのでしょうか?
回答: 必ずしもそうとは限りません。これは、仮想アドレス、物理アドレス、または仮想アドレスと物理アドレスの組み合わせのいずれかになります。
ハードウェア設計ではキャッシュを整理するさまざまな方法があるため:VIVT 仮想キャッシュ: インデックス仮想アドレスのタグと仮想アドレスのタグ。
PIPT 物理キャッシュ: 物理アドレスのインデックス、物理アドレスのタグ。
VIPT 物理的にタグ付けされた仮想キャッシュ: 仮想アドレスのインデックス、物理アドレスのタグ。
# 6. 曖昧さとエイリアシングの問題とは何ですか?
曖昧さ (同音異義語
)
: 同じ仮想アドレスが異なる物理アドレスに対応しますエイリアス (
alias
): 複数の仮想アドレスが同じ物理アドレスにマッピングされます (複数の仮想アドレスはエイリアスと呼ばれます)。たとえば、上記の VIVT メソッドにはエイリアスの問題があります。VIVT、PIPT、VIPT のどれが優れていますか?
PIPT
は、インデックスとタグの両方が物理アドレスを使用するため、実際には理想的です。 ソフトウェア レベルでは、あいまいさやエイリアスの問題を回避するためのメンテナンスは必要ありません。VIPT
のタグは物理アドレスを使用しているため、あいまいさの問題はありませんが、インデックスは仮想アドレスであるため、 にはエイリアスの問題も発生する可能性があります。VIVT
メソッドには、曖昧さとエイリアシングの問題が存在します。実際、現在ハードウェアで使用されているのは基本的に PIPT または VIPT です。 VIVT は問題が多すぎて、歴史になり、誰も使わなくなりました。さらに、PIVT 法は欠点だけで利点がなく、遅いだけでなく、曖昧性やエイリアシングの問題も存在するため存在しません。
キャッシュの構成、曖昧さおよびエイリアスの問題は、比較的大きなコンテンツです。ここで知っておく必要があるのは、キャッシュによってアクセスされるアドレスは、仮想アドレス、物理アドレス、または仮想アドレスと物理アドレスの組み合わせのいずれかである可能性があるということだけです。また、組織化方法が異なると、曖昧さやエイリアスの問題が発生します。
#7. キャッシュ割り当て戦略?
は、キャッシュミスが発生したときにキャッシュがどのように割り当てられるかを示します。
読み取り割り当て:
CPU
がデータを読み取るとき、キャッシュ
がありません。この場合、キャッシュ ライン
キャッシュが割り当てられます。 . メインメモリから読み取られたデータ。 デフォルトでは、cache
は読み取り割り当てをサポートします。書き込み割り当て: CPU 書き込みデータ
キャッシュ
が欠落している場合、書き込み割り当て戦略が考慮されます。書き込み割り当てをサポートしていない場合、書き込み命令はメイン メモリ データを更新するだけで終了します。書き込み割り当てがサポートされている場合、最初にメイン メモリからキャッシュ ライン
にデータをロードし (最初に読み取り割り当てを実行するのと同じ)、次にキャッシュ ライン
のデータを更新します。8. キャッシュ更新戦略?
は、キャッシュがヒットしたときに書き込み操作でデータを更新する方法を示します。
書き込みパススルー: CPU がストア命令を実行し、キャッシュがヒットすると、キャッシュ内のデータを更新し、メイン メモリ内のデータも更新します。 キャッシュとメインメモリ内のデータは常に一貫しています。
Writeback:
CPU
がstore
命令を実行し、cache
データにヒットした場合にのみcache## を更新します。で #。そして、各
キャッシュ ラインには、データが変更されたかどうかを記録するための
bitビットがあり、これは
ダーティ ビットと呼ばれます。
ダーティビットを設定します。メイン メモリ内のデータは、
キャッシュ ラインが置換されるか、明示的な
clean操作が実行される場合にのみ更新されます。したがって、
メイン メモリ内のデータは未変更のデータである可能性がありますが、変更されたデータは キャッシュ内にあります。 キャッシュとメインメモリ内のデータが不整合である可能性があります。最後に
キャッシュ、TLB、MESI、メモリ整合性モデルなどについて本当に習得するには、沈降と要約が必要なものです。 しかし、多くの人はこれを使用しないかもしれません。パフォーマンスの問題が発生し、キャッシュ ヒット率を改善する必要がある場合にのみ、この知識の重要性がわかります。 この記事で取り上げた知識について、キャッシュの基礎知識をマインドマップにまとめました。
以上が入社してキャッシュとは何かを理解したの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

Safe Exam Browser
Safe Exam Browser は、オンライン試験を安全に受験するための安全なブラウザ環境です。このソフトウェアは、あらゆるコンピュータを安全なワークステーションに変えます。あらゆるユーティリティへのアクセスを制御し、学生が無許可のリソースを使用するのを防ぎます。

MantisBT
Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

SecLists
SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

ZendStudio 13.5.1 Mac
強力な PHP 統合開発環境
