疑問解消系2
2つめ。
Chapter1 プロセッサ
1. キャッシュメモリについて
メモリの勉強が終わったけれど、キャッシュとは..?という気持ちになったので。
Word Def
- メモリキャッシュ(1~3次キャッシュ、L1~L3)
主記憶装置からデータを読み書きするときにCPUとの性能差、速度差を埋めるために主記憶装置とCPUの間に存在する高速なメモリ。
それを適宜CPUorメモリから読みだして使用するようにして差分を埋めている。
CPUがメモリの速度に合わせなくて良くなることがメリット。
CPUチップの外部にキャッシュメモリを搭載するのが主流だったらしいが、現在はCPUチップ上にキャッシュメモリを搭載することが多いらしい。
レジスタとは違うよ。 - ディスクキャッシュ
主記憶装置、補助記憶装置間の性能差、速度差を埋めるために存在する高速なメモリ。
理論はメモリキャッシュと同じ。
補助記憶装置側にキャッシュメモリがある場合と、主記憶装置の一部をディスクキャッシュとして用いる場合がある(イメージめっちゃ遅そう)。 - キャッシュメモリ
上記メモリキャッシュ、ディスクキャッシュに用いられるメモリ。
SRAMが多い。
所感
遠ければ遠いほどおそかろうとも思っていたし、前にDRAMの遅さとかも見たから気にはなっていたけどそんな仕組みなのねと。
参考文献
メモリキャッシュとディスクキャッシュ
レジスタとキャッシュメモリ
キャッシュに関しての注意事項 <= ライトスルーとライトバックについても書いてある。
CPUとメモリの関係について <= L1~L3でデータの遷移も書いてあるので後で読みたい。
1. 実効アクセス時間とヒット率
単語を知らなかったのだ。
Word Def
- ヒット率
CPUが必要としている情報をキャッシュメモリが保持している確率のこと - 実効アクセス時間(平均アクセス時間)
キャッシュメモリに存在している場合はヒット率との演算結果、なければ主記憶には常にあるのでそちらのアクセス時間が用いられる。
実効アクセス時間の計算
L1のヒット率をp_L1, L2のヒット率をp_L2とし、アクセス時間をL1,L2,主記憶それぞれt_L1,t_L2,t_mainとした時、下記のように平均アクセス時間は求められる。(L3がある場合も同じ感じで。)
L2へ実際アクセスする確率はp_L2_actualとすると
p\_L2\_actual = (1-p\_L1) * p\_L2
同様に主記憶に実際アクセスする確率はp_main_actualとすると
p\_main\_actual = 1 - p\_L1 - p\_L2\_actual
実効アクセス時間
p\_L1 * t\_L1 + p\_L2\_actual * t_L2 + p\_main\_actual * t\_main
で計算できるはず。なるほろ。L1に置きたいって思ったとしてもCPUがよしなにやってそうだから、難しいんだろうな。。
あと一回読み込まれたものはL1とかに移動するだろうから、そのあたりの遷移もあとで読んでおきたい。
参考文献
所感
そもそも問題なんだけど、SSDとDRAM系の速度ってどのくらい違うんだろう?もし差が小さいならSSDを用いてもいい気がするけど。