Cortex-M7の概要

Cortex-M7の概要

Cortex-M4からの変更点

2014年9月にCortex-M4の上位後継機としてCortex-M7が発表されました。その1年以上前に新Cortex-Mが具体化されているという噂が流れ、ARMユーザの中ではCortex-M5と仮の名前で呼んでいました。しかし、何の情報も入って来ず、実態は不明だったので、どんなコアが出てくるか楽しみでした。いざ、新Cortexが出てくるとM5ではなくM7になっており、みんな驚きましたが、もっと驚いたことは、性能が極端に向上されていました。パイプラインが6段になり、さらにデュアルのスーパースカラ構造です。CoreMark/MHz がM4では3.4だったものがM7では5.04に向上しています、また、DMIPS/MHzも1.25から2.14に向上しています。

バスインターフェースもCortex-Aの方式が一部取り入れられて、マイコンなのにプロセッサーのようになっています。Coretx-M4から大きく変わった点は次の通りです。

  • ①6段パイプラインスーパースカラ
  • ②メモリインターフェスの改善・追加
  • ③キャッシュ搭載
  • ④倍精度浮動小数点演算

一方、Cortex-M7では「ビットバンド機能」はサポートされなくなりました。

Cortex-Mシリーズの性能比較

ベンチマーク パフォーマンス
M0 M0+ M3 M4 M7
CoreMark/MHz 1.99 (*7) 2.15 (*6) 3.32 (*5) 3.4 (*3) 5.04 (*1)
DMIPS/MHz 0.90~0.99 (*4) 0.93~1.08 (*4) 1.25~1.50 (*4) 1.25~1.52 (*4) 2.14 / 2.55 / 3.23 (*2)
  • (*1)CoreMark 1.0 : IAR Embedded Workbench v7.30.1 --endian=little --cpu=Cortex-M7 -e -Ohs --use_c++_inline –no_size_constraints / Code in TCM - Data in TCM。
  • (*2)最初の結果は、Dhrystoneのドキュメンテーションに定められるすべての「基本原則」に準拠。2番目は、許可されたCストリング ライブラリに限らず、関数のインライン化を許可。3番目はさらに同時(「マルチファイル」)コンパイルを許可。すべてオリジナル(K&Rスタイル)のDhrystone v2.1を使用。
  • (*3)CoreMark 1.0 : IAR Embedded Workbench v6.50 --endian=little --cpu=Cortex-M4 -e --fpu=None -Ohs –use_c++_inline --no_size_constraints。
  • (*4)インライン化をオフにした状態での最小値(Dhrystoneの推奨につき)、インライン化をオンにした状態での最大値(他のプロセッサアーキテクチャ用にレポート)。Dhrystone v2.1。
  • (*5)IAR ANSI C/C++ Compiler V6.60.1.5097 for ARM -Ohs --no_size_constraints。
  • (*6)CoreMark:1.0:21.46 /ARM Cコンパイラ5.03 [ビルド24] -O3 --loop_optimization_level=2 -Otime -DMICROLIB –library_type=microlib –cpu=cortex-m0 / FPGAプラットフォーム、SRAMコード - SRAMのデータ、メモリおよびCPUクロック:10MHz。
  • (*7)CoreMark:1.0:19.92 /ARM Cコンパイラ5.03 [ビルド24] -O3 --loop_optimization_level=2 -Otime -DMICROLIB –library_type=microlib –cpu=cortex-m0 / FPGAプラットフォーム、SRAMコード - SRAMのデータ、メモリおよびCPUクロック:10MHz。

Cortex-M7の性能、エネルギー効率、安全性の観点からまとめると次のようになります。

性能とコンフィギュアビリティ

  • ●デュアル6段パイプライン
  • ●強力な整数型、浮動小数点、DSP演算性能
  • ●柔軟なシステム/メモリ インタフェース : TCM,、AXI、 AHB
  • ●ハーバードキャッシュ(命令キャッシュ0~64KB、データキャッシュ0~64KB)

エネルギー効率

  • ●クロックゲーティング、WIC(ウェイクアップ割り込みコントローラ)
  • ●Cortex-M3/M4と同じスリープモード
  • ●複数の電源ドメインおよび状態保持をサポート

安全性

  • ●メモリECC(SEC-DED), MPU, MBIST, ロックステップオペレーション、フルデータトレース、安全マニュアル
  • ●デバッグとトレース
  • ●ETMv4 命令とオプショナルデータトレース
  • ●シリアルワイヤーSWとJTAG
図1

アーキテクチャの観点からまとめると次のようになります。

ARM v7E-M アーキテクチャ

  • ●v7E-M :Cortex-M4のスーパーセット
  • ●Thumb2(16-bit + 32bit 命令)のみ(ARM命令はサポート無し)Cortex-M4に倍精度浮動少数点命令が追加
  • ●メモリマップドアーキテクチャ
  • ●単精度/倍精度浮動小数点ユニット(オプションで選択可能)
  • ●オーバーヘッドの少ない割り込み処理のためのハードウエア(NVIC)
  • ●内蔵システムタイマ(SYSTICK)

