STM32U5
DCACHERev 2.0

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

1概要

ICACHE (8/32-GPU2D

S-bus

C-bus

Cortex-M33
with TrustZone mainline and FPU
LegendGFXMMUBus multiplexer

Master Interface

Fast bus multiplexer

Slave Interface

Fast bus multiplexer on STM32U59x/5Ax/5Fx/5Gx

M1 port

M0 portFast-bus

Slow-bus

32-KbyteKbyte)

Fast bus multiplexer on STM32U575/U585
MPCBBx: Block-based memory protection controller
MPCWMx: Watermark-based memory protection controller

DCACHE1

DCACHE2(4/16-Kbyte)
16-Kbyte(16-Kbyte)•

Peripheral not present in STM32U535/U545
Peripheral not present in STM32U535/545/575/585
Peripheral present only in STM32U5Fx/5Gx

128-bit cache refill
FLASH(512-Kbyte/2/4-Mbyte)

MPCBB1SRAM1MPCBB2SRAM2MPCBB3SRAM3MPCBB5SRAM5MPCBB6SRAM6MPCWM4BKPSRAM

MPCWM1OTFDEC1OCTOSPI1MPCWM5OTFDEC2OCTOSPI2

AHB1
peripherals
AHB2
peripherals

MPCWM6HSPI1MPCWM2MPCWM3FSMC
MPCBB4SRD

SRAM4AHB3peripherals•DCACHE1* Cortex®-M33のS-AHBシステムバスに搭載された4Kバイトまたは32Kバイトのデータキャッシュ（製品により異なる）で、外部メモリとのデータ転送のパフォーマンスを向上させる
DCACHE2*は、GPU2D M0ポートに搭載された16Kバイトのデータ・キャッシュ（一部のU5製品で利用可能）で、外部/内部メモリとのデータ・トラフィックのパフォーマンスを向上させる

適用の利点• ウェイトステートのデータアクセスがゼロに近い場合により高い性能を実現可能• 低消費電力：より大きな外部メモリではなく、小さな内部 DCACHE との間のデータの読出し／書込みをヒット*在庫状況やサイズは STM32U5 製品によって異なります。 データシートを参照してください。

2

STM32U5シリーズには、最大2つのデータキャッシュが内蔵されています：• DCACHE1は、4キロバイトまたは32キロバイトのデータ・キャッシュです（製品により異なります）。
• DCACHE2は、16キロバイトのデータ・キャッシュです（一部のU5製品で使用可能）。
DCACHE1は、Cortex-M33のS-AHBバス上に配置され、外部RAMメモリ領域（OCTOSPI、HSPI、FSMC）のみをキャッシュします。
実際、DCACHE1の前にバス・マトリックス・デマルチプレクス・ノードを配置することで、SRAM領域やペリフェラル領域へのS-AHBバス・メモリ要求は、メインAHBバス・マトリックスに直接ルーティングされ、DCACHE1がバイパスされます。
また、DCACHE1による外部メモリへのアクセスと、コアによる内部SRAMへのアクセスが一致することで、マイクロコントローラの全体的な性能も向上します。
図では、外部メモリにアクセスするためのDCACHE1のマスターバスは、内部SRAMにアクセスするためのバスとは完全に独立しています。
DCACHE2は、GPU2DのポートM0によって駆動されるAHBバス上に配置され、アクセスされるすべてのメモリ領域をキャッシュします。外部メモリのみをキャッシュし、内部メモリについてはDCACHE2をバイパスすることで、最高のパフォーマンスを実現します。
両DCACHEは、キャッシュラインの再ロード、キャッシュラインの退避、および外部メモリへの書き込みストアを自律的に処理します。 性能は、ヒット・アンダー・ミスのサポートとクリティカル・ワード・ファース
トのリフィル・ポリシーの2つの機能によって達成されています。 これらのデータキャッシュは、データサイズが大きく消費電力が大きいメインメモリではなく、その内部メモリにあるデータにアクセスすることで、マイクロコントローラの消費電力を削減するのに役立ちます。

2

DCACHE1/2 の主な機能（1）•マルチバスインタフェース：•

データスレーブポート（32 ビット）：•

DCACHE1 はCortex®-M33 S-AHBからメモリ要求を受ける システムバス•DCACHE2 はGPU2DのM0ポートからメモリ要求を受ける••

マスタポート（32ビット）：外部メモリとのリ
フィルリクエスト、ダーティデータのライトバック、データのライトスルーを実行•

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

DCACHE2の場合、データスレーブポートインタフェースはGPU2DからのM0ポートです3

