STM32U5ICACHE
Rev 1.0

こんにちは。このプレゼンテーションでは、STM32U5 マイクロコント
ローラファミリのすべての製品に内蔵されている ICACHE モジュールについて説明します。

1概要
Cortex®-M33
S-AHB（システム）

C-AHB（コード）ICACHE
M2

M1
128 ビット

32 ビット

FLITF

32 ビットICACHE は 8 KB の命令キャッシュで、Cortex®M33 の C-AHB コードバスに接続されており、内部メモリまたは外部メモリから命令をフェッチする（またはデータを読み出す）ときの性能を向上させる

DCACHE

32 ビット
AHB

FLASH

適用の利点

SRAM1

• ウェイトステートプログラムフェッチがゼロに近い場合により高い性能を実現可能

SRAM2
SRAM3
OctoSPI1

外部メモリ

OctoSPI2

外部メモリ

FMC

外部メモリ

• 再配置ロジックにより、内部または外部の任意のメモリ範囲をキャッシュできます。
• 低消費電力：より大きな内部メモリや外部メモリではなく、小さな内部 ICACHE からのプログラムフェッチをヒット
2

命令キャッシュ（ICACHE）は、 Cortex®-M33 プロセッサの C-AHB コードバスに導入されている機能で、内部 Flash メモリまたは SRAM メモリから、または OctoSPI1 および 2 または FMC イン
タフェースを介して外部メモリから、命令やデータをフェッチする際の性能を向上させます。
ICACHE では、組込みのキャッシュ操作により、ほとんどのユースケースでのプログラムフェッチで、ゼロに近いウェイトステートの性能を実現できます。
この性能は、ヒットアンダーミスのサポートと、クリティカルワードファーストのリフィル方式という 2つの機能によって達成されます。
内部 Flash は専用の 128 ビット AHB 高速バスによってアクセスされます。STM32L5 マイクロコン
トローラでの ICACHE の実装と比較したとき、これが唯一の違いです。
SRAM 1、2、3、OctoSPI 1、2、および FMC は、32 ビット AHB 低速相互接続を介してアクセスされます。
この 2 つのマスタアーキテクチャは、外部メモリからのキャッシュリフィルパスを、Flash メモリへの広帯域パスから切り離します。
再配置ロジックにより、4 つの内部または外部メモリ範囲を、コード領域範囲[0x0000_0000:0x1FFF_FFFF] のエイリアスアドレスとして定義することで、キャッシュすることができます。
命令キャッシュは、サイズが大きくて消費電力も多いメインメモリからではなく、内部 ICACHE の命令やデータにアクセスすることで、マイクロコントローラの消費電力を削減します。
ソフトウェアによって ICACHE をダイレクトマップとして設定すると、サポートされている 2 ウェイセットアソシアティブ構成と比較して、消費電力をさらに下げることができます。

2

レジスタインタ
フェース
領域 0 設定

ICACHE の主な機能（1）32 ビットの実行ポート（C-AHB コードバス）
AHB

ICACHE
割込みリクエスト•

アドレス再配置

領域 1 設定
領域 2 設定

マルチバスインタフェース：•

実行スレーブポート（32 ビット）：Cortex®M33 C-AHB コードバスからメモリリクエストを受信•

マスタ 1 ポート（128 ビット）：内部メモリ（Flash および SRAM）へのキャッシュラ
インのシングルリフィルリクエストを実行•

マスタ 2 ポート（32 ビット）：外部メモリ（OctoSPI1/2 & FMC インタフェースを介した外部 Flash & RAM）へのリフィルリク
エストを実行•

2 番目のスレーブポート：レジスタのアクセス用

2 ウェイ

領域 3 設定
ヒット/ミス制御
ロジック

ヒットモニタ

タグメモ
リ

データメモリ
128 ビットライン

pLRU-t

ミスモニタ
AHB
コントロール

AHB

ステータス（フラグ）AHB

スレーブポートレジスタ

割込み管理

128 ビット
マスタ 1
ポート

32 ビットマスタ 2ポート3