追加された新機能の主なものと取り除かれた機能は次のようになります

新機能

  • ●浮動小数点命令の改善 - 倍精度(新命令)
  • ●キャッシュメンテナンス
  • ●ブレークポイントの改善

Cortex-M4からCortex-M7への互換性の問題

ビットバンディング機能無し(Cortex-M3 or M4とのコード互換性なし)

メモリマップ

メモリマップドアーキテクチャです。コア周辺( NVIC, システム制御, デバッグ…)はプライベート周辺バス(PPB)領域に割り当てられています。命令フェッチとデータアクセスの2つの異なるインターフェースを持っており、Cortex-M3/4からのI-bus、D-bus、S-busに比べると、多種多彩なインターフェースに変更されています。

インターフェース

  • ●AXI マスター(AXIM):命令キャッシュとデータキャッシュ(オプションで選択可能)を含む
  • ●ITCM(Instruction Tightly Coupled Memory)
  • ●DTCM(Data Tightly Coupled Memory)
  • ●AHB Peripheral port(AHBP)
  • ●AHB External Peripheral Port(EPPB)

インターフェースアクセス

  • ●アクセスのタイプ – 命令フェッチ、またはデータアクセス
  • ●アドレスアクセス
  • ●コントロール設定(TCMとAHBP)
  • ●固定されたマップが、どのインターフェースでアクセスされるかを決定。

Cortex-M7の比較まとめ

