レジスタとメモリとハードディスクの間には超えられない速度の差がある。
そのギャップを緩和するために2つの間に設けるキャッシュメモリ
とディスクキャッシュ
がある。
キャッシュメモリ
CPUとメモリの読み書き速度の差は非常に違う。
CPUが読み書きしてメモリに渡そうとすると違う処理をしていて待ち時間が発生
する。
その待ち時間を無くすために高速に読み書きできるメモリ
を置く。
それがキャッシュメモリ
だ。
特徴は
- 主記憶装置から読み込んだデータは、キャッシュメモリにも保持される。
- 同じデータを読み込む場合は高速な
キャッシュメモリから取得する
ことができる。
このキャッシュは一つだけでは無い。
データを探すためキャッシュへ次から次とアクセスする
1次キャッシュ、2次キャッシュ...
と重ねて設置することができる。
1次キャッシュにデータがない場合2次キャッシュへアクセスされる。
CPUよりも低速だけどその分容量を大きく持てるものが増えることでキャッシュ効果に期待
が持てる。
また主記憶装置と磁気ディスク装置の間
で担うのがディスクキャッシュ
だ。
ディスクキャッシュは専用の半導体メモリを搭載したり、主記憶装置の一部を間借りすることで実装している。
記憶装置は階層構造になっている。
上から
- レジスタ
- キャッシュメモリ
- 主記憶装置
- ディスクキャッシュ
- 磁気ディスク装置(ハードディスクなど)
これが階層構造で組み合わさることで見かけ上は高速で大容量
な記憶装置を実現させている。
これを記憶階層
と言う。
上に行くほど高速
、逆は低速
高速なものほど高価なので容量は限られている。
気づき
全部高速のものにしたら高価すぎるのか。
単価とはそう言うことか。
高速なものは高価なのか。
主記憶装置への書き込み方式
キャッシュメモリは読み出し専門ではない。書き込みも行う。そしてそこで書き込んで終了とはならない。
なので主記憶装置にも反映させなくてはいけない。
その反映方式の紹介だ。
ライトスルー方式
主記憶装置へも同時に書き込み
を行う。
ライトバック方式
普段はキャッシュメモリにしか書き込まない。
キャッシュメモリから追い出されるデータが発生
した場合に、その内容を主記憶装置
へと書き戻して更新内容を反映させる。
普段の書き込み処理が高速化できるのは良いのですが、制御が大変だ。
気づき
ライトバックの説明で制御が大変と書いてあった。
今までの勉強の内容で説明できるのだろうか。
どうして制御が大変かをしっかり言えるようにしたい。
ヒット率と実行アクセス時間
キャッシュメモリはメモリに比べて容量が小さい。なので必ずしも目的のデータがキャッシュメモリに存在するかわからない。
目的のデータが存在する確立はヒット率
と言う。
キャッシュメモrになくて、主記憶装置を読みに行く確率は1-ヒット率になる。
予想されるキャッシュメモリのアクセス時間は
キャッシュメモリのアクセス時間 * ヒット率
予想される主記憶装装置にアクセスする時間は
主記憶装置のアクセス時間 * (1-ヒット率)
これらを足し合わせて平均的なアクセス時間(実行アクセス時間
)が求まる。
メモリインタリープ
主記憶装置へのアクセスを高速化する手法。
主記憶装置の中の複数の区画(バンク)に分割
します。
区画はそれぞれ並行してアクセスできる
のが特徴です。
分割した区画は横断するように番地を振り分けられています。
連続した番地のデータを一気に読み出す
ことができる。
問題を解い解いた時の気づき
キャッシュミス
命令処理に必要なデータがキャッシュメモリに存在せず
、キャッシュメモリからデータを読み込むことができないことです。
キャッシュメモリはメインメモリに比べると容量が小さいため、多くのデータを保存しておくことができません。そのため、CPUがキャッシュメモリを検索しても、必要なデータが存在しない
場合があります。 この場合をキャッシュミスといいます。
キャッシュミスの場合、命令処理に必要なデータをメインメモリ等に探しに行きます。メインメモリはCPUからの距離が遠い
ので、アクセスに時間がかかります。
その間、命令処理はメモリアクセス待ちとなり、処理の実行が滞ります。
キャッシュヒット
命令処理に必要なデータがキャッシュメモリに存在
し、キャッシュメモリからデータを読み込むことができることです。
出典 https://www.fujitsu.com/jp/products/computing/servers/unix/term/cachehit/#:~:text=%E3%82%AD%E3%83%A3%E3%83%83%E3%82%B7%E3%83%A5%E3%83%92%E3%83%83%E3%83%88%E3%81%A8%E3%81%AF%E3%80%81%E5%91%BD%E4%BB%A4,%E3%81%93%E3%81%A8%E3%81%8C%E3%81%A7%E3%81%8D%E3%81%AA%E3%81%84%E3%81%93%E3%81%A8%E3%81%A7%E3%81%99%E3%80%82