マルチバスインタフェースは、メモリトラフィック間の潜在的競合を最小限に抑えます。
- 32 ビットデータスレーブポートは、32 ビット データ スレーブ ポー
トは、DCACHE1 の場合は Cortex®-M33 S-AHB システム バスから、DCACHE2 の場合は GPU2D の M0 ポートから命令およびデータ メモリ リクエストを受信します。
- 32 ビットマスタポートは、外部メモリとの間の不足しているリクエストのリフィル、ダーティデータ書き戻し、またはデータライトスルーを実行。これらのメモリは、OctoSPI および FMC コントローラを介してアクセスされる外部の Flash および RAM です。
- 2 番目のスレーブポートはレジスタアクセス用
MPU によって外部メモリアクセスがキャッシュ不可としてマークされている場合、DCACHE はバイパスされます。リクエストは、同じクロックサイクルで DCACHE1 マスタポート上の外部メモリに変更なしで転送されます。

3

DCACHE1/2 の主な機能（2）••

任意の外部メモリにおいて、ゼロに近いウェイトステートのデータアクセス性能：•

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

ヒットアンダーミス機能•

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

2 ウェイセットアソシアティブアーキテクチャと pLRU-t書換え方式によるヒット率の向上•

AHB ラップバースト（キャッシュラインサイズに整列）によるキャッシュラインの最適なリフィル•

ライトバック方式とライトスルー方式•

バイト、ハーフワード、およびワードの書込み操作

DCACHE2 の場合、Fata スレーブ ポート インタフェースは GPU2D の M0 ポートです

4

DCACHE1/2 は、次の理由により、ゼロに近いウェイトステートのデータ読出し／書込みアクセス性能を提供します。
- キャッシュヒット時にゼロウェイト状態- （以前のキャッシュミスによる）ラインリフィル中に新しいプロセッサリクエストを処理可能なヒットアンダーミス機能- キャッシュミス時のプロセッサのストールを最小限に抑える、クリティカルワードファース
トのリフィル方式
ヒット率は、次のことによって改善されます。
- 2 ウェイセットアソシアティブアーキテクチャ- バイナリツリー（または pLRU-t）書換え方式に基づいた、疑似最低使用頻度。このアルゴリズムは、ハードウェアの複雑さと性能の良い交換条件と言えます。
キャッシュラインは、最初にプロセッサのパイプラインがリクエストしたデータを伝送するために、WRAP4 AHB のトランザクション順序を実装することで、クリティカルワードファーストで転送されます。
ライトバック方式とライトスルー方式がサポートされ、アドレス指定されたデータ領域の選択は MPU 設定に依存します。
DCACHE1/2 は、バイト、ハーフワード、ワードの、すべてのデータサイズをサポートします。

4

DCACHE1:2 の主な機能（3）•性能の監視：•••

外部メモリではなく DCACHE にアクセスすることで消費電力を低減•

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

ソフトウェアによってキャッシュのコヒーレンシを管理するためのメンテナンス操作：••••

DCACHE2 の場合、Fata スレーブ ポート インタフェースは GPU2D の M0 ポートです

読出しヒット + 読出しミスカウンタ
書込みヒット + 書込みミスカウンタ

完全無効化
プログラム可能なアドレス範囲の無効化、消去して無効化、または消去

エラー管理（エラーフラグ、オプションの割込みの発生）：DCACHE（ラインエビクションまたはクリーン）によって開始されたマスタポートリクエスト
5に返されたエラーの検出

DCACHE1/2 は、読出しと書込みのトランザクション用に 1 個ずつ、計 2 個の 32 ビットヒットカウンタと、読出しと書込みのトランザクション用に 1 個ずつ、計 2 個の 16 ビットミスカウンタの性能カウンタを実装しています。
この性能の監視により、最も高性能なデータトラフィックを実現するために、キャッシュ格納可能性とライトバック/ライトスルー方式に従って、データ配置を分析および最適化できます。
消費電力が低減されます。ほとんどのデータアクセスは、より大容量の外部メインメモリとの間ではなく、内部キャッシュメモリとの間で実行されます。
各キャッシュラインの TAG RAM にある専用のセキュアビットは、非セキュアリクエストがセキュア DCACHE1 エントリにヒットするのを防ぎます。
GPU2D トラフィックは安全ではないため、DCACHE2 は TrustZone をサポートしません。
ソフトウェアキャッシュのコヒーレンシは、メモリマップドレジスタによって制御されるメンテナンス操作によって実行されます。
これらの命令は、以下のとおりです。
高速コマンドであるキャッシュの完全無効化操作
プログラム可能なアドレス範囲に関連する無効化、消去して無効化、および消去操作
データキャッシュは、リセット後に自動的に無効化されます。
アドレス範囲のメンテナンス操作は、通常 DMA チャネルとプロセッサコアによって共有されるバッファのコヒーレンシを維持するために使用されます。
これらのコマンドは割込み不可で、操作の終了時に特定のフラグが立てられ、場合によっては割込みが発生します。
DCACHE 自体によってラインエビクションまたはクリーン操作のリクエストが開始されたときに、DCACHE のマスタポートにバスエラーが返されたときには、エラーフラグが立てられ、場合によっては割込みが発生します。
マスタポートがスレーブポートで受信したリクエストを転送する場合、DCACHE は単にマスタポートで受信した AHB レスポンスをプロセッサに転送します。

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

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

