Tomen Seminar 木村さん分 - LPCZone:NXP LPCマ … Cortex-M0 プロセッサ 32-ビットARM...

31
ARM Cortex-M0

Transcript of Tomen Seminar 木村さん分 - LPCZone:NXP LPCマ … Cortex-M0 プロセッサ 32-ビットARM...

Page 1: Tomen Seminar 木村さん分 - LPCZone:NXP LPCマ … Cortex-M0 プロセッサ 32-ビットARM RISC プロセッサ – Thumb 16-ビット命令セット パワーとエリアを最適化

ARM と Cortex-M0

Page 2: Tomen Seminar 木村さん分 - LPCZone:NXP LPCマ … Cortex-M0 プロセッサ 32-ビットARM RISC プロセッサ – Thumb 16-ビット命令セット パワーとエリアを最適化

イントロダクション

Page 3: Tomen Seminar 木村さん分 - LPCZone:NXP LPCマ … Cortex-M0 プロセッサ 32-ビットARM RISC プロセッサ – Thumb 16-ビット命令セット パワーとエリアを最適化

3

ARM の歴史

1979年: Acorn Computer設立 (英国ケンブリッジ)

1985年: 初代ARM 「Acorn RISC Machine」(その後、

Advanced RISC Machineに変更)が誕生

米VLSI Technologyで製造 (25,000ゲート以下)

1986年: ARM2完成

当時の世界で最もシンプルなRISCプロセッサ

(30,000ゲート)

1990年: ARM社設立 (Acorn, Apple, VLSIで)

NXPはPhilips時代にVLSI社を買収しています。

Page 4: Tomen Seminar 木村さん分 - LPCZone:NXP LPCマ … Cortex-M0 プロセッサ 32-ビットARM RISC プロセッサ – Thumb 16-ビット命令セット パワーとエリアを最適化

11:27 AM

4

ARM アーキテクチャ

Page 5: Tomen Seminar 木村さん分 - LPCZone:NXP LPCマ … Cortex-M0 プロセッサ 32-ビットARM RISC プロセッサ – Thumb 16-ビット命令セット パワーとエリアを最適化

Cortex-M0、M3とARM7TDMI 機能比較

5

Page 6: Tomen Seminar 木村さん分 - LPCZone:NXP LPCマ … Cortex-M0 プロセッサ 32-ビットARM RISC プロセッサ – Thumb 16-ビット命令セット パワーとエリアを最適化

Cortex™-M0 プロセッサ

Page 7: Tomen Seminar 木村さん分 - LPCZone:NXP LPCマ … Cortex-M0 プロセッサ 32-ビットARM RISC プロセッサ – Thumb 16-ビット命令セット パワーとエリアを最適化

ARM Cortex-M0 プロセッサ

32-ビット ARM RISC プロセッサ– Thumb 16-ビット 命令セット

パワーとエリアを最適化– 非常に小さなシリコン実装面積– 低消費電力デザイン

割込みと例外の時、状態の保持が自動– ソフトウェアへのオーバヘッドが小さい(exception entryとexit)

確定的(Deterministic)な処理時間– 命令実行時間は常に同じ

7

Page 8: Tomen Seminar 木村さん分 - LPCZone:NXP LPCマ … Cortex-M0 プロセッサ 32-ビットARM RISC プロセッサ – Thumb 16-ビット命令セット パワーとエリアを最適化

8

ARM Cortex-M0 プロセッサ

パワードメインに沿った配置配線。

Page 9: Tomen Seminar 木村さん分 - LPCZone:NXP LPCマ … Cortex-M0 プロセッサ 32-ビットARM RISC プロセッサ – Thumb 16-ビット命令セット パワーとエリアを最適化

Thumb 命令セット

Thumb命令: 32-ビット オペレーション, 16-ビット 固定命令長– ARM7TDMI (‘T’ = Thumb)

– ARM登場以来すべてのプロセッサでサポート

– 小さい コードサイズ

Thumb-2命令– 全てのプロセッサ オペレーションで‘Thumb’命令使用可能

– 16/32-ビット 命令長混在で性能重視

– 全てのCortex プロセッサをサポート

9

Thumb®

ARM7 ARM9 Cortex-A9Cortex-R4Cortex-M3Cortex-M0

Thumb 命令セット 上位互換

Page 10: Tomen Seminar 木村さん分 - LPCZone:NXP LPCマ … Cortex-M0 プロセッサ 32-ビットARM RISC プロセッサ – Thumb 16-ビット命令セット パワーとエリアを最適化

