キャッシュとは何ですか?

青灯夜游
リリース: 2022-11-25 11:48:13
オリジナル
32031 人が閲覧しました

キャッシュとはキャッシュメモリと呼ばれるもので、中央処理装置とメインメモリの間にある高速かつ小容量のメモリで、一般的には高速なSRAMで構成されますが、この種のローカルメモリは、 CPU とメモリの速度差によるシステム パフォーマンスへの影響を軽減または排除するために導入されました。キャッシュ容量は小さいですが高速、メモリ速度は遅いですが容量は大きく、スケジューリングアルゴリズムを最適化することでシステムのパフォーマンスが大幅に向上します。

キャッシュとは何ですか?

このチュートリアルの動作環境: Windows 7 システム、Dell G3 コンピューター。

キャッシュとは何ですか?

キャッシュ メモリ: コンピュータ内の CPU およびメイン メモリ DRAM (Dynamic Random Access Memory) にあるキャッシュ メモリ。 )、小さいながらも非常に高速なメモリで、通常は SRAM(スタティック ランダム アクセス メモリ)で構成されます。

キャッシュとは何ですか?

図 3.28 に示すように、キャッシュは CPU とメインメモリ M2 の間にある小容量のメモリですが、アクセス速度はメインメモリやメモリ M2 よりも高速です。容量はメインメモリよりもはるかに小さいです。キャッシュは命令とデータを CPU に高速に提供できるため、プログラムの実行が高速化されます。機能的にはメインメモリのバッファメモリであり、高速SRAMで構成されています。高速性を追求するため、管理を含むすべての機能がハードウェアに実装されているため、プログラマにとって透過的です。

現在、半導体デバイスの集積化が進み、小容量のキャッシュとCPUを同一チップに集積することが可能となり、その動作速度はCPUの速度に近くなり、 2 レベル以上のキャッシュ システム。

キャッシュの機能

キャッシュの機能は、CPU データの入出力速度を高めることです。キャッシュ容量は小さいが高速、メモリ速度は低いが容量は大きい、スケジューリング アルゴリズムを最適化することで、あたかもストレージ システムの容量がメモリと同等で、アクセス速度が同等であるかのように、システムのパフォーマンスが大幅に向上します。キャッシュ。

CPU の速度はメモリの速度よりもはるかに高速です。CPU がメモリからデータに直接アクセスする場合、一定時間待機する必要がありますが、キャッシュはデータの一部を保存できます。 CPU が使用したばかりまたはリサイクルしたデータ。CPU が再度データにアクセスする必要がある場合、データのこの部分を使用するときにキャッシュから直接呼び出すことができるため、データへの繰り返しアクセスが回避され、CPU の待機時間が短縮されます。したがって、システムの効率が向上します。キャッシュは L1Cache (レベル 1 キャッシュ) と L2Cache (レベル 2 キャッシュ) に分けられ、L1Cache は主に CPU 内に統合され、L2Cache はマザーボードまたは CPU 上に統合されます。

キャッシュの基本原理

SRAM に加えて、キャッシュには制御ロジックもあります。キャッシュが CPU チップの外部にある場合、その制御ロジックは通常、メイン メモリ/チェイス コントローラーと呼ばれるメイン メモリ制御ロジックと組み合わされます。キャッシュが CPU 内部にある場合、CPU がその制御ロジックを提供します。

CPUとキャッシュ間のデータ交換はワード単位ですが、キャッシュとメインメモリ間のデータ交換はブロック単位です。ブロックは複数のワードで構成され、固定長です。 CPU がメモリ内のワードを読み取ると、そのワードのメモリ アドレスがキャッシュとメイン メモリに送信されます。このとき、キャッシュ制御ロジックは、アドレスに基づいてワードが現在キャッシュにあるかどうかを判断します。キャッシュにあれば、キャッシュがヒットし、ワードはすぐに CPU に転送されます。そうでない場合は、キャッシュが欠落しています (ミス)。メイン メモリ読み取りサイクルは、メイン メモリからワードを読み取るために使用され、その読み取り結果は CPU に送信され、同時にこのワードを含むデータ ブロック全体がメイン メモリから読み取られてキャッシュに送信されます。

キャッシュとは何ですか?

