プログラムを書くと、これは機械で読めるバイナリに変換されます。 CPUが命令を実行するとき、CPUはこのバイナリをフェッチし、デコードし、それが意味することを実行してから実行します。基本的に、このバイナリは、実行する必要のある命令をCPUに知らせます。このバイナリがメインメモリにのみ格納されていた場合、各フェッチ段階でCPUがメインメモリにアクセスする必要がありますが、これは本当に悪いことです。その代わりに、キャッシュの中のいくつかをCPUの近くに保存することです。このキャッシュは、実行される命令に関連するバイナリ情報しか含んでいないので、命令キャッシュと呼ぶ。これで命令はデータを操作する必要があります。あなたのハイレベルのコードでは、この命令は、命令キャッシュに格納されて
ADD memLocationStoredInRegisterA, memLocationStoredInRegisterB, memLocationStoredInRegisterC
に似た機械命令何かに変換されます arrayA[i] = (arrayB[i] + arrayC[i])
のようなものを持っていますが、データ、すなわちarrayA、arrayBとarrayC意志かもしれませんメモリの別の部分に記憶される。この命令が実行されるたびに、メインメモリにアクセスすることは無駄になります。したがって、これを別のキャッシュに保存します。これをデータキャッシュと呼びます。
あなたの応答はThanxです。データキャッシュについてさらに詳しく説明できますが、これは正確には何ですか? – Gopinath
命令がメモリから何かを読み出そうとすると、命令はまずデータキャッシュをチェックします。与えられたアドレスの値がすでにキャッシュに入っていて、有効であれば、それは命令によって使用されます。命令が何かをメモリに書き込もうとすると、キャッシュ内の対応する値が更新または無効になります(無効とマークされます)。上記のすべては、アクセスされるメモリ領域に対して定義された* cache policy *に依存することがあります。 – Tsyvarev