このページをはてなブックマークに追加このページを含むはてなブックマーク このページをlivedoor クリップに追加このページを含むlivedoor クリップ
*目次 [#b3208b40]

#contents


*キャッシュメモリ [#t53fe89f]

 ''キャッシュメモリ''(SRAM)とはCPUのレジスタ(SRAM)と主記憶装置であるメモリ(DRAM)の間に存在するモノで、データのアクセス速度を高める役割を果たす。よく使うデータはアクセス速度の速い記憶装置に置こうというアプローチを採用しているわけである。

 最近のMPUは、キャッシュメモリを内蔵しているものも多い。


*実効メモリアクセス時間の求め方 [#xd0fc16a]

 キャッシュメモリにデータが存在する確率は、次の用語を用いて表現される。

-ヒット率
--データがキャッシュメモリに存在する確率。
-NFP(Not Found Probability)
--データがキャッシュメモリに存在しない確率。

 ヒット率とNFPには次のような関係が成り立つ。

ヒット率+NFP=1

 データがキャッシュメモリにあるときはそこから読み込むのでアクセス速度は速い。一方、データがキャッシュメモリになければ、主記憶装置であるメモリから読み込む。このアクセス速度は遅い。一度読んだデータは、キャッシュメモリに置いておく。よって、(平均の)実効メモリアクセス時間は次の公式で求めることができる。

(実効メモリアクセス時間)=(キャッシュメモリへのアクセス時間)×(ヒット率)+(メモリへのアクセス時間)×NFP~
(実効メモリアクセス時間)=(キャッシュメモリへのアクセス時間)×(ヒット率)+(メモリへのアクセス時間)×(1−ヒット率)

例:1GHz(ページフォールドの確率は0.001%)+メモリ増設、2GHz(ページフォールドの確率は0.01%)+メモリ増設なしではどちらが得するか。

 実行中命令の70%は1サイクルで実行でき、残りの30%のうち95%は2サイクル、5%は実効メモリ参照時間で実行する。

 よって、
0.7×1サイクル+0.3×(0.95×2サイクル+0.05×実効メモリ参照時間)
で平均実行時間が計算できる。

 また、実効メモリ参照時間は1サイクルの長さに関係なく、次のように計算できる。

(1−p)×Tma+p×Tpf

ただし、~
p:ページフォールトが起こる確率~
Tma:物理メモリの参照にかかる時間~
Tpf:ページフォールトの処理時間

 ここで、Tma=50ns、Tpf=1.5msとして、p=0.01%あるいはp=0.001%のときの実効メモリ参照時間を計算する。

[1]p=0.01%のとき

(1−0.0001)×50[ns]+0.0001×(1.5×10SUP{6};) [ns]~
=0.9999×50+0.0001×1,500,000~
=49.995+150~
=199.995 [ns]

[2]p=0.001%のとき

(1−0.00001)×50[ns]+0.00001×(1.5×10SUP{6};) [ns]~
=0.99999×50+0.00001×1,500,000~
=49.9995+15~
=64.9995 [ns]

 よって、1機械語命令あたりの平均実行時間を計算する次のようになる。

[a]1GHzのプロセッサのとき(メモリ増設)

 1サイクル=1[ns]、ページフォールドの確率は0.001%のときなので、実効メモリ参照時間=64.9995[ns]より、

(平均実行時間)~
=0.7×1[ns]+0.3×(0.95×2[ns]+0.05×64.9995[ns])~
=0.7+0.3×(1.9+3.249975)~
=0.7+0.3×5.149975~
=0.7+1.5449925~
=2.2449925 [ns]

[b]2GHzのプロセッサのとき(メモリ増設なし)

 1サイクル=0.5[ns]、ページフォールドの確率は0.01%のときなので、実効メモリ参照時間=199.995[ns]より、

(平均実行時間)~
=0.7×0.5[ns]+0.3×(0.95×1[ns]+0.05×199.995[ns])~
=0.35+0.3×(0.95+9.99975)~
=0.35+0.3×10.94975~
=0.35+3.284925~
=3.634925 [ns]

 したがって、プロセッサ1GHzのままで、メモリを増設してページフォールトの確率を0.001%に減らすほうが、より高速にプログラムを実行できる。


*参考文献 [#z29ee3c4]

-『1週間で分かる基本情報技術者集中ゼミ【午前編】 2006春秋』