Saturday, October 16, 2010

ARMアーキテクチャの昨日,今日,明日

ARMアーキテクチャの昨日,今日,明日
ARMプロセッサ・シリーズとCortex-M3の概要
Design Wave Magazine 2008 May
http://www.cqpub.co.jp/DWM/contents/0126/dwm012600630.pdf

ARM プロセッサは,高性能組み込みプロセッサとして年間30億個近くが出荷されている.ARM7TDMI でアーキテクチャが確立されるまで,多くの紆余(うよ)曲折を経てきた.ARM7TDMI で確立されたアーキテクチャは,市場からの要求に応えながら性能を高め,機能を拡張してきた.現在,ARM プロセッサは多くの製品ファミリとアーキテクチャ・バージョンから構成されている.また,多くの機能や性能要求に応えながらソフトウェア互換性を維持し続けている.

この章では,前半で最新のCortex ファミリが今までどのように拡張されてきたのかを説明し,後半ではアーキテクチャが大きく拡張されたCortex-M シリーズについて,その特徴的な機能を説明する.

1.ARM プロセッサとCortex シリーズ
の位置づけ
● ARM7-ARM11 ファミリの変遷

現在のARM プロセッサの事実上のスタート・ポイントはARM7TDMI 注1 です.開発年度は1994 年なので既に15年近くが経ちますが,いまだに新しいチップに採用され続けており,第一線のプロセッサです.ARM7TDMI はARM7 ファミリに属し,アーキテクチャ・バージョンはv4T です(図1).ARM7TDMI は初期の携帯電話に搭載されることで出荷数量を伸ばしてきました.マイコンに搭載されてコントローラとして使われる場合や,MMU(Memory Management Unit)を搭載してアプリケーション・プロセッサ注2 として使われる例も多くあります.

ARM7 ファミリの次はARM9 ファミリです.ARM9ファミリでは,パイプラインの段数をARM7TDMI の3 段から5 段に増やし,動作周波数が向上しています.また,バスをユニファイド(統合)型からハーバード型に変更し,命令とデータのアクセスの衝突を避けています.

アーキテクチャのバージョンは,前期のARM920T などは引き続きv4T でしたが,後期のARM9E シリーズではv5TE になりました.アーキテクチャのバージョンアップに伴い,命令セットにもいくつかの命令が追加されました.

大きな変更点は,信号処理用の命令群が追加されたことです(v5TE のE はEnhanced の略).具体的には積和演算の強化や飽和演算注3 の追加などが行われています.これは信号処理の用途に使われることが多くなってきた時代背景を映しています.ARM926EJ-S のJ はJazelle の略で,Javaバイト・コードを直接実行する機能を持ちます.

ARM9 ファミリの次はARM10 ファミリです.ARM10ファミリはもともと1990 年代の末にハード・マクロとして実装されました.2000 年代になってからソフト・マクロとしてARM10E シリーズのARM1026EJ-S が開発されました.ARM10E ではパイプラインを6 段にし,内部や外部のデータ・パスを64 ビット化することで性能向上を実現しています.

ARM10 ファミリの次が,ARM11 ファミリです.ARM11 では性能の向上とともに機能を拡充するアーキテクチャの拡張を広範囲に行っています.アーキテクチャ・バージョンはv6 となりました.パイプラインは8 段以上になり動作周波数も上がっていますが,パイプラインのフラッシュ・ペナルティが深刻になるため動的分岐予測器注4を搭載しています.バスも2 本以上搭載され,周辺アクセ

ス用やDMA(Direct Memory Access)用のバスが用意されています.機能の追加や洗練された点も多くあり,いくつか例を挙げると,バスのアンアラインド・アクセス注5 の追加,ベクタ割り込みの対応,TrustZone 注6 と呼ばれるセキュリティ対応機能,バスのAXI 注7 への移行などがあります.

さらにSMP(Symmetric Multiprocessing)対応のマルチプロセッサ機能も追加されました.ARM1156T2-S にはThumb-2 命令セットが追加されました.追加された命令としては整数のSIMD 命令群注8 があります.

