検索
連載

キャッシュとは? ―― 機能と仕組みから使用上の注意までQ&Aで学ぶマイコン講座(32)(2/3 ページ)

マイコンユーザーのさまざまな疑問に対し、マイコンメーカーのエンジニアがお答えしていく本連載。今回は、中級者の方からよく質問される「キャッシュとは?」です。

Share
Tweet
LINE
Hatena

キャッシュとは

 メモリは構造上、大容量になるほどアクセス速度が遅くなるので、アクセスを速くするためには容量を小さくする必要があります。そこで、命令やデータを一時的に保管するための「小容量だが高速アクセス可能なメモリ」(これをキャッシュと呼びます)をCPUのすぐ近くに配置して、1回でもアクセスされた主メモリの内容をコピーしておきます。次に同じ内容がアクセスされた場合は、主メモリではなくキャッシュにアクセスします。主メモリとキャッシュの内容は同じですので、CPUから見ると、主メモリの内容に高速でアクセスできることになります。

 ただし、高速なのはキャッシュにコピーされている内容にアクセスする場合だけですので、その他の場合は、主メモリにアクセスしなければなりません。キャッシュのコピーにアクセスできる場合を「キャッシュにヒットした」と言います。また、コピーが存在しない場合は「ミスヒット」と言います。全体のアクセス中、ヒットする確率を「ヒット率」と言い、キャッシュの性能の指標になります。

 キャッシュは満杯になると、古い内容から、またはアクセス回数の少ない内容から消去して、新しい内容を入れます。このキャッシュの内容を入れ替える方式や内部構成によって、ヒット率が変わってきます。

キャッシュの種類

 キャッシュを、取り扱う内容(命令/データ/アドレス)で分類すると次のようになります。

  1. 統合キャッシュ図2
    • 特に命令とデータを区別しないで取り扱うキャッシュです。ハーバードアーキテクチャでない場合(=ノイマン型アーキテクチャ:von Neumann architecture)は必然的にこの方式になります。
  2. ハーバードキャッシュ:命令用とデータ用で、2つのキャッシュを持つ方式です。(図3
    1. 命令キャッシュ
      • 命令バス上で、命令だけを取り扱うキャッシュです。
    2. データキャッシュ
      • データバス上で、データだけを取り扱うキャッシュです。
  3. ブランチキャッシュ図4
    • 命令キャッシュの中でも、ブランチ先の命令だけを取り扱うキャッシュです。キャッシュ以外にプリフェッチバッファも持っていて、この2つを組み合わせて、効率よくブランチする方式です。
  4. ブランチターゲットアドレスキャッシュ(BTAC:Branch Target Address Cache)(図5
    • ブランチ先のアドレス専用のキャッシュです。パイプライン処理のマイコンなどで、条件ブランチの際に、パイプライン障害を最小に抑えるために、ブランチ予測機能と併用します。

図2:統合キャッシュ (クリックで拡大)

図3:ハーバードキャッシュ (クリックで拡大)

図4:ブランチキャッシュ (クリックで拡大)

図5:ブランチターゲットアドレスキャッシュ(BTAC) (クリックで拡大)

 キャッシュの置かれる位置によって、CPUに近い順に1次キャッシュ、2次キャッシュのように呼びます。1次、2次をLevel 1、Level 2と称して、略号でL1キャッシュ、L2キャッシュと呼ぶこともあります。

Copyright © ITmedia, Inc. All Rights Reserved.

ページトップに戻る