こんにちは、まさとです。
今回は、キャッシュメモリについて詳しく
解説していきます。
まだ、メモリについてよくわからない。という方は
是非下の記事を一読していただくとより理解が深まるかと思います!
コンピュータの頭脳とも言えるCPUは非常に速度が早いです。
一方で主記憶装置であるメモリは速度が速いとは言えません。
その中間に立って速度差を埋めてくれるのが、
キャッシュメモリです。
記憶階層構造とは
では具体的にどのように
速度差を埋めているのでしょうか?
キャッシュメモリは上図のように
間に挟まって仕事をしています。
大きい速度さを埋めるために
キャッシュメモリは間に入って
一時的にデータを保存しておくということです。
どれだけ速いCPUを搭載していても
記憶装置の速度が遅ければ意味がなくなってしまうので
そこを補完してくれているということですね!
キャッシング2つ
キャッシングとはキャッシュをすることです。
その方法として以下二つが上げられます。
- ライトスルー方式
- ライトバック方式
それでは詳しくみていきましょう。
ライトスルー方式
キャッシュメモリと主記憶に同時に書き込むため
書き込み速度の高速化はされません。
その代わり読み出しの時は高速化され、
二つ同時に書き込んでいるため
データの齟齬がなくなるという意味で
安全にデータを取り扱うことができます。
ライトバック方式
キャッシュメモリからデータが溢れたときに
主記憶に書き込んでいくという方式です。
読み出し、書き込みともに高速化を図れます。
高速化できる代わりに制御が大変というデメリットもあります、、
実行アクセス時間を求めよう!
実行アクセス時間(平均アクセス時間)を
求めることがよく問われます。
(キャッシュメモリアクセス時間×ヒット率)+(主記憶アクセス時間×(1−ヒット率))
こちらが実行アクセス時間を求める公式です。
まずはヒット率を求める必要があります。
ヒット率とは
ヒット率とはキャッシュメモリに
目的データが存在する確率です。
本来であれば使うデータ全てをキャッシュメモリに置いておくことが理想的です。
そちらの方が早いですからね。
ただ、キャッシュメモリは容量が小さく限られているため、
使うデータ全てをキャッシュメモリに置いておくことができるかというと
そうでない場合が多いです。
そういったときにどれぐらいキャッシュから読めて、
キャッシュじゃないところから読むか。
それをヒット率と言います。
ヒット率が高いほど高速な処理ができるということです。
上図のヒット率は
100MB分の20MBがキャッシュデータなので
20%でヒットするという事です。
つまりヒット率は0.2ということになります。
キャッシュメモリアクセス時間とは
キャッシュメモリアクセス時間とは
キャッシュ領域にアクセスをして
データを読んでくる時間のことをいいます。
主記憶アクセス時間とは
主記憶アクセス時間とは
キャッシュメモリアクセス時間と同様に
メモリ側のデータを読んでくる時間のことを言います。
キャッシュメモリアクセス時間が1ms
主記憶アクセス時間が5ms
とします。
これを上記の式に当てはめると
1ms×0.2+5ms×0.8=4.2
となり、実行アクセス時間を求めることが出来ます。
メモリの高速化(メモリインタリーブ)
まずメモリインタリーブとは簡単にいうと
CPUとメモリ間のやりとりを
メモリの分身を作って早くする技術
のことです。
メモリはCPUにデータを渡したり、
受け取ったりする仕事をします。
ただCPUさんがもっと早くデータくれというものですから
仕方なくメモリが分身をして一人二役やっているというものです。
これにより
同時並行でデータの読み書きができるため
高速化できるというわけです。
最後に
いかがだったでしょうか。
今回の内容をまとめます。
- 記憶階層構造とは
- キャッシング二つ
- 実行アクセス時間を求めよう
- メモリの高速化(メモリインタリーブ)
お疲れ様でした。
よくキャッシュをクリアするとか出てきてたのは
これのことだったんだね!
今回はキャッシュについて
解説してきました。
キャッシングの方法を二つ答えられますか。
メモリの実行アクセス時間を計算できますか。
メモリを高速化するにはどうすればいいでしょうか。
この3つがすぐに答えれるようになってくださいね!
以上、まさとでした。