キャッシュとは? ―― 機能と仕組みから使用上の注意まで:Q&Aで学ぶマイコン講座(32)(2/3 ページ)
マイコンユーザーのさまざまな疑問に対し、マイコンメーカーのエンジニアがお答えしていく本連載。今回は、中級者の方からよく質問される「キャッシュとは?」です。
キャッシュとは
メモリは構造上、大容量になるほどアクセス速度が遅くなるので、アクセスを速くするためには容量を小さくする必要があります。そこで、命令やデータを一時的に保管するための「小容量だが高速アクセス可能なメモリ」(これをキャッシュと呼びます)をCPUのすぐ近くに配置して、1回でもアクセスされた主メモリの内容をコピーしておきます。次に同じ内容がアクセスされた場合は、主メモリではなくキャッシュにアクセスします。主メモリとキャッシュの内容は同じですので、CPUから見ると、主メモリの内容に高速でアクセスできることになります。
ただし、高速なのはキャッシュにコピーされている内容にアクセスする場合だけですので、その他の場合は、主メモリにアクセスしなければなりません。キャッシュのコピーにアクセスできる場合を「キャッシュにヒットした」と言います。また、コピーが存在しない場合は「ミスヒット」と言います。全体のアクセス中、ヒットする確率を「ヒット率」と言い、キャッシュの性能の指標になります。
キャッシュは満杯になると、古い内容から、またはアクセス回数の少ない内容から消去して、新しい内容を入れます。このキャッシュの内容を入れ替える方式や内部構成によって、ヒット率が変わってきます。
キャッシュの種類
キャッシュを、取り扱う内容(命令/データ/アドレス)で分類すると次のようになります。
- 統合キャッシュ(図2)
- 特に命令とデータを区別しないで取り扱うキャッシュです。ハーバードアーキテクチャでない場合(=ノイマン型アーキテクチャ:von Neumann architecture)は必然的にこの方式になります。
- ハーバードキャッシュ:命令用とデータ用で、2つのキャッシュを持つ方式です。(図3)
- 命令キャッシュ
- 命令バス上で、命令だけを取り扱うキャッシュです。
- データキャッシュ
- データバス上で、データだけを取り扱うキャッシュです。
- 命令キャッシュ
- ブランチキャッシュ(図4)
- 命令キャッシュの中でも、ブランチ先の命令だけを取り扱うキャッシュです。キャッシュ以外にプリフェッチバッファも持っていて、この2つを組み合わせて、効率よくブランチする方式です。
- ブランチターゲットアドレスキャッシュ(BTAC:Branch Target Address Cache)(図5)
- ブランチ先のアドレス専用のキャッシュです。パイプライン処理のマイコンなどで、条件ブランチの際に、パイプライン障害を最小に抑えるために、ブランチ予測機能と併用します。
キャッシュの置かれる位置によって、CPUに近い順に1次キャッシュ、2次キャッシュのように呼びます。1次、2次をLevel 1、Level 2と称して、略号でL1キャッシュ、L2キャッシュと呼ぶこともあります。
Copyright © ITmedia, Inc. All Rights Reserved.