キャッシュとは? ―― 機能と仕組みから使用上の注意まで:Q&Aで学ぶマイコン講座(32)(3/3 ページ)
マイコンユーザーのさまざまな疑問に対し、マイコンメーカーのエンジニアがお答えしていく本連載。今回は、中級者の方からよく質問される「キャッシュとは?」です。
キャッシュの内部構成
キャッシュは高速・小容量の読み書きができるメモリですので、基本構成は通常のSRAMと同じです。キャッシュと通常のメモリとの違いはキャッシュにヒットしたか、ヒットしなかったかを高速に判断し、さらにヒットした際に、高速に読み出すことができるかどうかです。
具体的な構成はマイコン各社によって異なりますが、一般的には、内部をタグ部とデータ部に分けており、ヒットしたかしなかったかは、タグ部を使って判断します。
さらに、タグ部の構成でいくつかの方式に分けられます。タグが1組の場合をダイレクトマップ方式(Direct Mapped)と呼びます。構造が単純ですがヒット率が他の方式に比べ低くなります。
複数のタグで構成する場合をセットアソシアティブ方式(Set Associative)と呼びます。タグの数が多いほどキャッシュヒット率は上昇しますが、構造が複雑になります。n個のタグにより構成された場合、nウエイセットアソシアティブ方式と呼びます。アドレスが与えられると全てのタグと比較される方式をフルアソシアティブ方式(Fully Associative)と呼びます。最も優れたヒット率が得られますが、コストが高くなるので通常は用いられません。
図6に最新のマイコンの例として、ARM Coretx-M7プロセッサを搭載した「STM32F7シリーズ」(STマイクロエレクトロニクス製)におけるキャッシュのブロック図を示します。
このマイコンはハーバードアーキテクチャ方式で、命令キャッシュは2-ウェイセットアソシアティブ、データキャッシュは4-ウェイセットアソシアティブ構造になっています。
キャッシュの用語
- キャッシュヒット
- 対象となる命令やデータがキャッシュに存在する場合
- キャッシュミス(キャッシュミスヒット)
- 対象となる命令やデータがキャッシュに存在しない場合
- ラインフィル(Line fill)
- キャッシュのバス上の読み出し、または読み出しリクエストのこと(フィルとはキャッシュがミスした場合に主メモリの内容をキャッシュに読み込むこと)
- エビクション(Eviction)
- キャッシュが満杯の状態で、キャッシュ内に必要なデータを保存し、不要なデータを追い出すこと(Evictionは立ち退きという意味)
- ライトスルー(Write through)
- CPUがキャッシュにデータを書き込むと同時にメインメモリにも同じデータを書き込む方式
- ライトバック(Write back)
- CPUがキャッシュにデータを書き込む時に、キャッシュが一杯になるまではキャッシュに書き込み、キャッシュの内容が追い出される時に、その追い出されるデータを主メモリに書き込む方式
使用上の注意点
ユーザーから見るとキャッシュと主メモリの2つのメモリが1つにしか見えませんので、2つのメモリの内容の一貫性を保たないと主メモリの内容が失われてしまいます。
CPUしか、メモリをアクセスしないのであれば、比較的一貫性を保つのが容易ですが、DMA(Direct Memory Access)などを併用すると、一貫性を保つことが難しくなります。
Q&Aで学ぶマイコン講座(29):「DMAのメリットって何?」でも述べましたが、CPUがメモリにデータを書いた時に、ライトスルー方式だと、キャッシュにデータを書き込まれると同時にメインメモリにも同じデータが書き込まれます。もし、その後、間違ってDMAが主メモリ上のデータを書き換えてしまうと、キャッシュのデータと主メモリのデータが異なってしまいます。その後、CPUがそのデータを読み出すと、キャッシュのデータが読まれてしまい、主メモリの値と異なる値を読み出すことになります(図7参照)。
キャッシュとDMAの間でハードウェアで一貫性を保つ仕組みが入っていれば良いのですが、ない場合は、ユーザーがデータの一貫性を管理しなくてはなりません。
Copyright © ITmedia, Inc. All Rights Reserved.
関連記事
- マイコン周辺部品の選び方――電源編
マイコンユーザーのさまざまな疑問に対し、マイコンメーカーのエンジニアがお答えしていく本連載。今回は、初級者の方からよく質問される「マイコン周辺部品の選び方――電源編」です。 - マイコンに接続する推奨デカップリングコンデンサと接続方法を教えて!
マイコンユーザーのさまざまな疑問に対し、マイコンメーカーのエンジニアがお答えしていく本連載。3回目は、初心者の方からよく質問される「マイコンの電源に接続するデカップリングコンデンサの推奨タイプと接続方法」についてです。 - マイコンとEEPROMを接続する方法を教えて
マイコンユーザーのさまざまな疑問に対し、マイコンメーカーのエンジニアがお答えしていく本連載。11回目は、上級者の方からよく質問される「マイコンとEEPROMを接続する方法」についてです。 - 未使用GPIO(汎用I/O)の処理はどうすれば良いの?
マイコンユーザーのさまざまな疑問に対し、マイコンメーカーのエンジニアがお答えしていく本連載。5回目は、初心者の方からよく質問される「未使用GPIO(汎用I/O)の処理はどうすれば良いの?」についてです。 - ラッチアップって何?
マイコンユーザーのさまざまな疑問に対し、マイコンメーカーのエンジニアがお答えしていく本連載。4回目は、「ラッチアップ」に関する質問です。ラッチアップの仕組みと対策もご紹介します。 - CISCとRISC、何が違う?
マイコンユーザーのさまざまな疑問に対し、マイコンメーカーのエンジニアがお答えしていく本連載。記念すべき1回目は、マイコン初心者の方からよく質問される「CISCとRISCの違い」についてです。