マルチバスインタフェースは、メモリトラフィック間の潜在的競合を最小限に抑えます。
- 32 ビット実行スレーブポートは、Cortex®-M33 C-AHB コードバ
スからメモリリクエストを受信- 128 ビットマスタ 1 ポートは、内部メモリ（Flash および SRAM）からのキャッシュラインリフィルを実行- 32 ビットマスタ 2 ポートは、外部メモリ（OctoSPI1、2、およびFMC インタフェースを介してアクセスする外部 FLASH およびRAM）からのキャッシュラインのリフィルを実行- 2 番目のスレーブポートはレジスタアクセス用
MPU によって外部メモリアクセスがキャッシュ不可としてマークされている場合、ICACHE はバイパスされます。リクエストは、同じクロックサイクルで ICACHE マスタ 1 または 2 のポート上の外部メモリに転送されます。アドレス再配置機能により、アドレスのみが変更されることがあります。

3

レジスタインタ
フェース
領域 0 設定

ICACHE の主な機能（2）32 ビットの実行ポート（C-AHB コードバス）
AHB

ICACHE
割込みリクエスト•

アドレス再配置

ゼロに近いウェイト状態での命令（またはデータ）アクセス性能：•

キャッシュヒット時にゼロウェイトステート•

ヒットアンダーミス機能

2 ウェイ

•

クリティカルワードファーストのリフィル方式、キャッシュミス時に最小のプロセッサのストール

データメモリ
128 ビットライン•

2 ウェイセットアソシアティブアーキテクチャと pLRU-t
書換え方式によるヒット率の向上•内部 FLASH および AHB ラップバースト専用のラー
ジバスによるキャッシュラインの最適なリフィル•

デュアルマスタポートによる内部（高速）および外部（低速）のメモリトラフィックの分離

領域 1 設定
領域 2 設定
領域 3 設定

スレーブポートレジスタ

割込み管理

ヒット/ミス制御
ロジック

ヒットモニタタグメモ
リpLRU-t

ミスモニタ
AHB
コントロールステータス（フラグ）

AHB

AHB

•

128 ビット
マスタ 1
ポート

32 ビットマスタ 2
ポート

性能の監視：ヒット + ミスカウンタ

4

ICACHE は、次の理由により、ゼロに近いウェイトステートのデータ読出し／書込みアクセス性能を提供します。
- キャッシュヒット時にゼロウェイト状態- （以前のキャッシュミスによる）ラインリフィル中に新しいプロセッサリクエストを処理するヒットアンダーミ
ス機能- キャッシュミス時のプロセッサのストールを最小限に抑える、クリティカルワードファーストのリフィル方式
ヒット率は、次のことによって改善されます。
2 ウェイセットアソシアティブアーキテクチャ
バイナリツリー（または pLRU-t）書換え方式に基づいた、疑似最低使用頻度。このアルゴリズムは、ハードウェアの複雑さと性能の良い交換条件と言えます。
128 ビットの幅の広いバスのおかげで、Flash からのキャッシュラインのリフィルを実行する際に必要なのはシングルデータ転送だけです。これは、128 ビットが正確に 16 バイトのキャッシュライン 1 本を表すためです。
外部メモリから読み出されたキャッシュラインは、最初にプロセッサのフェッチャがリクエストした命令を伝送するために、WRAP4 AHB のトランザクション順序を実装することで、クリティカルワードファーストで転送されます。
デュアルマスタポートアーキテクチャは、内部と外部のメモリトラフィックを分離します。たとえば、SRAMフェッチは、外部メモリからのキャッシュラインのリフィルによってストールすることはありません。
割込みサービスルーチンが内部 Flash または SRAM に配置されると、割込み遅延が最小化されます。
ICACHE は、32 ビットのヒットカウンタ 1 つと 16 ビットのミスカウンタ 1 つから成る性能カウンタを実装しています。
この性能の監視により、最も高性能なコードトラフィックを実現するために、キャッシュ格納可能性に従ってコード配置を分析および最適化します。

4レジスタインタ
フェース
領域 0 設定