項目 内容
アーキテクチャ ARM v7E-M
DSP拡張機能 シングル サイクル16/32ビットMAC
シングル サイクル デュアル16ビットMAC
8/16ビットSIMD(Single Instruction Multiple data)演算
ハードウェア除算(2~12サイクル
浮動小数点ユニット 単精度/倍精度浮動小数点ユニット(オプションで選択)
IEEE 754準拠
パイプライン デュアル6段スーパースカラパイプライン(分岐予測付)
性能効率 5.04 CoreMark/MHz(前書き参照)
2.14 / 2.55 / 3.23 DMIPS/MHz(前書き参照)
インタコネクト 64ビットAMBA4 AXI、AHB周辺ポート(64MB~512MB)
命令キャッシュ 0~64KB オプショナルECC付の2ウェイアソシアティブ型
データ キャッシュ 0~64KB オプショナルECC付の4ウェイアソシアティブ型
命令TCM 0~16MB(ECCはオプション)
データTC 0~16MB(ECCはオプション)
メモリ保護 サブ領域およびバックグラウンド領域を備えたオプションの8または16領域MPU
割り込み ノンマスカブル割り込み(NMI)+1~240の物理割り込み
割り込み優先レベル 8~256の優先レベル
ウェイクアップ割り込みコントローラ 最大240のウェイクアップ割り込み
スリープモード スリープモード
スリープ信号とディープスリープ信号
ARMパワーマネジメントキット使用時のオプションのリテンションモード
ビット操作 ビット操作
デバッグ オプションのJTAGポートとSW(シリアルワイヤデバッグポート)。ブレークポイントは最大8つ、ウォッチポイントは最大4つ
トレース オプションの命令/データトレース(ETM)、データ トレース(DWT)、インストルメンテーション トレース(ITM)

ブロック図

図2

プリフェッチユニット(PFU:Prefetch Unit):

  • ●64bit 命令フェッチ
  • ●4x64bit プリフェッチキュー:DPUパイプラインから命令プリフェッチを切り離す。
  • ●ブランチターゲットアドレスキャッシュ(BTAC):分岐予測ステートとターゲットアドレス転向を単一サイクルで実行するするための64エントリー。
  • ●BTACが指定されない時はスタティック分岐予測。
  • ●デコーダのダイレクト分岐の早期決定のためのフラグの転送、およびプロセッサパイプラインの最初の実行ステップ。

データプロセスユニット(DPU:Data Process Unit)

  • ●ラージスケールデュアル発行(Issue:2ndデコード)用の並列整数レジスタファイル。6読み出しポートと4書き込みポート。
  • ●デュアルシフタ。
  • ●インターロックを最小化する転送ロジック。
  • ●デュアルALU, さらにSIMD命令実行用のALU内蔵。
  • ●シングルMACパイプラインが32x32bit + 64bit → 64bit 演算を2サイクルで実行、そして、1サイクル1MACのスループットを実現する。
  • ●割り算ユニット内蔵:オペランドの内容を判断して早期終了する機能付き。

ロードストアユニット(LSU:Load Store Unit):

  • ●64bit ロードチャネル(デュアル32ビットロードチャネル)
    • ・32bitのデュアル発行( Issue)は、TCMとAXIM(64bitロード幅およびデュアルの32bitロード機能)とD-キャッシュにロードする。
    • ・シングル32ビットロードチャネルはAHBインターフェース用。
  • ●64bitストアチャネル1ch
    • ・TCM用に分離されたSTB(ストアーバッファリング)とAHBPとAXIM用の QoS(Quality of Service)。

AHBD インターフェース

  • ●AHB-Liteデバッグ(AHBD)インタフェースは、Cortex-M7プロセッサ、および完全なメモリマップへのデバッグアクセスを提供する。

AHBPインターフェース

  • ●AHB-Lite周辺装置(AHBP)インタフェースは短いオーバーヘッド時間で、システム周辺装置に適したアクセスを提供する。
  • ●アンアラインドメモリアクセスのサポートを提供する。
  • ●書き込みデータのためのバッファ、およびマルチプロセッサシステムのための排他的なアクセスを提供する。

FPU

  • ●単精度(SP:single precision)のために最適化された単一パイプライン。
  • ●1SP MAC/サイクルスループット。
  • ●整数パイプラインが並列実行をサポート。
  • ●浮動小数点コンテキストの自動スタッキング。
    • ・浮動小数点命令を実行する割り込みサービスルーチン(ISR)開始まで延期される。これにより、ISRに入るための待ち時間を減らし、使わないISRのために浮動小数点コンテキストのスタッキングを削除する。
  •  
  • ●単精度の命令(C言語Floatタイプ)データ処理オペレーション。
  • ●倍精度の命令データ処理オペレーションはオプション。
  • ●精度を上げるために掛け算と累積算を結合した命令(ヒューズMAC)。
  • ●ハードウエアが変換、足し算、引き算、掛け算とオプションの累積、割り算、平方根をサポート。
  • ●ハードウエアが非正規化数およびすべてのIEEE標準754-2008の丸めをサポート。
  • ●32の32bit 単精度レジスタまたは 16の64bit倍精度レジスタ。

タイトリーカップルドインターフェースユニット(TCU:Tightly-Coupled interface Unit)

  • ●TCMへのシステムアクセスのための外部のECCロジックとAHBスレーブ(AHBS)インタフェースをサポート。

バスインターフェースユニット(BIU:Bus Interface Unit)

  • ●ハイパフォーマンスL2システムをサポートする設定可能なAMBA 4 AXIインターフェース。
  • ●拡張されたAHB-Liteインターフェース:システム周辺機能へのオーバーヘッドの少ないインタフェース。
  • ●オプショナルエラー訂正機能(ECC)付命令キャッシュ&データキャッシュ&コントローラ。

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

  • NVICはコアの近くに配置されオーバーヘッドの小さい割り込み処理を行う。
  • ●1〜240の外部割り込み。
  • ●8~256の優先順位が設定可能。
  • ●動的に割り込み優先度を変更可能。
  • ●優先順位のグループ化。これにより先取している割り込みレベルか先取りされない割り込みレベルかの選択を可能。
  • ●Cortex-M3/M4と同様に、テールチェインをサポート。これによりISR間の無駄なPUSH、POPをなくして、オーバーヘッドは最小。

ウェイクアップ割り込み制御(Wake-up Interrupt Controller:WIC)

  • ●ウルトラローパワースリープモードからの復帰を制御。

メモリ保護ユニット(Memory Protection Unit :MPU)

  • ●メモリの保護を行う。
  • ●最大16のメモリ領域とSub Region Disable(SRD)の効率的な使用を可能にする。
  • ●デフォルトメモリマップ属性を実施するバックグランド領域を使用可能にする。

PPB ROM テーブル

  • ●2つのROMテーブルは、デバッガ識別を有効にし、「CoreSight」デバッグと接続することを可能にする。

Cross Trigger Interface Unit(CTI)

  • ●CTIは、デバッグロジックとETMが互いおよび他の「CoreSight」コンポーネントに情報を伝えることを可能にする。

Embedded Trace Macro(ETM)

  • ●ETMは、設定される時に、命令のみ、または命令とデータのトレース機能を提供。

AHBSインターフェース

  • ●ウェイトサイクルの短いシステム周辺装置をサポートする拡張されたAHB-Liteインタフェース。

ICU

  • ●命令キャッシュユニットとRAM

DCU

  • ●データキャッシュユニットとRAM

その他のメモリシステム

  • ●命令キャッシュとデータキャッシュとエラー訂正コード(ECC)制御。
  • ●メモリビルドインセルフテストインタフェース(MBIST)。プロセッサーが動作中にMBISTをサポート。

デバッグとトレースコンポーネント(Debug and trace components)

  • ●FPB(Configurable Breakpoint unit)はブレークポイントの設定を行う。
  • ●DWT(Configurable Data Watchpoint and Trace)はウォッチポイント、データトレース、システムプロファイリングの設定を行う。
  • ●ITMはprintf()デバッグをサポート。
  • ●インターフェースは以下に最適:
    • ・オンチップデータをTPA(Trace Port Analyzer)に送る。SWO(Single Wire Output)モードを含む。
    • ・デバッガはシステム内のすべてのメモリとレジスタにアクセスする。これにメモリマップドデバイス、コアがホルトとした時の内部コアレジスタも含む。そして、リセットがアサートとした時でも、デバッグコントロールレジスタにアクセスする。