私は、キャッシュメモリについて読んでてきたと私はQuoraのから面白い答えを見つけることが、ここでデータは処理前にRAMからキャッシュ(L3、L2、L1)を通過しますか?
をしかし、ここで私は、CPUがRAMからのデータを処理したい場合ので、それはのように通過しないと少し混乱しています:
CPU <から<登録 - L1 < - L2 < - L3 < - RAM
または目e命令はメモリバス経由でレジスタに直接渡されますか?
私は、キャッシュメモリについて読んでてきたと私はQuoraのから面白い答えを見つけることが、ここでデータは処理前にRAMからキャッシュ(L3、L2、L1)を通過しますか?
をしかし、ここで私は、CPUがRAMからのデータを処理したい場合ので、それはのように通過しないと少し混乱しています:
CPU <から<登録 - L1 < - L2 < - L3 < - RAM
または目e命令はメモリバス経由でレジスタに直接渡されますか?
キャッシュの定義は、キャッシュの下位のメモリよりもレイテンシが低い(高速な)メモリのレベルです。これを超えると、あなたはどんな方法でもキャッシュシステムを設計することができます。通常、メイン・メモリからデータ・ブロックをロードするときには、すべてのキャッシュ・レベル(すべてのキャッシュに存在する)にロードされ、そのブロックの要求された部分がレジスタにロードされます。しかし、私が言ったように、これは設計特有の側面です。アーキテクチャとマイクロアーキテクチャによって異なります。さらに、命令キャッシュとデータキャッシュは異なるポリシーを持つことができます。
ええ、あなたは正しいですし、CPUがアドレスからの命令を最初に望むのであれば、それはキャッシュメモリを(すべてのレベルを通して)チェックインし、見つからなければその命令のメインメモリに行き、そのワード命令がCPUとキャッシュメモリにも渡されます。私はそれがコンセプトであることを意味します、あなたが言ったようにアーキテクチャにも依存します:) – Hiren
@Hirenはい。概念的には、それはそのように機能します。 –
私はこの質問を見てアドバイスを:http://programmers.stackexchange.com/questions/44731/why-are-there-separate-l1-caches-for-data-and-instructions –
ありがとう@ PatrickTrentin、しかし、私はキャッシュがデータや命令キャッシュのような型を持っているのと同じように混乱しています。また、データがキャッシュ内を移動するかどうかは不明です。 – Hiren
一般に、可能な限りデータと命令の両方がキャッシュを介して移動します。場合によっては、キャッシュが分離され、別の場合には統合されます。あなたがそれについてgoogleするならば、オンラインで多くの参考文献があります。 :) –