4 KB

構成

2 ウェイセットアソシアティブ

方式の書込みと割当て

ライトスルー、書込み割当てなし

ライトバック、書込み割当てあり

グローバル

アドレス範囲ごと

メンテナンス操作消去✓

消去して無効化

✓

無効化

✓

✓

6

この表は、データキャッシュの一覧を示しています。（製品により異なる）：- 16または32バイトのキャッシュラインサイズ 、4 または8ワードのバーストを使用して転送- 4または16キロバイトキャッシュ- 2または4 ウェイセットアソシアティブ
データキャッシュは、次の書込み方式と割当て方式を実装します。
- ライトスルー、書込み割当てなし。ストアミスが発生した場合、DCACHE1/2がバイパスされ、データはメモリに直接書き込まれます。
- ライトバック、書込み割当てあり。ストアミスが発生した場合、キャッシュラインがメモリから取得され、プロセッサから受信したデータで更新されます。
結果として得られるキャッシュラインは、ダーティビットがセットされた状態でデータキャッシュに書き込まれます。
サポートされているメンテナンス操作は、次のとおりです。
- 無効化：全体およびアドレス範囲ごと- 消去して無効化：アドレス範囲ごと- 消去：アドレス範囲ごと

6

ユースケース：CoreMark の性能の概要
コードとデータ位置による性能比較
FMC を介した外部メモリのコード

700

SRAM3 の OctoSPI データを介した外部メモリのコード

内部 Flash のコード（ICACHE でキャッシュされない）

2 ウェイ ICACHE によってキャッシュされる内部 Flash のコード

622

CoreMark スコア（@160MHz）

609

622

625

600
522
487

500

444422

430

400
300
2007410021263977993907

このスライドは、プロセッサのコア周波数が 160 MHz のときに、データキャッシュと命令キャッシュが性能に与える影響を CoreMark スコアで表したものです。
データと命令の位置とともに、ICACHE および DCACHE1 でのキャッシュ格納可能性が異なる 4 つのシナリオについて説明します。
最初のケースでは、コードは外部メモリにあり、S-AHB バス上の FMC を介してアクセス可能で、ICACHE は関与しません。
性能はコードとデータが DCACHE1 でキャッシュされずに FMC を介してアクセスされたときに最低になるため、コードとデータは S-AHB バス上で多重化されます。
データが SRAM3 にあり、まだ FMC からコードをフェッチする際にも使用される S-AHB に転送されている場合は、多少改善されます。
DCACHE1 が有効な場合、性能は大幅に向上しますが、S-AHB バスと DCACHE の両方で、引き続きコードとデータの共有による制限を受けます。
CoreMark スコア 487 の最高の性能は、データが SRAM3 にあるときに達成されます。コードとデータは引き続き S-AHB バスを共有しますが、DCACHE1はコード･ストレージ専用です。
FMC を介してアクセス可能なコードは、コードおよびデータトラフィックが C-AHB バスと S-AHB バスの間で分割される ICACHE のアドレス再配置により、ICACHE で有利にキャッシュできます。
2 番目のケースでは、コードは外部メモリにあり、S-AHB バスまたは C-AHB バスの OctoSPI を介してアクセス可能です。
性能は、データが SRAM3 にあり、コードが OctoSPI 外部 Flash にある場合で、S-AHB バスを介してアクセス可能であり、DCACHE1 でキャッシュされていない場合、低くなります。
コードが OctoSPI 外部 Flash にあり、C-AHB バスを介してアクセス可能で、ICACHE でキャッシュされていない場合も、性能は低くなります。
どちらの場合も、CoreMark スコアはわずかに 39 点です。
S-AHB バスを介してアクセス可能なコードが DCACHE1 にキャッシュされると、性能は大幅に向上しますが、S-AHB バスはコードとデータの両方の転送に使用されるため、依然としてボトルネックとなります。
C-AHB バスを介してアクセス可能なコードが ICACHE でキャッシュされると、ほぼ最適な性能が得られます。これには、ICACHE にアドレス再配置を実装する必要があります。この場合、コードは C-AHB バスで転送され、データは S-AHB バスで転送されます。
3 番目のケースでは、コードは内部 Flash に格納され、ICACHE でキャッシュされません。
データが OctoSPI PSRAM に格納されている場合、データがキャッシュされていないと性能が低くなります。
データが DCACHE1 にキャッシュされている場合、性能は SRAM3 にあるときよりも大幅に向上し、さらに良好になります。CoreMark スコアは 430 ではな
く 444 になります。
最後のケースでは、コードは内部 Flash にあり、2 ウェイセットアソシアティブモードに設定された ICACHE でキャッシュされます。
OctoSPI PSRAM に格納されたデータがキャッシュ不可の場合、性能は低くなり、データがキャッシュ不可のまま FMC を介してアクセス可能な SRAM に格納されている場合、性能は多少良くなります。
いずれの場合も、このデータを含むアドレス範囲をキャッシュ可能としてマークすると、CoreMark スコア 622 と同じ良好な性能が得られます。
最高の性能を得るには、データを SRAM3 に、命令をキャッシュ可能な内部 Flash に保持してください。

