このページの本文へ

前へ 1 2 次へ

IoT時代を担う組み込み向けのCortex-M7の詳細が判明

2015年05月08日 12時00分更新

文● 塩田紳二 編集● ASCII.jp

  • この記事をはてなブックマークに追加
  • 本文印刷

 英ARM社は、組み込み向けのCortex-M7プロセッサの詳細情報などを公開するとともに、昨年発表したmbed OSのアップデートなどを行なった。

Cortex-M系列は、組み込み向けの32bitプロセッサ。M0からM7までの5つのプロセッサがある

200MHz程度だが、初期のCore i7などと同クラスの
動作クロックあたりの性能を持つCortex-M7

 Cortex-Mは、ARM社の組み込み向けの32bitプロセッサ。モバイルデバイスに使われるCortex-Aと同じARMv7アーキテクチャだが、あまり規模の大きくない組み込み機器向けで、仮想メモリなどを行なうメモリ管理ユニット(MMU)などを持たないプロセッサだ。

 命令体系は、32bit ARM命令セットのオペコード部分を16bitに短縮した「Thumb/Thumb-2」命令セットを使う。これは、32bitARM命令セットと1対1に対応でき、内部的には、ARM 32bit命令として処理される。ただし、オペコードを16bitに制限しているものがあるため、多少の制限などがある反面、生成されるバイナリが小さくなり、回路規模のわりに高速化も可能というメリットがある。

 Cortex-M7は、M系列の中で最も高性能な組み込み用プロセッサだ。インオーダー実行だが、スーパースケーラー構造を持ち、一部の命令の組み合わせでは、2命令の同時処理も可能になっている。現在の組み込みシステムでは、たとえばHDDレコーダや高機能なテレビなどでは、Linuxなどを搭載できるCortex-Aクラスのプロセッサが使われるが、オーディオや白物家電などといった領域では、Cortex-Mクラスのプロセッサが使われる。

 このうちCortex-M7は、ディスプレイを持ち、タッチや音声コマンドなどのユーザーインターフェースを利用するようなクラスの機器をターゲットにしている。メガヘルツあたりのDMIPS値は、2.14DMIPS/MHzで、数値としては第一世代のCore i7プロセッサに相当する値だ(ただし、コア数や動作クロックは異なる)。もっともクロック周波数は40nmプロセスで製造して200MHz程度。従来のCortex-M4と比較すると、同じプロセスで製造すれば、1.5~2倍程度の性能となる。いま話題のIoTで考えれば、比較的高機能なIoTやウェアラブル機器がターゲットだ。

 内部構成は以下の図のようになる。組み込み系では、さまざまな使い方が想定されるため、Cortex-M7も、これを製造する半導体メーカーが構成を変更できるようにいくつかのオプションがある。

Cortex-M7のブロック図。さまざまな構成が可能なようにいくつかの機能はオプション設定されている。左側にあるTCMは、メモリアクセスを高速化するためのもの

 たとえば、浮動小数点演算を行うFPU(Floating Point Unit)やメモリを分割して保護するMPU(Memory Protection Unit)、命令、データキャッシュ、TCM(Tightly coupled memory。SRAMなどを接続し、見かけ上のメモリアクセス速度を向上させる)などがオプションとなっている。

 その内部パイプライン構造は、9本の実行パイプを持つスーパースケーラー構造になっている。ただし、M7は、インオーダー(命令を順番に実行する)実行である。しかし、分岐予測機能を搭載し、FPUと整数演算に関しては2命令の同時発行も可能だという。

Cortex-M7の命令パイプライン。複数の実行ユニットを持つスーパースケーラー構造だが、実行はインオーダー。ALU1パイプと浮動小数点パイプは、演算タイミングをずらしてある

 実行パイプラインは、「ロード×2」「整数演算×2」「積和演算」「ストア」「分岐」「浮動小数点単純演算」「浮動小数点複雑演算(乗算、除算など)」となっている。

 整数演算パイプは2つあるが、構成が違っている。一方は、シフト演算と単純演算を2つのステージで連続して行ない、片方は、1ステージでシフトか単純演算のどちらかを行う。前者は、すでに対象がレジスタにあるなど、ロードを待たずに実行できる場合に使う。

 また、ARMアーキテクチャには、シフトとその他の演算などを組み合わせた命令があり、このような場合、シフト演算を行なってから単純演算をする必要がある。後者は、前者と実行タイミングを遅らせてある。

 このような構成になっているのは、ロードに続く演算の組み合わせを効率的に実行するためだ。ロードしたデータは、「Early-forwarding」パス使って、レジスタファイルへ書き込まれる前に演算パイプで利用可能になる。このとき、1ステージ遅らせてあるALU1のパイプでは、すぐに演算が行えるようになる。同様にFPUのパイプもロードのあとの演算用に1ステージ開始がずれている。

 Cortex-M7は、インオーダー実行で、命令実行の順番を変えることはないが、ソフトウェア開発にコンパイラなどを利用した場合、最適化として、意味を変えない範囲で命令を入れ替えることができる。このため、特定の組み合わせの場合に効率良く動作できるようにしておけば、ソフトウェア側の最適化で効率がいい順番に並べ替えることが可能だ。

 浮動小数点パイプは32bitの単精度用が2本あり、片方は、加算などの単純演算、もう1つは、乗算、除算、平開演算用。なお、積和演算(かけ算した結果を足していく処理)命令では、この2つのパイプを利用する。また、倍精度演算では、同じ単精度のパイプを利用してステージを繰り返して倍精度演算を行なう。

浮動小数点は、加算などの単純演算と乗算除算と平開(ルート)の処理が別のパイプになっている。積和演算の場合には2つのパイプをつなげて処理する

 Cortex-M7では、FPUはオプションであり、これを装備しないプロセッサコアも作ることができる。このため、レジスタファイルなども別で、整数側とはある程度独立している。このため、浮動小数点演算と整数演算の組み合わせに関しては2命令同時発行も可能なようだ。


(次ページでは、「Cortex-Mシリーズ向けのOS、mbed OSの情報が更新」)

前へ 1 2 次へ

カテゴリートップへ

注目ニュース

ASCII倶楽部

プレミアムPC試用レポート

ピックアップ

ASCII.jp RSS2.0 配信中

ASCII.jpメール デジタルMac/iPodマガジン