分岐の対策として、キャッシュメモリ(以下キャッシュ)があります。キャシュの詳細については「Q&Aで学ぶマイコン講座(32):キャッシュとは? ―― 機能と仕組みから使用上の注意まで」を参照してください。
キャッシュとは、「低速ではあるが大容量の主メモリ」に「高速ではあるが小容量のメモリ」を組み合わせて、見かけ上、「主メモリに高速アクセスする手法」です。「高速ではあるが小容量のメモリ」をキャッシュと呼びます。
1度アクセスされた主メモリの内容のコピーをキャッシュに残しておき、次に同じアドレスがアクセスされたときは、キャッシュにアクセスすることで、メモリアクセスを高速にする方法です。
キャッシュの構成は、内蔵RAMと同じ構成の場合が多く、高速書き込み、高速読み出しが可能です。
キャッシュは外部メモリだけではなく、マイコンの内蔵メモリが低速な場合にも適用できます。今回の場合、主メモリは内蔵フラッシュメモリになります。キャッシュは、その目的からさまざまな種類があります。その中でも、ブランチキャッシュを使うと効率良く分岐することができます。ブランチキャッシュとは、命令キャッシュの中でも、ブランチ先の命令だけを取り扱うキャッシュです。プリフェッチバッファーと組み合わせて、効率よくブランチする方式です。
プリフェッチバッファーと並行して「ブランチ先の命令と次の複数命令」をコピーするブランチキャッシュを設けます。最初の分岐命令による分岐先は、フラッシュメモリをアクセスしなければなりませんが、その時に、分岐先の命令をいくつかブランチキャッシュにコピーしておきます。2回目以降の分岐命令が実行され、分岐が発生した場合、まずはブランチキャッシュの内の「ブランチ先の命令」を実行し、さらにそれに続く複数命令を実行します。その間に、さらに続く複数の命令をフラッシュメモリからプリフェッチすることにより、主メモリの読み出しのウエイトステート*1)を見かけ上なくすことができます。
*1)参考:「Q&Aで学ぶマイコン講座(45) フラッシュメモリにはウェイトステートがなぜ必要なのか」
図4に具体的な例を示します。2回目の分岐が発生すると、ブランチキャッシュから命令を読み込みます。ブランチキャッシュには、分岐先の4命令が入っていますので、これらを実行している間に、フラッシュメモリの分岐先のさらなる命令を読み出して、プリフェッチバッファーに格納します。これで、フラッシュメモリから、分岐先の命令をスムーズに読み出すことができます。
キャッシュの制御方法は、かなり複雑です。メーカー毎にさまざまな方式が採用されています。図4では、かなり簡略化して記載していますので、詳しくは「Q&Aで学ぶマイコン講座(32) キャッシュとは? ―― 機能と仕組みから使用上の注意まで」を読んでください。
Arm Cortex-Mのメモリプロテクションユニット(MPU)って何?
A-Dコンバーターの4つのトラブル事例と対策
マイコンの低消費UART、普通のUARTと何が違う?
Quad SPIフラッシュメモリの使用上の注意
マイコンの低消費電力モードの使い分け
マイコンのAXIプロトコルって何?Copyright © ITmedia, Inc. All Rights Reserved.