ICACHE の主な機能（3）32 ビットの実行ポート（C-AHB コードバス）
AHB

ICACHE割込みリクエスト•

アドレス再配置ロジックが、コードメモリ空間以外のキャッシュ可能領域（通常は外部メモリ）を定義（最大 4 つの追加のキャッシュ可能領域）

2 ウェイ

•

消費電力を本質的に低減しており、さらにダイレク
トマップ設定で改善

データメモリ
128 ビットライン•

TrustZone® セキュリティをサポート•

ソフトウェアによってキャッシュのコヒーレンシを管理するためのキャッシュの完全無効化操作•

エラー管理：キャッシュ可能な予期しない書込みア
クセスの検出（エラーフラグ、オプションの割込みの発生）

アドレス再配置

領域 1 設定
領域 2 設定
領域 3 設定
ヒット/ミス制御
ロジック

ヒットモニタタグメモ
リ

pLRU-t

ミスモニタ
AHB
コントロール

AHB

ステータス（フラグ）AHB

スレーブポートレジスタ

割込み管理

128 ビット
マスタ 1
ポート

32 ビット
マスタ 2
ポート

5

再配置ロジックは、アドレスゼロから始まる 512 MB のコードメモリのアドレス範囲を超えてキャッシュ可能領域を拡張する際に非常に便利です。
最大 4 つの外部領域を定義でき、それぞれにマスタ 1 またはマスタ 2 のリフィルポートを選択できます。
ICACHE を使用すると消費電力が低減されます。ほとんどの命令アクセスは、メインメモリからではなく内部キャッシュメモリから実行されます。
ICACHE をデフォルトの 2 ウェイセットアソシアティブモードではなくダイレクトマップキャッシュに設定することで、タグおよびデータメモリの 2 つではなく 一部分のみがアクセスされるため、消費電力の削減に寄与します。
ただし、ダイレクトマップ構成は、同時に必要な 2 つのプログラム間の距離がキャッシュサイズの整数倍である場合、性能に影響することがあります。
各キャッシュラインの TAG RAM にある専用のセキュアビットは、非セキュアリクエストがセキュアICACHE エントリにヒットするのを防ぎます。
無効化メンテナンス操作は、通常はメインメモリの内容が変更された場合に、命令キャッシュの内容全体を無効にするためにサポートされています。この操作は、メモリマップドレジスタにアクセスすることにより、ソフトウェアによって制御されます。これは割込み不可の高速コマンドで、操作の終了時に特定のフラグが立てられ、場合によっては割込みが発生します。
予期しないキャッシュ可能な書込みアクセスを実行ポートで受信したときには、エラーフラグが立てられ、場合によっては割込みが発生します。
ICACHE は、マスタ 1 またはマスタ 2 ポートに返された AHB バスエラーを管理しません。単にマスタポートで受信した AHB レスポンスをプロセッサに転送します。

5概要
キャッシュラインサイズ

16 バイトキャッシュサイズ

8 KB

構成

2 ウェイセットアソシア
ティブ、またはダイレク
トマップ

メンテナンス操作

無効化

再配置する領域数4

再配置するメモリ領域の範囲の最小単位

2 MB

6

この表は、命令キャッシュの一覧を示しています。
- 4 ワードのバーストトランザクションまたは 1 クワッドワードのシングルデータトランザクションで転送される、16 バイトのキャッシュラインサイズ- ダイレクトマップキャッシュとして設定可能な 2 ウェイセットアソシ
アティブの 8 KB キャッシュ
グローバルな無効化メンテナンス操作がサポートされています。
ICACHE は、最大 4 つの外部メモリ領域について、コード領域にエイリアスアドレスを定義します。
アドレス再配置を適用して、コードエイリアスのアドレスを外部物理転送先アドレスに変換します。領域サイズは、最小 2 MB、最大128 MB です。

6性能：CoreMark ベンチマーク
STM32U585 のテスト条件：- システムクロックは 16 MHz（外挿）- Flash で実行されるコード
CoreMark Execution in Flash,data in SRAM1 on S-Bus (not cached)
70