7

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

DCACHE

割込みイベント

イベントフラグ

割込み有効化ビット

割込みクリアビット

説明

機能エラー

DCACHE_SR[ERRF]

DCACHE_IER[ERRIE]

DCACHE_FCR[CERRF]

DCACHE 自体によって開始されたマスタポートトランザク
ションでのエラー（エビクションまたはクリーン操作）

ビジー状態の終了

DCACHE_SR[BSYENDF]

DCACHE_IER[BSYENDIE]

DCACHE_FCR[CBSYENDF]

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

DCACHE_SR[CMDENDF]

DCACHE_IER[CMDENDIE]

DCACHE_FCR[CCMDENDF]

キャッシュ範囲操作（無効化および/またはクリーン）の終了時にコマンドビジー状態が終了した場合

DCACHE は、スレーブポート（最初のコア S-AHB バストランザクションを受信したポート）でのデータリクエストの結果として発生するマスタポートトランザクションの AHB バスエラーを管理しないが、これらのエラーをスレーブポートに戻す
8

すべての DCACHE 割込みソースは、同じ固有の割込み信号 dcache_it を発生させ、同じ割込みベクトルを使用します。
DCACHE グローバル割込みには、次の 3 つのソースがあります。
- ダーティキャッシュラインエビクションまたはクリーン操作のために、
DCACHE 自体によって開始されたデータリクエスト時のエラー検出。
DCACHE ステータスレジスタの ERRF ビットがセットされます。
- 完全な無効化操作の終了。DCACHE ステータスレジスタの BSYENDFビットがセットされます。
- キャッシュ範囲のメンテナンス操作（無効化、消去して無効化、または消去）の終了。DCACHE ステータスレジスタの CMDENDF ビットがセットされます。
DCACHE はまた、すべての AHB バスエラー（セキュリティの問題、アドレスデコードの問題など）をマスタポートから S-AHB スレーブ ポートに伝播します。 典型的なケースは、初期データ要求によって開始され、キャッシュ内でミスした誤ったリフィルリクエストです。

8低消費電力モード
低消費電力モード

DCACHE の状態

RUN

アクティブ

SLEEP

アクティブ

STOP

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

STANDBY

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

無効の場合、DCACHE1/2 はバイパスされ、内部タグおよびデータメモリにはアクセスされない• 各データの読出し/書込みがより消費電力の多いメイン（外部）メモリとの間で行われるという欠点があるため、DCACHE ではほとんど電力を消費しない

9

製品レベルでは、DCACHE1/2 を使用すると、ほとんどの場合、より大きく電力を消費するメインメモリではなく、内部 DCACHE との間でデータの読込みや保存が行われるため、消費電力が削減されます。 キャッシュされたメインメモリが外部にあるため、この削減はさらに大きくなります。その結果、DCACHE1/2 とそのマスタはさまざまな低電力モードで同じ状態になります。
マイクロコントローラが STOP モードの場合、ユーザは DCACHE をパワーダウンするかどうかを決定できます。これには、メンテナンス操作を完全に消去して無効化する必要があります。
DCACHE が無効な場合、DCACHE はバイパスされます。 システム バス入力リクエストはマスタポートに転送されるだけです。

© 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.

このプレゼンテーション以外に、次のプレゼンテーションを参照できます。
• 命令キャッシュ• セキュリティ• FMC• OCTOSPI10