STM32G4 - M4コア
Arm Cortex®-M4 Core
1.0版

こんにちは。STM32G4マイクロコントローラファミリに使用されているArm Cortex-M4コアのプレゼンテーションにようこそ。

1Arm®Cortex®-M4プロセッサ概要
Arm Cortex®-M4• Armv7-Mアーキテクチャ

Nested Vectored Interrupt Controller• ハーバード・アーキテクチャ、3-ステージ･パイプライン
浮動小数点ユニット•

シングル･インストラクション複数データ･インストラクション• メモリ･プロテクション･ユニット（MPU）• 統合されたネスト型ベクタ割り込みコントローラ（NVIC）

Interrupt requests

Floating-Point Unit

Arm v7-M Core•

2SIMD instructions

Memory Protection Unit
Watchpoint
unit

32-bitIcode
AHB-Lite

Breakpoint
unit

32-bitIcode
AHB-Lite

Embedded Trace
Macrocell

32-bitIcode
AHB-Lite

Instrumentation
Trace Macrocell

Serial WireJTAG port

Trace PortInterface
Unit

Serial Wire/JTAG

Serial Wire Output /4-bit trace port

• 侵襲性、非侵襲性デバッグ
高いエネルギー効率

ハイパフォーマンス信号処理

MCU+DSP要件に対応するエネルギー
効率の高い32ビット組込みプロセッサ

SIMD命令によりデータ信号処理を加速

Cortex®-M4コアは、32ビットRISCコアのArm Cortex®-Mグループのコアです。Armv7-Mアーキテクチャを実装し、3段パイプラインを備えています。ス
カラー整数命令に加えて、DSPアルゴリズムのパフォーマンスを向上させるために役立つ単精度浮動小数点単位とSIMD整数命令もサポートしています。
Cortex®-M4には3つのAHB-Liteマスタポートがあり、同時に命令とデータトランザクションを実行できます。
STM32G4ペリフェラルから受信した割り込みは、ネスト型ベクタ割り込みコントローラ（またはNVIC）によって処理されます。
メモリプロテクションユニット（MPU）は、コアによって開始された命令およびデータ要求への属性とアクセス許可の割り当てを担当します。
多くのデバッグユニットが実装されています。
シリアルワイヤまたはJTAGデバッグポート（SWJ-DP）と外部デバッグプローブの間の通信には、シリアルワイヤまたはJTAGの2つのプロトコルを使用できます。
侵略性デバッグは、ブレークポイントとウォッチポイントユニットによって実行されます。
非侵襲性デバッグに関してCortex®-M4は、エンベデッド・トレース・マクロセル（またはETM）とインストルメンテーショントレースマクロセル（またはITM）の2つのリアルタイムトレース機能をサポートします。トレースパケットは、トレースポートインタフェイスユニット（またはTPIU）を通じて外部トレースポートアナライザに出力されます。
2

Arm®Cortex®-Mの互換性

3• すべてのアプリケーションにシームレスなアーキテクチャ
Cortex-M0 & M0+

Cortex-M3

超低消費電力最初のCortex®-MCPU

Cortex-M4

バイナリとツールの互換性

Cortex-M7

ハイパフォーマンス
最高のパフォーマンス

STM32G4マイクロコントローラは、32ビットプロセッサアーキテク
チャの強力なパフォーマンスと、特に高レベルの確定論的処理による利点を活用するために、Arm®Cortex®-M4コアを統合しています。
すべてのCortex®-M CPUには32ビットアーキテクチャがあります。
Cortex®-M3は、アームによってリリースされた最初のCortex®M CPUでした。
その後、Armは、高性能と低消費電力、それらの間の互換性を維持しながら2つの製品ラインを区別しました。
Cortex®-M4は、高性能製品ラインに属しています。

3

コア･アーキテクチャ概要
102割込みリクエスト

プロセッサコア
3段パイプライン
SIMDインストラクション
単精度FPU

NVIC

インストラクション

ETM
TPIU
ITM

データ

FPB

DWT

ROMテーブル
SWJ-DP

MPU

PPB

4

デバッグ

バスマトリックス

ICODE
AHB-Lite
マスターポート

DCODE
AHB-Lite
マスターポート

SYSTEM
AHB-Lite
マスターポート
Arm®Cortex®-M4

STM32G4バスマトリックス

内蔵メモリ

外付けメモリ内蔵ペリフェラル 外部ペリフェラル

プロセッサコアは、同時実行命令フェッチとデータのロード/ストア
トランザクションをサポートするため、ハーバードアーキテクチャを採用しています。
命令パイプラインは、フェッチ、デコード、エグゼキュートの3つのステージを備えています。条件分岐の実行は、ターゲット命令を早期にフェッチすることで高速化されます。

4コア･アーキテクチャ概要• SIMDインストラクション

5• 浮動小数点命令• ~100命令• 1サイクルで複数のオペレーションを実行• Cortex®-M4 FPU• 例:符号付き乗算アキュムレート･デュアル• IEEE754標準 準拠• 単精度浮動小数点演算

SMLAD
31

Rd,Rn,Rm,Ra
16 150Rn

オペレーション
•サイクルカウント

加算/減算

1除算

14

乗算

1

乗算アキュムレート

3平方根

14

Rm

*
31*0

Ra+Rd

Rd[31:0] ← Ra[31:0] + Rn[15:0]*Rm[15:0] + Rn[31:16]*Rm[31:16]

