私は、RAM がどのようにして CPU に追いつくのかを理解しようとしています。私がそうできないと思っている理由を詳しく説明します。
- 最近のCPUのクロック速度は、RAMモジュールのクロック速度よりも速いことがよくあります(例:2.4GHzのラップトッププロセッサと2133MHzのRAMモジュール)。
- このようなCPUは複数のコアを備えていることが多く、クロック速度よりも速い速度で命令を実行できる。
- これらのCPUは、シングルコア並列処理技術を採用して、クロックサイクルよりも多くの命令をコアごとに実行することもあります。
- これを考慮すると、命令はRAM周波数よりもはるかに高い速度で実行される。
- 最大で、RAMクロックサイクルごとにRAMから1つのアドレスのコンテンツを取得できます。
- BIOSを除いて、命令は最終的にはRAMから来る必要がある。
- したがって、メモリから命令をフェッチする需要は、RAMがそれを提供する能力をはるかに上回っています。
私は答えを見つけましたピーター・コーデスの上これStack Overflow の質問では、この問題はキャッシュとプリフェッチによって解決されると説明されていますが、命令をフェッチする必要がある速度が RAM で提供できる速度を超えているように見えることを考えると、CPU がどのようにしてプリフェッチする機会を得るのか理解できません。これWikipedia のページには、Intel Core i7 6950X は 317900 MIPS の速度で命令を実行できると記載されています。RAM 周波数を 2133MHz にすると、RAM クロック サイクルあたり約 150 命令に相当するようです。
何が足りないのでしょうか?
私はちょうど見たシドニー・ハウケの、前にリンクされた質問に対する回答では、CPU が繰り返し実行することが分かっている命令はメモリから再フェッチされないと述べられています。これだけで速度の違いを補うのに十分でしょうか?