● Cortex ファミリの登場
ARM11 ファミリの次はARM12 ではなくCortex ファミリです.ファミリ名を番号ではなく固有名詞に変えるに至った背景には,ARM プロセッサに搭載される製品の多様化があります.

ARM プロセッサというと,携帯電話に搭載されるプロセッサという印象があります.間違いではありませんが,今では携帯電話以外の製品にも多く搭載されるようになっています.高性能なディジタル家電から産業機器まで幅広い用途に使われるようになってきました.また,携帯電話ひとつとっても要求される処理性能は製品により数倍の開きがあります.このように性能と機能の両方向で非常に広い範囲をカバーすることがARM プロセッサに求められるようになりました.このような状況においては,従来の"ファミリが一つ進むと性能と機能が漸次向上する"というロードマップでは,多様な市場要求に応えられなくなってきています.

そこでARM は,性能や機能に関係なくARM11 の次はCortex というファミリで統一し,そのファミリの中に用途ごとにアーキテクチャの種類を定義しました.それがCortex-A,Cortex-R,Cortex-M の三つです.図2 ではこの三つの種類の位置づけを3 本の矢印で表現しています.

左の矢印がARM7TDMI を起源として低電力小面積を特徴とするマイコンなどに使われてきた製品系列,真ん中の線が高性能な組み込み製品に使われてきた製品系列です.携帯電話のアプリケーション・プロセッサなどの分野では,近年その要求性能が指数関数的に上がっていることが,図を見ても分かります.一つのアーキテクチャでこれらのすべてをカバーするのは非常に困難な時代になってきました.

<<図1 アーキテクチャ・マップ.JPG>>

図1 アーキテクチャ・マップ
ARM プロセッサは1994 年のv4T に始まり,v7 まで進化してきた.v7 ではアーキテクチャ・プロファイルが導入され,A プロファイル,R プロファイル,M プロファイルに分類される.

<<図2 ARM CPU 開発のロードマップ.JPG>>

図2 ARM CPU 開発のロードマップ
各プロセッサの発表年度と性能カバー範囲.性能は実装に使うプロセスやテクニックで変動する.近年,アプリケーション・プロセッサに高い性能が求められていることが分かる.DMIPS は現時点のプロセス技術での値.動作周波数はプロセス技術,電装技術で変化する.


注1 :ARM プロセッサのうちのARM7 ファミリに属するハード・マクロ型のプロセッサ.-S が付くとソフト・マクロ.

注2 :プロセッサの分類で,主にアプリケーション処理に用いられる.代表例は携帯電話のアプリケーション・プロセッサ.高度なOS を必要とするのでMMU が必須となる.

注3 :整数の信号処理演算.演算結果が表現形式を超えた場合に値の意味が大きく変化しないように,表現可能な限界で演算値を"飽和"させる処理.

注4 :分岐命令によるパイプラインのフラッシュ発生頻度を下げるために,分岐先を予測する回路.過去の分岐結果で予測を動的に変化させるので動的分岐予測と呼ばれる.

注5 :データをアクセスする際に,データがそのデータのサイズ単位のアドレスごとに置かれていないアクセス.例えばバイト・アドレス3 番地からワード・データが置かれていても1 命令でアクセスできる.

注6 :ARM プロセッサのセキュリティ機能拡張のひとつ.プロセッサの実行空間をセキュア空間と非セキュア空間に分割する.

注7 :Advanced Extensible Interface.AMBA 3.0 で導入された高性能なバス・インターフェース・プロトコル.最近の高性能なARM プロセッサで採用されている.

注8 :Single Instruction Multiple Data.1 命令で複数のデータを同時に処理する命令.

Keyword
ARM7TDMI,ARM9,ARM10,ARM11,動的分岐予測器,アンアラインド・アクセス,TrustZone,AXI,Thumb-2 命令,SIMD 命令,Cortex-A,Cortex-R,Cortex-M,MPcore,AMP 構成

No comments:

Post a Comment