SIMD技術は、パックされたデータで動作します。たとえば、A/Dコンバータで取得した2つの12ビットサンプルは、同じ32ビットレジスタの2つのハーフワードに格納できます。このスライドで説明する例では、2組のサンプルを乗算してから、次のレジスタに蓄積します。データ信号処理は製品の合計に基づいているため、SIMD命令は通常のスカラー固定小数点命令に関する性能向上に寄与します。
STM32G4に存在するCortex®-M4はIEEE754標準と互換性があるオプションの単精度浮動小数点単位を実装します。加算、減算、乗算命令は1クロックで実行し、乗算して命令を蓄積するには3クロック必要、除算と平方根の命令は14クロックを必要とします。

5コア･アーキテクチャ概要
102割込みリクエスト

プロセッサコア
3段パイプライン
SIMDインストラクション
単精度FPU

NVIC

Instruction
インストラクション

ETM

DWT

トレース

SWJ-DP

デバッグ

ROMテーブル

MPU

PPB

TPIU
ITM

Data
データ

FPB

6

バスマトリックス

ICODE
AHB-Lite
マスターポート

DCODE
AHB-Lite
マスターポート

SYSTEM
AHB-Lite
マスターポート
Arm®Cortex®-M4

STM32G4バスマトリックス

内蔵メモリ

外付けメモリ内蔵ペリフェラル 外部ペリフェラル

Cortex®-M4にはキャッシュも内部RAMもありません。したがって、命令フェッチトランザクションとデータアクセスは、内部バスマトリックスに従います。このバスマトリックスは、アドレスとアクセスの種類、命令またはデータに応じて出力AHB-liteマスタポートを選択します。次の例に示す3つのAHBトランザクションを一度に進行中にすることができます。
• ICODEマスタポートを使用したFlashメモリからの命令アクセス• DCODEマスタポートを使用したFlashメモリからの定数データ
アクセス• SYSTEMマスタポートを使用したSRAMアクセス
Cortex®-M4のバスマトリックスはSTM32G4 MCUのAHBバスマトリックスに接続されており、CPUがメモリやペリフェラルにアクセスできるようにします。トランザクションはAHB-Liteでパイプライン処理されるため、最高のスループットは、最小2クロック遅延で、クロックあたり32ビットのデータまたは命令です。
Cortex®-M4のバスマトリックスの出力の1つは、CPU内部のプライベートペリフェラルバス（またはPPB）です。NVIC、MPU、およびデバッグユニットに存在するメモリマップレジスタにアクセスするために使用されます。
6コア･アーキテクチャ概要
102割込みリクエスト

プロセッサコア
3段パイプライン
SIMDインストラクション
単精度FPU

NVIC

Instruction
インストラクション

ETM

DWT

トレース

SWJ-DP

デバッグ

ROMテーブル

MPU

PPB

TPIU
ITM

Data
データ

FPB

7

バスマトリックス

ICODE
AHB-Lite
マスターポート

DCODE
AHB-Lite
マスターポート

SYSTEM
AHB-Lite
マスターポート
Arm®Cortex®-M4

STM32G4バスマトリックス

内蔵メモリ

外付けメモリ内蔵ペリフェラル 外部ペリフェラル

Cortex®-M4コアでは、構成されたアクセス許可に従ってアドレス範囲を保護するためにメモリプロテクションユニット（またはMPU）が使用されます。有効にすると、プロセッサコアによって開始されたアクセスを代わりに受信します。

7

メモリ･プロテクション･ユニット

8• MPU属性設定はアクセス許可を定義• 8つの独立メモリ領域• アクセス許可の制御• コードを実行可能?
• データを書き込むことが可能?
• 非特権モードアクセス?

• 属性の割り当て• ノーマル（メモリ）• デバイス（ペリフェラル）• Strongly Ordered（ペリフェラル）

STM32G4マイクロコントローラのMPUは、8つの独立したメモリ領域をサポートし、以下の目的で独立したアクセス権を設定できます。
• アクセス権:特権/非特権モードでのリード/ライトが許可されている、またはリード/ライトが出来ない。
• 実行権限:命令フェッチで禁止されている実行可能領域または領域。
MPUは、ノーマル、デバイス、およびStrongly Ordered領域に属性を割り当てる役割も担っています。
ノーマルは、メモリをマップするために使用されます。
デバイスとStrongly Orderedは、ペリフェラルをマッピングするために使用されます。それらの違いは、データをバッファリングする機能です。デバイスメモリ属性は、Strongly Ordered領域へのス
トアがターゲットペリフェラルから応答を受信するまでパイプラインを停止しながら、書込みポスティングを有効にします。

8

参照

9

• 詳細については、以下のドキュメントを参照してください。:• STM32G4 Series Cortex®-M4 processor programming manual• Managing memory protection unit (MPU) in STM32 MCUs (AN4838)• 以下のArmのウェブサイトへのリンク:• http://www.arm.com/products/processors/cortex-m/cortex-m4-processor.php

NVICとデバッグユニットは、別々のプレゼンテーションで説明されています。
詳細については、これらのアプリケーションノートとwww.st.com
ウェブサイトで入手可能なCortex®-M4プログラミングマニュアルを参照してください。
また、Cortex®-M4コアに関する詳細については、Armのウェブサ
イトをご覧ください。

9