STM32G0- Arm® コアArm® Cortex®-M0+ コア

レビジョン 1.0

STM32G0 マイクロコントローラファミリ全製品に搭載されている ARM® Cortex®-M0+ コアのプレゼンテーションへようこそ。

1Cortex-M0+ プロセッサ概要• ARMv6-M アーキテクチャ

2Arm Cortex®-M0+• フォンノイマン･アーキテクチャ、2段パイプライン

ネスト化されたベクタ割込みコントローラ• シングルイシュー･アーキテクチャ

CPU Armv6-M• 1サイクル乗算

メモリ保護ユニット• メモリ保護ユニット（MPU）• シングル･サイクルI/Oポート

AHB -Lite

データウォッチポイント

高速 I/Oポート

ブレークポイントユニット

シリアルワイヤデバッグ

超低消費電力設計

非常にコンパクトなコード

低消費電力消費と高エネルギー効率

制御命令、分岐、リンクを除くすべての命令は 16ビット長

Cortex®-M0+ コアは、32 ビット RISC コアの ARM CortexM グループに含まれます。ARMv6-M アーキテクチャが実装されており、2 段パイプラインを特徴としています。
Cortex®-M0+ には、独自の AHB-Lite マスタポートが備わっていますが、データアクセスが高速 I/O ポートアドレス範囲を対象としている場合に、命令フェッチとデータアクセスの同時実行をサポートします。

2

Cortex-M の互換性

3

• すべてのアプリケーションにわたってシームレスなアーキテクチャ
Cortex-M0 および M0+

Cortex-M3

超低消費電力ARM がリリースした

Cortex-M7

Cortex-M4

最初の Cortex®-M CPU

バイナリ互換およびツール互換

高性能

最高の性能

比類なきミリワットあたりの性能比のメリットを活用するために、STM32G0 マイクロコントローラには、ARM® Cortex®M0+ コアが搭載されています。
すべての Cortex®-M CPU は 32 ビットアーキテクチャを採用しています。
Cortex®-M3 は ARM がリリースした最初の Cortex®-MCPU です。
その後、ARM は、互換性は維持しながらも、高性能と低消費電力の 2 種類の製品ラインを分離して特徴付けることを決定しました。
Cortex®-M0+ は低消費電力製品ラインに属します。消費電力に非常に敏感なバッテリ電源デバイス用として設計されています。

3

コアアーキテクチャの概要

4

ARM® Cortex®-M0+

プロセッサコア
2 段パイプライン
NVIC

32個の割込みリクエスト

デバッグ

デバッグ

MPU

シングルサイクル
I/O ポート

バスインタ
フェースユニット

AHB -Lite
AHB-Lite バスマトリックス

内部メモリ

GPIO ポート内部ペリフェラル

Cortex®-M0+ コアは、2 段命令パイプラインのおかげでCortex®-M0 コアよりも高性能を発揮します。
命令のフェッチと実行を担当するプロセッサコアから、CPUの説明を始めましょう。

4Arm Cortex-M0+は2段パイプライン
フェッチとプリデコード

デコードおよび実行

2 つの 16 ビット命令フェッチ

フェッチ
InstrN、InstrN+1

5

プリデコードInstrN

命令フェッチなし
データアクセス可能

デコード
InstrN

2 つの16 ビット命令フェッチ

実行
InstrN
プリデコードInstrN+1

デコードInstrN+1

実行
InstrN+1

フェッチ
InstrN+2、InstrN+3

クロック 1

クロック 2

プリデコードInstrN+2

クロック 3

大部分の V6-M 命令は 16 ビット長です。32 ビット命令はわずか 6 命令だけであり、そのほとんどはまれにしか使用されない制御命令です。ただし、サブプログラムのコールに使用される分岐命令とリンク命令は、この命令と実行予定である次の命令をポイントするラベル間の大きなオフセットに対応するために 32 ビット長となっています。
32 ビットアクセス 1 回で 16 ビット命令に 2 個ずつアクセスし、命令あたりのフェッチ回数が少なくなるのが理想的です。
クロック 2 の間は命令フェッチは発生しません。AHB Liteポートを使用すると、命令 N がロード／ストア命令である場合にデータアクセスを実行することができます。

5分岐性能6• Cortex®-M0+ コア• 最大2個の16ビット分岐シャドウ命令…
Label:

Inst0
B
Inst1
Inst2…
InstN
InstN+1

Label

クロック 1フェッチとプリデコード
デコードおよび実行; ラベルに分岐; 分岐シャドウ命令; 分岐シャドウ命令

クロック 2Inst0、B Label
Inst0

クロック 3

クロック 4

Ins1、Inst2

InstrN、InstN+1

B Label