# 図 3.29 にキャッシュの概略図を示します。キャッシュの読み取り時間が 50ns、メイン メモリの読み取り時間が 250ns であると仮定します。ストレージ システムはモジュール式で、メイン メモリ内の各 8K モジュールは 16 ワードの容量を持つキャッシュに関連付けられています。キャッシュは 4 つのラインに分割されており、各ラインには 4 つのワード (W) があります。キャッシュに割り当てられたアドレスは、連想メモリ CAM (連想メモリ) に格納されます。 CPU がメモリ アクセス命令を実行すると、アクセスするワードのアドレスが CAM に送信されます。W がキャッシュにない場合は、W がメイン メモリから CPU に転送されます。同時に、W を含む連続した 4 つのワードで構成されるデータ行がキャッシュに送信され、キャッシュ内の元のデータ行が置き換えられます。ここで、置換アルゴリズムは、キャッシュの使用状況を常に管理するハードウェア論理回路によって実装されます。

キャッシュ ヒット率

CPU の観点から見ると、キャッシュを増やす目的は、メイン メモリの平均読み取り時間を増やすことです。パフォーマンス キャッシュ読み取り時間に可能な限り近い値。この目標を達成するには、すべてのメモリ アクセスのうち、CPU のニーズを満たすためにキャッシュによって満たされる部分が高い割合を占める必要があります。つまり、キャッシュ ヒット率が 1 に近い必要があります。この目標の達成は、プログラム アクセスの局所性により可能です。

プログラム実行時、総キャッシュアクセス数をNc、メインメモリアクセス総数をNₘ、ヒット率をhとすると、 h=Nc/(Nc+Nₘ)

ヒット時のキャッシュアクセス時間をtc、ミス時のメインメモリアクセス時間をtₘ、ミス率(欠落率)を1-hとすると、平均アクセス時間tₐはキャッシュ/メイン メモリ システムは

です

tₐ=htc+(1−h)tₘ
ログイン後にコピー

私たちが追求する目標は、キャッシュ/メイン メモリ システムの平均アクセス時間 tₐ を、少ないハードウェア コストでできるだけ tc に近づけることです。メインメモリとキャッシュ間のアクセス時間の比率を r=tₘ/tc、アクセス効率を e とすると、

e=tc/ta=tc/(htc+(1−h)tm)=1/(h+(1−h)r)=1/(r+(1−r)h)
ログイン後にコピー

この式から、アクセス効率を向上させるためには、命中率 h は 1 になるほど良くなります。適切な r 値は 5 ~ 10 であり、大きすぎないようにする必要があります。

ヒット率 h は、プログラムの動作、キャッシュ容量、編成方法、ブロック サイズに関係します。

#キャッシュ構造設計で解決すべき問題

キャッシュの基本的な動作原理から、キャッシュの設計に必要なことがわかります。 1 つは、キャッシュ ヒット率ができるだけ高いことを期待し、実際には 1 に近い値であることを期待すること、もう 1 つは、キャッシュが CPU に対して透過的であることを期待することです。キャッシュがある場合でも、CPU によるメモリへのアクセス方法は同じであり、ソフトウェアで何も追加する必要はなく、コマンドでキャッシュにアクセスできます。ヒット率や透過性の問題は解決され、CPUのメモリアクセスの観点からはメインメモリに匹敵する容量とキャッシュに近い速度のメモリとなります。このためには、制御機能を完成させるために特定のハードウェア回路、つまりキャッシュ コントローラを追加する必要があります。

キャッシュ構造を設計する際には、次のいくつかの問題を解決する必要があります: ① メインメモリの内容をキャッシュに転送するときに、どのように格納するか? ② メモリにアクセスするときに、キャッシュ内の情報をどのように検索するか? ③ キャッシュ容量が不足した場合のキャッシュの置き換え方法 すでに存在するコンテンツをキャッシュアドレスに変換します。キャッシュ容量は主記憶容量に比べて非常に小さく、保存される内容は主記憶内容の一部に過ぎず、キャッシュと主記憶間のデータ交換はブロック単位で行われます。メイン メモリ ブロックをキャッシュに配置するには、アドレス マッピングと呼ばれる、キャッシュ内のメイン メモリ アドレスを特定する何らかの方法を使用する必要があります。 「マッピング」という言葉の物理的な意味は、位置間の対応関係を決定し、それをハードウェアで実装することです。このように、CPU がメモリにアクセスすると、CPU から与えられたワードのメモリアドレスが自動的にキャッシュアドレスに変換されます。つまり、キャッシュアドレス変換です。

キャッシュ置換問題は主に、キャッシュがミスした場合にキャッシュ内の内容を置換する置換アルゴリズムを選択して実行することです。最後の質問は、更新中にメイン メモリとキャッシュの間の一貫性を維持することに焦点を当てた、キャッシュの書き込み操作戦略に関するものです。

さらに関連する知識については、

FAQ

列をご覧ください。

以上がキャッシュとは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート