ここからは性能比較である。まずは主要なアプリケーション性能をCortex-M4と比較したのがこちら(Photo15)である。

Photo15:CMSIS Q15 FIRQ15 IIRはどちらもCMSIS-DPS Software Libraryを実施した結果と思われる。ここでは整数演算性能比較ということでQ15フォーマットでの結果である

上4つは基本的にMHzあたりの性能なので数字が大きいほど高速、下2つは一定の処理を行う際に必要なサイクル数なので数字が小さいほど高速である。結果は? というとムラはあるが、1.2~2.1倍の高速化が実現されており、確かにIPCの大幅な改善が施されている事が判る。もっともCortex-M4の場合、高速性はDSPユニットによるところが多く、プロセッサコアそのものはCortex-M3と大きくは変わらないから、この位の性能改善は当然とも思える。このうちCoreMarkに関しては、実はEEMBCはProcessor Benchmarkとして

  • CoreMark
  • CoreMark-Pro
  • Floating-Point
  • Multicore
  • Automotive/Industrial
  • Digital Entertainment
  • Networking
  • Text and Image Processing
  • Telecomm(DSP)

といった複数種類のものをリリースしている。CoreMarkがオリジナルであるが、昨今の64bitプロセッサの性能などを測るにはやや物足りない部分があり、これを改良したのがCoreMark-Proである。それ以外のものは見ての通りだ。で、Networking/Telecom/Digital Entertainment/Automotive/Industrialについてもテストを行ってまとめた結果がこちら(Photo16)である。同一周波数でも1.3~1.6倍の性能で、さらに動作周波数を引き上げることで平均2倍の処理性能になる、としている。またDSPについては、そんな訳でMACユニットもさることながらLoad/Storeユニットがほぼ帯域を倍増した関係で当然スループットが上がっている。こちらをまとめたのがPhoto17である。注意書きを読むと判るとおり、単にアーキテクチャの改善のみならず動作周波数向上と相まってこの性能、ということだそうだが、ラフに言ってCortex-M4の2倍の性能を実現できている。

Photo16:恐らくこれは90nmあたりのプロセスで製造されたCortex-M4とCortex-M7を比較してのものだろう。この場合、Cortex-M4は200MHzあたり、Cortex-M7は280MHzあたりを想定していると思われる。ただ"Cortex-M7 At max Cortex-M7 frequency"の結果は"Cortex-M7 At max Cortex-M4 frequency"の結果のきっちり1.4倍になってるあたり、実測値ではなく推定値の可能性もある

Photo17:こちらはもともとCortex-M4の世代でもLoad/Stoteユニットがボトルネックだったから、これが解消されただけで性能が大きく引きあがるのは理にかなっている

最後が割り込みまわりの話である。Cortex-M7はCortex-RシリーズほどのDeterministic Interrupt Latencyは保障されていない(そこまで厳密に必要とする用途はCortex-Rシリーズを使えという話だろう)が、ただそれでもInterrupt Latencyをどう削減するかに色々気を配っている(Photo18)。ただ、なにしろPipelineが長いだけに、色々細工をしないとLatencyが増えてしまう。なので、Typicalの11~12cycleというLatencyを実現するために、随分細かな工夫がなされている事が判る(Photo19)。

Photo18:実際のところInterrupt Dispatchの時間よりも、むしろISRを起動するために汎用レジスタをStackに積む時間の方が長かったりするから、このあたりにハードウェアサポートを追加するというのは理には適っている

Photo19:レジスタ退避がInterrupt Handling(要するにDispatch)と並行して行われることでLatencyを最小限に抑えているというのは面白い。NVIC(Nested Vectored Interrupt Controller)そのものの機構は従来までと同じだが、優先順序付けのTreeの処理をパイプライン化して動作速度向上に備えたとしている