60

Iteration/sec

50

40
ICACHE OFF
ICACHE on, 1-Way (Direct mapped)

30

ICACHE on, 2-Ways
20

1000WS

1WS

2WS

3WS

4WS

5WS

Flash latency

7

このチャートでは、ダイレクトマップモードと 2 ウェイセットアソシア
ティブモードの性能は同じです。
これは、ベンチマーク全体が ICACHE に収まるためです。
コードが ICACHE 内に収まれば、Flash の遅延は性能には影響を与えません。
ICACHE が無効の場合、Flash 遅延が大きいほど性能は低下します。

7

ICACHE のエラーと割込み
割込みベクタ

割込みイベント

イベントフラグ

割込み有効化ビット割込みクリアビット

説明機能エラー

ICACHE_SR[ERRF]

ICACHE_IER[ERRIE]ICACHE_FCR[CERRF]

サポートされていないキャ
ッシュ可能な書込みリクエ
ストを検出

ビジー状態の終了

ICACHE_SR[BSYENDF

ICACHE_IER[BSYENDIE]ICACHE_FCR[CBSYENDF]

キャッシュの（完全）無効化
操作の最後にキャッシュビ
ジー状態が終了した場合

ICACHEICACHE はマスタ 1 またはマスタ 2 ポートトランザクションの AHB バスエラーを管理しませんが、それらを実行ポート（最初のコア C バストランザクションを受信したポート）に戻します。

8

ICACHE グローバル割込みには、次の 2 つのソースがあります。
- キャッシュ可能な書込みリクエストのエラー検出。ICACHE ス
テータスレジスタの ERRF ビットがセットされます。
- 完全な無効化操作の終了。ICACHE ステータスレジスタのBSYENDF ビットがセットされます。
マスタ 1 またはマスタ 2 のポートリクエストで発生するエラーのICACHE 管理はありません。誤応答は ICACHE を介して CortexM33 に戻されます。

8低消費電力モード
ICACHE は、Cortex®-M33 C-AHB バスクロックでクロック供給されます。
• Cortex®-M33 コアと同じクロックドメイン：電力モードに関してクロック周波数と動作が同じ

モード

説明

RUN

アクティブ

SLEEP

アクティブ

STOP

凍結、ICACHE レジスタの内容は保持されるオプション：STOP モードで ICACHE をパワーダウンするための電源コントローラの専用制御ビ
ット

STANDBY

パワーダウン
ペリフェラルは、STANBY モード終了後に再初期化する必要があります

無効の場合、ICACHE はバイパスされ、内部タグおよびデータメモリにはアクセスされない• 各命令のフェッチがより消費電力の多いメインメモリとの間で行われるという欠点があるため、ICACHE ではほとんど電力を消費しない
9

ICACHE は、Cortex M33 コアと同じ周波数でクロック供給されます。
これは、ICACHE が Cortex-M33 がリクエストした命令のみをキャッシュするためです。
これにより、さまざまな低消費電力モードで、ICACHE と CortexM33 は同じ状態になります。
マイクロコントローラが STOP モードの場合、ユーザは ICACHE をパワーダウンするかどうかを決定できます。
ICACHE が無効になっている場合、機能している再配置メカニズ
ムを除き、ICACHE はバイパスされます。C-AHB バスリクエストは、再配置されているかどうかにかかわらず、マスタポートに転送されるのみです。
したがって、タグおよびデータメモリはアクセスされず、各命令のフェッチはより消費電力の多い対象のメインメモリとの間で行われるため、ICACHE の消費電力は少なくなります。
電力消費を下げるため、性能モニタはデフォルトで無効になっています。

© STMicroelectronics - All rights reserved.
ST logo is a trademark or a registered trademark of STMicroelectronics International NV or its affiliates in the EU and/or other countries.
For additional information about ST trademarks, please refer to www.st.com/trademarks.
All other product or service names are the property of their respective owners.

このプレゼンテーション以外に、次のプレゼンテーションを参照できます。
• データキャッシュ• Flash• FMC• OCTOSPI10