任意の分岐において、（2 段パイプラインのおかげで）プリフェッチされた命令が破棄される個数は少なくなります。
クロック 1 において、プロセッサは Inst0 と無条件分岐命令をフェッチします。
クロック 2 において、Instr0 を実行します。
クロック 3 において、分岐命令を実行すると同時に、次の連続した 2 個の命令 Inst1 と Inst2（分岐シャドウ命令と呼ばれる）をフェッチします。
クロック 4 において、プロセッサは Inst1 と Inst2 を破棄し、InstrN と InstN+1 をフェッチします。
Cortex-M0、M3、M4 には、3 段パイプライン（フェッチ、デコード、実行）が実装されています。分岐シャドウ命令の個数が、最大 4 個の 16 ビット命令 まで増加しています。

6

コアアーキテクチャの概要

7

Arm® Cortex®-M0+

プロセッサコア
2 段パイプライン
NVIC

32個の割込みリクエスト

デバッグ

デバッグ

MPU

シングルサイクル
I/O ポート

バスインタ
フェースユニット

AHB -Lite
AHB-Lite バスマトリックス

内部メモリ

GPIO ポート内部ペリフェラル

Cortex®-M0+ にはキャッシュも内部 RAM もありません。その結果として、あらゆる命令フェッチトランザクションは AHB-Lite インタフェースへと誘導され、あらゆるデータアクセスは AHB-Lite インタフェースまたはシングルサイクル I/O へと誘導されます。
STM32G0 には、CPU の外部に SoC レベルキャッシュが搭載されていることに注意してください。
AHB-Lite マスタポートはバスマトリックスに接続されているため、CPU はメモリとペリフェラルにアクセス可能となります。トランザクションは AHBLite でパイプライン転送されるため、最大スループットは、クロックあたり32 ビットのデータまたは命令であり、最低で 2 クロックの遅延が発生します。
Cortex®-M0+ はまた、シングルサイクル I/O ポートを搭載しているため、1クロックの遅延で CPU からデータにアクセスできます。外部デコードロジッ
クは、データアクセスがこのポートへと誘導されるアドレス範囲を決定します。
STM32G0 では、シングルサイクル I/O ポートは GPIO ポートレジスタへのアクセスに使用されるため、これらのポートはプロセッサの周波数で動作できます。
7

コアアーキテクチャの概要

AHB -Lite 命令フェッチ

AHB-Liteデータ･アクセス

8

AHB -Lite命令フェッチ

シングル･サイクルI/O ポートのトランザクションt

クロック 1

クロック 2クロック 3

ロードまたはストア命令のアドレスがシングルサイクル I/O
ポートアドレスアパーチャ内に収まらない場合は、トランザクションが AHB-Lite ポートで実行され、CPU が同一クロック内で命令をフェッチするのを防ぎます。
ロードまたはストア命令のアドレスがシングルサイクル I/O
ポートアドレスアパーチャに収まる場合は、このポートでトランザクションが実行され、場合によっては命令フェッチと同時に実行されます。

8

コアアーキテクチャの概要

9ARM® Cortex®-M0+

プロセッサコア
2 段パイプライン
NVIC

32個の割込みリクエスト

デバッグ

デバッグ

MPU

シングルサイクル
I/O ポート

バスインタ
フェースユニット

AHB -Lite
AHB-Lite バスマトリックス

内部メモリ

GPIOポート

内部ペリフェラル

Cortex®-M0+ コアでは、設定済みのアクセス許可に応じて、アドレス範囲を保護するためにメモリ保護ユニット（MPU）が使用されます。

9

メモリ保護ユニット

10• MPU属性設定でアクセス許可を定義• 8個の独立したメモリ領域• コードを実行できるか？
• データを書き込めるか？
• 非特権モードアクセス？

STM32G0 マイクロコントローラの MPU は、8 個の独立したメモリ領域をサポートしており、以下の属性を個別に設定できます。
- アクセス許可：特権／非特権モードでの読出し ／書込みの許可／禁止- 実行許可：命令フェッチの実行可能領域または禁止領域

10

参照

11

• 詳細については、次の文書を参照：• STM32G0シリーズCortex®-M0+プロセッサ･プログラミング･マニュアル（STM32G0 Series
Cortex®-M0+ processor programming manual）（PM0223）• STM32マイコンにおけるメモリ保護ユニット（MPU）の管理（Managing memory protection
unit (MPU) in STM32 MCUs）（AN4838）• 以下のリンクのArm Web サイト• http://www.arm.com/products/processors/cortex-m/cortex-m0+-processor.php

詳細については、www.st.com の Web サイトで入手可能な
これらのアプリケーションノートと Cortex®-M0+ プログラミン
グマニュアルを参照してください。
Cortex®-M0+ コアの詳細については、ARM Web サイトも参照してください。

11