命令セット アーキテクチャー

16-ビット Thumb ISA(命令セットアーキテクチャ)はARM7TDMIがベース– 56 命令のみ, 実行 時間保証

– 8, 16 または 32-ビット データ 転送は1 命令で実行

Dhrystone 0.9DMIPS/MHz

参照:ARM ドキュメント(DDI0432、DDI0419B)

10

Page 11: Tomen Seminar 木村さん分 - LPCZone:NXP LPCマ … Cortex-M0 プロセッサ 32-ビットARM RISC プロセッサ – Thumb 16-ビット命令セット パワーとエリアを最適化

11

Cortex-M 命令セット 比較

Page 12: Tomen Seminar 木村さん分 - LPCZone:NXP LPCマ … Cortex-M0 プロセッサ 32-ビットARM RISC プロセッサ – Thumb 16-ビット命令セット パワーとエリアを最適化

12

プログラム レジスタ

全てのレジスタ は32-ビット幅– 8/16/32-ビットデータ混載なし

13 general purpose レジスタ– レジスタ r0 – r7 (Low レジスタ)– レジスタ r8 – r12 (High レジスタ)

3 レジスタ with special meaning/usage– スタック ポインタ (SP) – r13– リンクレジスタ (LR) – r14– プログラム カウンタ (PC) – r15

特別用途向け レジスタ - xPSR

r0

r1

r2

r3

r4

r5

r6

r7

r8

r9

r10

r11

r12

r15 (PC)

r14 (LR)

xPSR

r13 (SP)

Page 13: Tomen Seminar 木村さん分 - LPCZone:NXP LPCマ … Cortex-M0 プロセッサ 32-ビットARM RISC プロセッサ – Thumb 16-ビット命令セット パワーとエリアを最適化

13

命令の動作

ほとんどの命令は 2 バイトメモリを使用

実行時間は一定サイクル– データ処理(例 add, shift, logical OR)は1サイクル

– データ 転送(例 load, store) は 2 サイクル

– 分岐は、3 サイクル

命令は32-ビット データ値を 実行– プロセッサ レジスタ とALUは32-ビット幅!

MULS

15 0

MULS r0, r1; Assemblera = a * b; C コード

Page 14: Tomen Seminar 木村さん分 - LPCZone:NXP LPCマ … Cortex-M0 プロセッサ 32-ビットARM RISC プロセッサ – Thumb 16-ビット命令セット パワーとエリアを最適化

ネスト型ベクタ割り込みコントローラ(NVIC)

NVICにより 効率的なスタック・ベースの例外モデルを提供– Cortex-Mコアプロセッサの重要な一部として統合

– 卓越した割込み例外処理機能を提供します。

NVIC で32本の汎用割込み優先レベルのサポート– 例外の優先度

– テールチェイン と後着 割込み

例外ハンドリングの確定的(Deterministic)な動作タイミング– 例外は固定サイクル処理

– 固定16 クロックで ジッターなし

– 低レイテンシ低ジッタの割り込み応答

すべてCで記述可能

14

Page 15: Tomen Seminar 木村さん分 - LPCZone:NXP LPCマ … Cortex-M0 プロセッサ 32-ビットARM RISC プロセッサ – Thumb 16-ビット命令セット パワーとエリアを最適化

割り込みレスポンス

15

Cortex-M0 interruptHandling

ARM 7 interruptHandling

Page 16: Tomen Seminar 木村さん分 - LPCZone:NXP LPCマ … Cortex-M0 プロセッサ 32-ビットARM RISC プロセッサ – Thumb 16-ビット命令セット パワーとエリアを最適化

16

割込み 動作

割込み時, ハードウェアが自動的に現在の状態をスタック

割込み ハンドラをCすべて記述できる– Stack content supports C/C++ ARM Architecture Procedure Calling Standard

リセット時、プロセッサは初期のスタック ポインタ0x0からフェッチする

r0

r1

r2

r3

r12

r15 (PC)

r14 (LR)

xPSR メモリ

r13 (SP)

スタック

が増える

プッシュ

Page 17: Tomen Seminar 木村さん分 - LPCZone:NXP LPCマ … Cortex-M0 プロセッサ 32-ビットARM RISC プロセッサ – Thumb 16-ビット命令セット パワーとエリアを最適化

17

• 従来の方法

例外テーブル– 分岐の命令フェッチ

トップレベル ハンドラ– Routine handles re-entrancy

