ARM Cortex

ご購入はこちら
5000 円 STM32F7 ボードで ARM の最新テクノロジーをかい間見てみる
400MHz 級制御プロセッサ
ARM Cortex-M7 初体験
第 4 回 2 大高速化機能「キャッシュ」と「密結合メモリ」の構成
今回は,超高性能 ARM Cortex-M7 搭載 STM32F7
(ST マイクロエレクトロニクス)に内蔵されている
キャッシュや密結合メモリなどの高速化機能を紹介し
ます.
Cortex-M7 の高速化機能
プログラムを高速に実行するための仕組みとして,
Cortex-M7 は従来の Cortex-M4 に比べて次の機能が内
蔵されています.
(1)キャッシュのサポート
(2)密結合メモリ(TCM:Tightly Coupled Memory)
のサポート
(3)倍精度浮動小数点のサポート(オプション)
ただし STM32F7 では,
(3)の倍精度浮動小数点はサ
ポートしておらず,単精度浮動小数点のサポートのみ
です(STM32F7x8/x9 では倍精度をサポートしている
ものもある)
.これは Cortex-M4 と違いがありません.
その 1:キャッシュ
● 構成
Cortex-M7 の性能向上に寄与しているのは,動作周
波数の向上もありますが,キャッシュのサポートによ
るところが大きいでしょう.STM32F7 では 4K バイ
トの命令キャッシュ(2 ウェイ)と 4K バイトのデータ・
キ ャ ッ シ ュ(4 ウ ェ イ )を サ ポ ー ト し て い ま す
(STM32F7x2/x3 ではそれぞれ 8K バイト,STM32F7
x8/x9 ではそれぞれ 16K バイト).
キャッシュの ON/OFF にはキャッシュ制御レジス
タ CCR(Cache Control Register)を使用します.図 1
ビット 31
に示すように,IC ビットを‘1’に設定することで命令
キャッシュが ON,DC ビットを‘1’に設定することで
データ・キャッシュが ON になります.
ただし,キャッシュは Cortex-M7 の AXIM インター
フェースに接続されています.図 2 に STM32F7 の内
部データ・バスの構造を示します.このように命令パ
ス(経路)は,フラッシュ・メモリからフラッシュ・
ア ク セ ラ レ ー タ(ART)を 通 る 経 路 と,AXIM イ ン
ターフェースを経由する経路があります.キャッシュ
にヒットするのは AXIM からの経路だけです.
● 操作用レジスタ
キャッシュ操作関連のレジスタを表 1 に示します.
表 1 で PoU や PoC という単語がありますが,それぞ
れ,Point of Unification と Point of Coherency を意味
します.PoU はそのキャッシュのみの操作,PoC はコ
ヒーレンシを保証する操作を示します.要するに,
PoU は L1 キャッシュから L2 キャッシュ(または外部
メモリ)への操作,PoC は最終レベル(L2 キャッシュ,
L3 キャッシュ,あるいは外部メモリの一番外側にあ
るメモリ)への操作を示します,L1 キャッシュしか実
装しない STM32F7 では,実質的に PoU しかサポート
していません(PoU と PoC の動作に違いがない)
.
キャッシュ操作レジスタに,セット / ウェイを書き
込む場合は少し面倒です.その構成を図 3 に示します.
要するに,アドレスの下位 11 ビット(命令キャッシュ
の場合)または下位 10 ビット(データ・キャッシュの
場合)の上位に,ウェイ番号を付加した値を書き込み
ます.
ちなみに,STM32FCubeF7 ではキャッシュ操作関
数として表 2 のものが用意されています.
19 18 17 16 15
予 約
BP:分岐予測の制御(ON:1,OFF:0)
(Cotex-M7ではこのビットは無意味で,
値によらず分岐予測は常にONのようだ)
中森 章
10 9
予 約
8
7
5
4
3
2
1
0
省 略
DC:データ・キャッシュのON/OFFを制御(ON:1,OFF:0)
IC:命令キャッシュのON/OFFを制御(ON:1,OFF:0)
図 1 キャッシュ制御レジスタ CCR のキャッシュ制御ビット
168
第 1 回 最新 ARM Cortex-M7 コア入門(2016 年 11 月号)
第 2 回 高性能リアルタイム向け Cortex-M7 の演算性能(2016 年 12 月号)
第 3 回 ハードもソフトも至れり尽せり…Cortex-M7 内蔵 STM32F7 初体験(2017 年 1 月号)
2017 年 2 月号