エンベデッドシステム(1) キャッシュメモリ
もともとはOSの仕組みを知りたいと思いその流れでエンベデッドスペシャリストをうけようかと思うようになった。パソコンの仕組みの超超基礎もよくわかっていないことを痛感。そのひとつがキャッシュの方式。単語ぐらいは知っているけどその超基礎的な仕組みすら知らないというものがたくさんあって、試験勉強を通してそれが少しはわかるようになったかな。
キャッシュメモリ方式
エンベデッドシステムキャッシュメモリの方式として、ダイレクトマッピング、セットアソシアティブ、フルアソシアティブの3種類の説明があった。ダイレクトマッピング方式は複数のアドレス範囲で1つのキャッシュラインを共有する。セットアソシアティブ方式では1つのエントリに複数のキャッシュラインを割り当てる。
メモリからキャッシュの転送
CPUからキャッシュにアクセスしたとき該当のデータがなければメモリからキャッシュにデータをとってくる。その際はブロック単位でデータをとってくる。したがって、配列のように連続するアドレスにアクセスするような場合、ある要素(n番目)がキャッシュに存在せずメモリからデータをとってくる場合ブロック単位でとってくるため、次の要素(n+1番目)などはキャッシュに存在することとなる。
キャッシュの効果
キャッシュにアクセスしたときに該当のデータがないとき(キャッシュミス)、メモリにアクセスしてデータをとってくる必要がある。キャッシュにデータないことで余分にかかる時間をミスペナルティという。したがって平均アクセス時間は
平均アクセス時間 = キャッシュにデータある時にかかる時間 + キャッシュにない確率 x ミスペナルティの時間(余分にかかる時間)
となる。
キャッシュの制御方法
CPUがデータを書き込むときメモリに書くよりキャッシュに書きこんだほうがはやい。しかしキャッシュに書きこみするとキャッシュに保存されているデータとメモリにあるデータとに不一致が生じることになる。メモリに書き込む方式を「ライトスルー方式」、キャッシュに書き込む方式を「ライトバック方式」という。キャッシュにあるデータとメモリにあるデータとの不一致を防ぐため「バススヌープ」という仕組みがある。バス上でやりとりさせるすべてのデータを監視して必要に応じてデータの一致をメンテナンスする。
この記事へのコメントはありません。