CPU の構成要素やランダム アクセス メモリの構造については調べましたが、レジスタ間の比較操作がわかりません。
「レジスタ間の比較操作は、通常、RAM 内の 2 つのデータ エントリに対する同等の操作よりも速いのはなぜですか?」
CPU の構成要素やランダム アクセス メモリの構造については調べましたが、レジスタ間の比較操作がわかりません。
「レジスタ間の比較操作は、通常、RAM 内の 2 つのデータ エントリに対する同等の操作よりも速いのはなぜですか?」
キャッシュの外側にある場合、RAM アクセスは非常に遅くなります。DDR3 モジュールのデータにアクセスするのは、レジスタ (または L1 キャッシュ) にアクセスするよりも数百倍遅くなります。今日のデスクトップ (またはサーバー、またはラップトップ) プロセッサは、DDR3 RAM モジュールなどの (L1) キャッシュの外部にあるデータにアクセスするためにほとんどの時間を失っています。
数字を大局的に見ると、レジスターまたは L1 キャッシュされたデータへのアクセスには、せいぜい数サイクルしかかかりません (したがって、3GHz マシンでは通常 1 ナノ秒を意味します)。DDR3 RAM モジュールのデータにアクセスするには、約 200 または 300 ナノ秒かかります。その間ずっと、プロセッサは 100 以上のマシン命令を実行できました。
これが、データの局所性がますます重要になっている理由です。そして、それは私たちが書いているコードにも影響を及ぼします: リンクされたリストをスキャンすることは、配列をスキャンすることよりもずっと遅くなるかもしれません.
詳細は難しいです。現在のプロセッサで小さなルーチンの最悪の場合の実行時間を予測することは非常に困難です。