IRQVECTOR

LDR PC, IRQHandler

. .

IRQHandler PROC

STMFD sp!,{r0-r4,r12,lr}

MOV r4,#0x80000000

LDR r0,[r4,#0]

SUB sp,sp,#4

CMP r0,#1

BLEQ C_int_handler

MOV r0,#0

STR r0,[r4,#4]

ADD sp,sp,#4

LDMFD sp!,{r0-r4,r12,lr}

SUBS pc,lr,#4

ENDP

ARM Cortex-M ファミリの場合

NVIC 自動ハンドラ– 現在のレジスタ状態を保存– 例外の優先順位

– 例外のネスティング処理

割り込みサービスルーチン(Interrupt

Service Routine, ISR) は直接Cで記述

できる– Cルーティンのベクタでのポインタ設定

– C 言語で記述されたISR

高速の割込み動作– 最小限のソフトウェア処理

WFI(割り込み待ち), スリープ状態

書込み 割込みハンドラ

Page 18: Tomen Seminar 木村さん分 - LPCZone:NXP LPCマ … Cortex-M0 プロセッサ 32-ビットARM RISC プロセッサ – Thumb 16-ビット命令セット パワーとエリアを最適化

ARM Cortex-Mシリーズはスリープ状態をサポート– 超消費電力スタンバイ操作を可能にする– バッテリ 系アプリケーションは寿命が大事

– 少ないゲート数のウェークアップ割り込みコントローラ (WIC)を含む)

18

スリープ モード

NVIC

Cortex-M0

WIC

Wake-up

外部割込み

パワー マネイジメントユニット

ディープ

スリープ

スリープ– CPUのクロックをコントロールできる

– NVICは割り込みに対し反応できる

ディープ スリープ– WIC は割り込みを選択して反応できる

– Cortex-M0はNVICにより保存された状態に

戻すことができる

WIC 信号がPMUを起床する

M0コアは瞬時に起床する

重要な外部の事象に対して応答

Wake-up

sensitive

Interrupts

Page 19: Tomen Seminar 木村さん分 - LPCZone:NXP LPCマ … Cortex-M0 プロセッサ 32-ビットARM RISC プロセッサ – Thumb 16-ビット命令セット パワーとエリアを最適化

Cortex™-M0 ベンチマーク

19

Page 20: Tomen Seminar 木村さん分 - LPCZone:NXP LPCマ … Cortex-M0 プロセッサ 32-ビットARM RISC プロセッサ – Thumb 16-ビット命令セット パワーとエリアを最適化

コード サイズ:32 ビットと16/8ビットマイコン

8 ビット マイコンは、8 ビット データを処理するだけではない– 整数型(int)は、実際には16ビット

– 8 ビット マイコンでは整数型のデータを処理するために連続する複数の命令が必要

。つまり、多くのクロック・サイクルを消費。

– C ライブラリが非効率

– スタック サイズ が増える

– 割込み レテンシが影響を受ける

主記憶のアドレスを示すポインターに複数バイト必要

M0は整数型(int)を1命令で扱う

M0は8と16 ビット データを効率よく処理する– バイトレーンのサポート

– インストラクションは半ワードと半 バイト. LDR, LDRH, LDRB

M0は効率的なライブラリサポートがある– M0に最適化

20

Page 21: Tomen Seminar 木村さん分 - LPCZone:NXP LPCマ … Cortex-M0 プロセッサ 32-ビットARM RISC プロセッサ – Thumb 16-ビット命令セット パワーとエリアを最適化

21

アセンブラ命令長比較、32 ビットと16/8ビット MCU

A社 16bit MCUB社 8bit MCU2 B社 16bit MCU

Page 22: Tomen Seminar 木村さん分 - LPCZone:NXP LPCマ … Cortex-M0 プロセッサ 32-ビットARM RISC プロセッサ – Thumb 16-ビット命令セット パワーとエリアを最適化

データ処理に関して ?

16 ビット プロセッサ の課題– 長整数型– フローティング ポイント・タイプ

– プロセッサ のレジスタとメモリ間のデータ転送

16 ビット プロセッサは、16 ビット レジスタ搭載– 32 ビット 転送にレジスタが2個必要

– スタック の要求が増える

M0 は 32 ビット レジスタと32 ビット メモリを搭載– 少ない サイクル :長整数型

– 高い フローティング ポイント 性能

– 少ないサイクル: データ 転送

22

Page 23: Tomen Seminar 木村さん分 - LPCZone:NXP LPCマ … Cortex-M0 プロセッサ 32-ビットARM RISC プロセッサ – Thumb 16-ビット命令セット パワーとエリアを最適化

23

コード サイズ 性能

0.00

0.50

1.00

1.50

2.00

2.50a

2tim

e

aifi

rf

aiif

ft

bitm

np

ca

nrd

r

iirflt

pn

trch

pu

wm

od

rsp

ee

d

HC08

M0 using microlib

他社8bit MCU

Page 24: Tomen Seminar 木村さん分 - LPCZone:NXP LPCマ … Cortex-M0 プロセッサ 32-ビットARM RISC プロセッサ – Thumb 16-ビット命令セット パワーとエリアを最適化

24

コード サイズ 比較M0 コード サイズ : 42% または 36% 小さい

Floating Point and Fir Filter Code Size

0

200

400

600

800

1000

1200

1400

Ge

ne

ric

MS

P4

30

MS

P4

30

F5

43

8

MS

P4

30

F5

43

8

larg

ed

ata

mo

de

l

Co

rte

x-M

0

Co

de

Siz

e(b

yte

s)

MathFloat

FirfilterA社

16bitMCU

A社

16bitMCU2

A社

16bitMCU2

ラージデータ

モデル

Page 25: Tomen Seminar 木村さん分 - LPCZone:NXP LPCマ … Cortex-M0 プロセッサ 32-ビットARM RISC プロセッサ – Thumb 16-ビット命令セット パワーとエリアを最適化

25

コード サイズ 比較M0 コード サイズ : 30% 小さい

Whet

0

1000

2000

3000

4000

5000

6000

7000

Generic

MS

P430

MS

P430F

5438

MS

P430F

5438

larg

edata

model

Corte

x-M

0

Co

de

Siz

e(B

yte

s)

A社

16bitMCU

A社

16bitMCU2

A社

16bitMCU2

ラージデータ

モデル

Page 26: Tomen Seminar 木村さん分 - LPCZone:NXP LPCマ … Cortex-M0 プロセッサ 32-ビットARM RISC プロセッサ – Thumb 16-ビット命令セット パワーとエリアを最適化

26

コード サイズ 比較 (コアmark)M0 コード サイズ 16% 小さい

Coremark

6500

7000

7500

8000

8500

9000

9500

Generic MSP430 Cortex-M0

Co

de

Siz

e(B

yte

s)

A社 16bit MCU

Page 27: Tomen Seminar 木村さん分 - LPCZone:NXP LPCマ … Cortex-M0 プロセッサ 32-ビットARM RISC プロセッサ – Thumb 16-ビット命令セット パワーとエリアを最適化

27

コード サイズ 比較 (コアmark)M0 コード サイズ: 49% 小さい

Coremark

0

2000

4000

6000

8000

10000

12000

14000

16000

Atmel AVR8 Mega644 Cortex-M0

Co

de

Siz

e(B

yte

s)

C社 8bit MCU

Page 28: Tomen Seminar 木村さん分 - LPCZone:NXP LPCマ … Cortex-M0 プロセッサ 32-ビットARM RISC プロセッサ – Thumb 16-ビット命令セット パワーとエリアを最適化

28

性能比較

A社 16bit MCU B社 16bit MCU

Page 29: Tomen Seminar 木村さん分 - LPCZone:NXP LPCマ … Cortex-M0 プロセッサ 32-ビットARM RISC プロセッサ – Thumb 16-ビット命令セット パワーとエリアを最適化

29

パフォーマンス比較u

Se

c

A社 16bit MCU B社 16bit MCU B社 16bit MCU2 B社 8bit MCU C社 8bit MCU

16 ビット FIIR フィルタ性能 (1MHz)

Page 30: Tomen Seminar 木村さん分 - LPCZone:NXP LPCマ … Cortex-M0 プロセッサ 32-ビットARM RISC プロセッサ – Thumb 16-ビット命令セット パワーとエリアを最適化

30

性能比較

Coremark Score

0

0.5

1

1.5

2

2.5

3

3.5

AVR8 ATMega644 MSP430 M0

Co

rem

ark

(Ma

rk/s

ec)

C社 8bit MCU A社 16bit MCU

Page 31: Tomen Seminar 木村さん分 - LPCZone:NXP LPCマ … Cortex-M0 プロセッサ 32-ビットARM RISC プロセッサ – Thumb 16-ビット命令セット パワーとエリアを最適化

31