プログラムの読み出し順について

八王子さん  
(No.1)
ずっと「キャッシュとかにデータがなければ、補助記憶→主記憶→キャッシュメモリ(2次1次)→CPUで処理、キャッシュにデータがあればキャッシュメモリ(2次1次)→CPUで処理が済んで早い」と思っていたのですが、設定には「命令実行するためには必ず主記憶にアクセスしなければならない」とあります。
CPU内(外でもいいですけど)のキャッシュだけで命令が完結することは絶対にないのでしょうか?

https://www.ap-siken.com/s/apkakomon.php
2023.08.07 00:40
jjon-comさん 
AP プラチナマイスター
(No.2)
> 命令実行するためには必ず主記憶にアクセスしなければならない
の出典はこちら。

ソフトウェア開発技術者平成18年春期 午前問22
https://www.ap-siken.com/kakomon/18_haru/q22.html

「フォン・ノイマン・ボトルネック」でWeb検索すると,wikipediaの次の記事がヒットします。

ノイマン型では、記憶装置に命令を格納するので、プロセッサが命令を実行するには必ずバスを通して記憶装置(メモリなど)にアクセスしなければならず、プロセッサと記憶装置のアクセス速度が遅ければコンピュータ全体のボトルネックになる。

現代のコンピュータはほとんどがプログラム内蔵方式であるため、CPUの性能向上だけでなく、記憶装置のアクセス速度向上も図られており、キャッシュメモリを導入するなど、記憶の階層化は、コンピュータ全体のパフォーマンスの改善のために重要である。

別の言い方をするならば,命令実行するためには必ず主記憶にアクセスしなければならない「古い設計」に対する改善策の一つがキャッシュメモリです。
2023.08.07 08:51
boyonboyonさん 
AP シルバーマイスター
(No.3)
「命令実行するためには必ず主記憶にアクセスしなければならない」
とは、主記憶のアドレスを指定して、そこにあるデータを読み出すことだと思います。

キャッシュメモリーには、以前にアクセスされた主記憶上のアドレスとデータが保管されていて、
CPUが、次はアドレスXXXXのデータを読み込もうとしたときに
(アドレスXXXXは、主記憶上のアドレス)
キャッシュメモリーにアドレスXXXXのデータがあれば、キャッシュから読み込み、
キャッシュメモリーにアドレスXXXXのデータがなければ、次のキャッシュや主記憶にアクセスする。
こんな流れだと認識しています。

別の言い方をすると、CPUは主記憶にアクセスしようとしていますが、結果的にキャッシュから読み込むときもあります。CPUから見れば、主記憶から読み込んだことと同じになります。
2023.08.07 18:57
八王子さん  
(No.4)
重要なのはCPUの外にプログラムがあるということですね。
フォン・ノイマンボトルネックは『プログラムの保管場所はCPU外だから、そのアクセス経路がボトルネックになるよ』という認識をする事にしました。ありがとうございます。
2023.08.07 21:15

返信投稿用フォーム

スパム防止のためにスレッド作成日から30日経過したスレッドへの書込みはできません。

その他のスレッド


Pagetop