ARMアーキテクチャ
ARMアーキテクチャの最新ニュースをまとめて検索!
ARMアーキテクチャ とは、ARM Ltdにより開発されている、組み込み機器や低電力アプリケーション向けに広く用いられる32ビットRISC CPUのアーキテクチャのことである。
目次 |
[編集] 概要
ARMアーキテクチャは消費電力を抑える特徴を持ち、低消費電力を目標に設計されるモバイル機器において、これに基づくCPUは支配的となっている。命令セットは8ビットCISCである6502を発展させたものであり、典型的なRISCというよりはむしろCISC的で[1]手作業による最適化がしやすい特徴的なアーキテクチャを持つ。
現在では、ARMファミリーは組み込み型での32bit RISC CPUのおよそ75%を占め[2]、全世界で最も使用されている32bit CPUアーキテクチャのひとつである。ARMアーキテクチャに基づくCPUは、PDA・携帯電話・メディアプレーヤー・携帯型ゲーム・電卓などの携帯機器から、ハードディスク・ルータなどのPC周辺機器まで、あらゆる電子機器に使用され、2008年1月の時点ですでに100億個以上が出荷されている[3]。ARMアーキテクチャを使用したプロセッサの例としては、マーベル・テクノロジー・グループのXScaleや、テキサス・インスツルメンツのOMAP en:OMAPシリーズがある。
[編集] 歴史
ARMの設計は、1983年にエイコーン・コンピュータによって開始された。その開発はモステクノロジー 6502の延長とも言えるものであり、当時6502に基づいた一連のコンピューターを製造していたエイコーンにとっては、同じ要領でプログラムできるチップは大きな強みになるはずであった。
開発チームは1985年までにARM1と呼ばれる開発サンプルを完成させ、最初の製品となるARM2は次の年に完成した。ARM2は32ビットのデータバス、26ビットのアドレス空間と16個の32ビットレジスタを備えていた。レジスタの1つは、上位6ビットが状態フラグを保持するプログラムカウンタである。ARM2のトランジスタ数は30000個しかなく、おそらく世界で最もシンプルな実用32ビットマイクロプロセッサであった。これは、マイクロコードを持たないこと(モトローラ 68000の場合は1/4から1/3がマイクロコードであった)と、現在のほとんどのCPUと違ってキャッシュを含まないことによるものである。このシンプルさ故に消費電力は極めて低いが、それにもかかわらず80286よりも性能は高かった。後継となるARM3は、4KBのキャッシュを含みさらに性能を高めた。
1980年代後半、アップルコンピュータはエイコーンと共同で新しいARMコアの開発に取り組んだ。この作業は非常に重要視されていたため、エイコーンは1990年に開発チームをスピンオフしてAdvanced RISC Machinesという新会社を設立した。このため、ARMは本来のAcorn RISC MachineではなくAdvanced RISC Machineの略であるという説明をよく見かけることになる。Advanced RISC Machinesは、1998年にロンドン証券取引所とNASDAQに上場した際、ARM Limitedとなった。
この作業の結果、ARM6が開発された。1991年に最初のモデルがリリースされ、アップルはARM6ベースのARM610をアップル・ニュートンに使用した。
これらの変化を経てもコアは大体同じサイズに収まっている。ARM2は30000個のトランジスタを使用していたが、ARM6は35000個にしか増えていない。そこにあるアイデアは、エンドユーザーがARMコアと多くのオプションのパーツを組み合わせて完全なCPUとし、それによって古い設備でも製造でき、かつ安価に高性能を得られる、というものである。
最も成功した実装は、何億台もの携帯電話やゲームボーイアドバンスに搭載されたARM7TDMIであろう。ARMのビジネスは通常IP(知的財産)コアの売上によるものであり、そのライセンスを得てこのコアに基づいたマイクロコントローラが製造されている。
DECは設計のライセンスを得てStrongARMを製造した。233MHzでStrongARMはほんの1Wの電力しか消費しない(最近のバージョンはさらに少ない)。この業績は後に訴訟の解決の一環としてインテルに移管され、インテルはこの機会を利用して古くなりつつあったi960をStrongARMで補強することにし、それ以降XScaleという名で知られる高性能の実装を開発した。
モトローラ、IBM、テキサス・インスツルメンツ、任天堂、フィリップス、Atmel、シャープ、サムスン電子、STマイクロエレクトロニクス、アナログ・デバイセズ、パナソニック、クアルコム、Marvellなどの企業もARMデザインのライセンス供与を受けている。ARMチップは世界で最もよく使われているCPUデザインの一つとなっており、ハードディスク、携帯電話、ルータ、電卓から玩具に至るまであらゆる製品の中に見ることができる。現在では32ビット/64ビット組み込みCPUで圧倒的なシェアを占め、2004年の世界シェアは61%であった[4]。
[編集] ARMアーキテクチャのCPUを採用した主な製品
[編集] ARM6
- ARM60 3DOインタラクティブ マルチプレーヤー
- ARM610 アップル ニュートン・メッセージパッド、メッセージパッド100、メッセージパッド110、メッセージパッド120
[編集] ARM7
- eMate 300
- 一般的なGSM携帯電話
- 初期の3G携帯電話(例:au CDMA 1X A1400番台の一部を除くA1000番台・A3000番台・A5500番台を除くA5000番台。一部例外除く)
- ゲームボーイアドバンス
- ニンテンドーDS/ニンテンドーDS Lite(サブCPU、GBAソフトの動作にも使われる)
- ニンテンドーDSi(サブCPU)
- iPodシリーズ(デュアルコア実装)
- レゴマインドストーム NXT(知能ブロックの一部)
[編集] ARM9/9E
- ニンテンドーDS/DS Lite/ニンテンドーDSi(メインCPU、ARM7とのダブル実装)
- Sun SPOT
- Handheld Engine (SONY CLIEに搭載)
- Nokia N-Gage
- Tapwave Zodiac
- 現在販売中の3Gおよび3.5G携帯電話(例:NTTドコモ FOMA 900i・901iシリーズ、au(KDDI、沖縄セルラー電話)のCDMA 1XシリーズおよびCDMA 1X WINシリーズ、ソフトバンクモバイルのSoftBank 3Gシリーズ等。一部例外除く)
- H11T(イー・モバイルの音声通話用3.5G端末)
- WS009KE “9 (nine)” (WILLCOM(ウィルコム)のPHS端末)
- Sharp Brain
[編集] ARM11
- 2007年7月17日、東芝がARM1176JZF-S搭載の携帯電話用プロセッサ、TC35711XBGを発表。2008年第2四半期より量産開始予定。
- NVIDIA Tegra(ネットブック用プロセッサ)
- iPhone, iPod touch
- ノキア Internet Tablet N800
- Zune
- T-Mobile G1
- クアルコム MSM7500(携帯電話用チップセット。ARM9Eとのダブル実装)
- mylo COM-2
- NTTドコモのFOMA902iシリーズ以降の携帯電話。905i以降のSymbian採用機はSH-4Aとダブル実装。
- WS018KE (WILLCOM 9) (WILLCOM(ウィルコム)のPHS端末)
[編集] コアの性能と採用実績
| ファミリー | アーキテクチャ | コア | 特徴 | キャッシュ (I/D)/MMU | 性能 MIPS @ MHz | 採用製品 |
|---|---|---|---|---|---|---|
| ARM1 | ARMv1 | ARM1 | なし | ARM Evaluation System second processor for BBC Micro | ||
| ARM2 | ARMv2 | ARM2 | MUL(乗算)命令を追加 | なし | 4 MIPS @ 8 MHz 0.33 DMIPS/MHz |
Acorn Archimedes, Chessmachine |
| ARMv2a | ARM250 | 統合メモリコントローラ(MMU), Graphics and IO processor. SWAP命令を追加 | なし, MEMC1a | 7 MIPS @ 12 MHz | Acorn Archimedes | |
| ARM3 | ARMv2a | ARM2a | ARMとしてはじめてのキャッシュの採用 | 4K 統合 | 12 MIPS @ 25 MHz 0.50 DMIPS/MHz |
Acorn Archimedes |
| ARM6 | ARMv3 | ARM60 | 32ビットアドレス空間をサポート(それまでは26ビット) | なし | 10 MIPS @ 12 MHz | 3DO, Zarlink GPS Receiver |
| ARM600 | キャッシュ、コプロセッサバス (FPA10浮動小数点演算ユニット用) | 4K 統合 | 28 MIPS @ 33 MHz | |||
| ARM610 | キャッシュ、コプロセッサバスは無し | 4K 統合 | 17 MIPS @ 20 MHz 0.65 DMIPS/MHz |
Acorn Risc PC 600, アップル・ニュートン 100シリーズ | ||
| ARM7 | ARMv3 | ARM700 | 8KB 統合 | 40 MHz | Acorn Risc PC 試作CPUカード | |
| ARM710 | 8KB 統合 | 40 MHz | Acorn Risc PC 700 | |||
| ARM710a | 8KB 統合 | 40 MHz 0.68 DMIPS/MHz |
Acorn Risc PC 700, アップル・ニュートン eMate 300 | |||
| ARM7100 | Integrated SoC. | 8KB 統合 | 18 MHz | Psion Series 5 | ||
| ARM7500 | Integrated SoC. | 4KB 統合 | 40 MHz | Acorn A7000 | ||
| ARM7500FE | Integrated SoC. "FE"、FPA・EDOメモリコントローラを追加 | 4KB 統合 | 56 MHz 0.73 DMIPS/MHz |
Acorn A7000+ | ||
| ARM7TDMI | v4T | ARM7TDMI(-S) | 3ステージ パイプライン | 無し | 15 MIPS @ 16.8 MHz | ゲームボーイアドバンス, ニンテンドーDS, iPod |
| ARM710T | MMU | 36 MIPS @ 40 MHz | Psion 5 series, アップル・ニュートン | |||
| ARM720T | 8KB 統合キャッシュ, MMU | 60 MIPS @ 59.8 MHz | ||||
| ARM740T | MPU | |||||
| v5TEJ | ARM7EJ-S | Jazelle DBX | なし | |||
| ARM9TDMI | v4T | ARM9TDMI | 5ステージ パイプライン | なし | ||
| ARM920T | 16KB/16KB, MMU | 200 MIPS @ 180 MHz | Armadillo, GP32,GP2X (マスタ), en:Tapwave Zodiac (Motorola i. MX1) | |||
| ARM922T | 8KB/8KB, MMU | |||||
| ARM940T | 4KB/4KB, MPU | GP2X (スレーブ) | ||||
| ARM9E | v5TE | ARM946E-S | variable, tightly coupled memories(TCM), MPU | 231 MIPS @ 210MHz 74.47 MIPS @ 67.024MHz | ニンテンドーDS, ノキア N-Gage, Conexant 802.11 chips | |
| ARM966E-S | キャッシュレス, TCMs |
ST Micro STR91xF, Ethernet内蔵 [1] |
||||
| ARM968E-S | キャッシュレス, TCMs | |||||
| v5TEJ | ARM926EJ-S | Jazelle DBX | variable, TCMs, MMU | 220 MIPS @ 200 MHz | Mobile phones: ソニー・エリクソン・モバイルコミュニケーションズ (K, W シリーズ),シーメンス and Benq (x65 シリーズ以降),テキサスインスツルメンツ en:OMAP1710 | |
| v5TE | ARM996HS | Clockless processor | キャッシュレス, TCMs, MPU | |||
| ARM10E | v5TE | ARM1020E | (VFP) | 32KB/32KB, MMU | ||
| ARM1022E | (VFP) | 16KB/16KB, MMU | ||||
| v5TEJ | ARM1026EJ-S | Jazelle DBX | variable, MMU or MPU | |||
| XScale | v5TE | 80200/IOP310/IOP315 | I/O Processor | |||
| 80219 | ||||||
| IOP321 | en:Iyonix | |||||
| IOP33x | ||||||
| PXA210/PXA250 | Applications processor | ザウルス SL-5600, SL-A300 | ||||
| PXA255 | 32KB/32KB, MMU | 400 BogoMips @400 MHz | en:Gumstix | |||
| PXA26x | ||||||
| PXA27x | 800 MIPS @ 624 MHz | HTC Universal, ザウルス SL-C1000,3000,3100,3200,Willcom W-ZERO3シリーズ WS003SH,WS004SH,WS007SH,WS011SH,WS020SH | ||||
| PXA800(E)F | ||||||
| Monahans | 1000 MIPS @ 1.25 GHz | |||||
| PXA900 | Blackberry 8700, Blackberry Pearl (8100) | |||||
| IXC1100 | Control Plane Processor | |||||
| IXP2400/IXP2800 | ||||||
| IXP2850 | ||||||
| IXP2325/IXP2350 | ||||||
| IXP42x | en:NSLU2 | |||||
| IXP460/IXP465 | ||||||
| ARM11 | v6 | ARM1136J(F)-S | SIMD, Jazelle DBX, (VFP) | variable, MMU | ?? @ 532-665MHz (i.MX31 SoC)(400 BogoMips @400 MHz i.MX31) | en:OMAP2420 (ノキア N93, ノキア N95), Freescale i.MX31(Zune) |
| v6T2 | ARM1156T2(F)-S | SIMD, Thumb-2, (VFP) | variable, MPU | |||
| v6KZ | ARM1176JZ(F)-S | SIMD, Jazelle DBX, (VFP) | variable, MMU+TrustZone | iPhone, iPhone 3G | ||
| v6K | ARM11 MPCore | 1-4 core SMP, SIMD, Jazelle DBX, (VFP) | variable, MMU | |||
| Cortex | v7-A | Cortex-A8 | アプリケーション向け, NEON, Jazelle RCT, Thumb-2 | 可変(L1+L2), MMU+TrustZone | 最大2000 (600 MHz から 1 GHz以上 の範囲で 2.0 DMIPS/MHz) | テキサス・インスツルメンツ en:OMAP3, iPhone 3G S |
| Cortex-A9 | アプリケーション向け, (VFP), (NEON), Jazelle RCT and DBX, Thumb-2, Out-of-order speculative issue superscalar | MMU+TrustZone | 2.0 DMIPS/MHz | |||
| Cortex-A9 MPCore | As Cortex-A9, 1-4コア対称型マルチプロセッシング | MMU+TrustZone | 2.0 DMIPS/MHz | |||
| v7-R | Cortex-R4(F) | 組み込み向け | 可変キャッシュ, MMUはオプション | 600 DMIPS | Broadcomが採用 | |
| v7-M | Cortex-M3 | マイクロコントローラ向け | キャッシュなし, (MPU) | 120 DMIPS @ 100MHz | en:Luminary Micro[2] microcontroller family | |
| ARMv6-M | Cortex-M1 | FPGAがターゲット, マイクロコントローラ向け, Thumb-2 (BL, MRS, MSR, ISB, DSB, and DMB). | なし, tightly coupled memory optional. | 最大 136 DMIPS @ 170 MHz[5] (0.8 DMIPS/MHz[6], MHz achievable FPGA-dependent) | "Actel ProASIC3 and Actel Fusion PSC devices will sample in Q3 2007"[7] |
- en:ARM architecture 2006-10-21 20:34 UTCより翻訳。
- en:ARM architecture 2008-01-11 04:45 UTCより翻訳。
[編集] 設計について
ARMのインストラクション・セットは6502のコンセプトに沿っているが、パイプライン処理をより効率的に行うための機能が多く含まれている。その一つとして、伝統的なRISCのコンセプトに則り、明確な周期内に、概して1サイクルで実行できるようコマンドを調整している。ARMデザインの興味深い追加機能の一つが、全てのコマンドの先頭にある4ビットの条件コードの使用であり、全てのインストラクションを条件付きにすることができる。
これにより、例えばメモリアクセス用インストラクションの変位量などのスペースが大幅に削られてしまうが、一方では小さなif文に対応するコードの生成時に分岐命令を避けることが可能になる。この標準的な例として、ユークリッドの互除法を挙げる。
(この例はC言語による)
int gcd(int i, int j) { while (i != j) { if (i > j) i -= j; else j -= i; } return i; }
ARMのアセンブリ言語では、whileループの部分は以下のようになる。
loop CMP Ri, Rj ; i と j を比較 SUBGT Ri, Ri, Rj ; もし "GT" ならば i = i - j; SUBLT Rj, Rj, Ri ; もし "LT" ならば j = j - i; BNE loop ; もし "NE" ならば loop に戻る
通常分岐を使用しなければならないthenやelse節のところで分岐が省かれていることが分かる。
インストラクション・セットのもう一つのユニークな機能が、シフト演算を「データ処理」(算術演算、論理演算、レジスタ間の代入)インストラクションの中に織り込むことができることである。例えば、C言語の
a += (j << 2);
のような文を1つのARMインストラクション
ADD Ra, Ra, Rj, LSL #2
として表すことができる。
これにより、多くのARMプログラムは通常RISCプロセッサに期待されるようなプログラムよりも密度の高いものになる。このことは、命令フェッチに伴うのメモリアクセスの頻度が低くなり、分岐に伴うストールの回避によりパイプライン処理より効率的に使うことができるということを意味する。ARMは多くの場合低いスピードと考えられるような速度で動作するが、にもかかわらずずっと複雑なCPUデザインと十分に競合する。
ARMプロセッサは、PC相対アドレッシングやプレ-/ポスト-インクリメント・アドレッシングモードなど、RISCとみなされる他のアーキテクチャと比べ豊富なアドレッシングモードを持っている。
もう一つ留意すべきことは、ARMのインストラクション・セットが時間とともに増加しているということである。例えば、初期のARMプロセッサ(ARM7TDMIより以前のもの)は2バイトの値をロードするインストラクションがなく、厳密にはC言語の"volatile short"に期待されるような動作を行うコードを生成するのは不可能であった。
[編集] ARMの拡張機能
[編集] Thumb
全てのインストラクションの4ビットを条件実行が占めていることもあってか、最近のARMプロセッサはThumbと呼ばれる16ビットのインストラクション・モードも持っている。これは小さなコードを可能にすることを意図したものである。これによってコードの密度が上がるだけでなく、メモリポートやバスが32ビットよりも狭い状況において、32ビットコードよりも実際に性能が高くなる。多くの場合、組み込みアプリケーションでは32ビットのデータパスを持っているのは一部のアドレス範囲のみであり(例: ゲームボーイアドバンス)、残りは16ビットかそれよりも狭くなっている。このような状況では、Thumbコードをコンパイルし、CPUに最も負荷のかかる部分だけを32ビットのインストラクション・セットを使用して手作業で最適化するのが、通常は理にかなっている。
Thumbテクノロジを搭載した最初のプロセッサはARM7TDMIである。ARM9とそれ以降のファミリは、XScaleも含めて全てThumbテクノロジを搭載している。
[編集] DSP 拡張命令
デジタル信号処理とマルチメディアアプリケーション向けに ARMアーキテクチャを拡張するため、いくつかのインストラクションが追加された[3]。ARMv5TE と ARMv5TEJ というアーキテクチャ名の "E" がこれを表していると思われる。
追加されたインストラクションは、デジタルシグナルプロセッサアーキテクチャで一般的なものである。例えば、符号付積和演算、飽和加算と飽和減算、「先行する0のカウント」のバリエーションである。
[編集] Jazelle
ARMは、Javaバイトコードをハードウェアでネイティブに実行できる技術を実装した。これはARMやThumbモードと並ぶもう一つの実行モードであり、ARM/Thumbの切り替えと同様にしてアクセスすることができる。
Jazelleテクノロジを搭載した最初のプロセッサはARM926EJ-Sである。CPU名の'J'がJazelleを表している。
[編集] Thumb-2
Thumb-2テクノロジは2003年に発表されたARM1156コアで登場した。Thumb-2はThumbの制限された16ビットのインストラクション・セットを追加の32ビットのインストラクションで拡張し、インストラクション・セットの幅を広げるものである。公称されているThumb-2の目的は、Thumbと同様のコード密度と32ビットメモリ上でのARMインストラクション・セットと同様の性能を得ることであり、Thumb-2はビットフィールド操作、テーブル分岐や条件付き実行などを含んでいる。
[編集] 脚注
- ^ 可変長の命令でコード密度を向上させ、多彩なアドレッシングモードを持つことにより命令数を削減するなど、CISC的な特徴を低消費電力化に利用している。ただしマイクロプログラムは持たず過度の複雑さを避けるなど、RISCの利点も存分に活かしている。
- ^ http://www.arm.com/miscPDFs/3823.pdf
- ^ http://www.jp.arm.com/pressroom/08/080125.html
- ^ 2005年、ARM社のセミナー資料による。
- ^ "ARM Extends Cortex Family with First Processor Optimized for FPGA", ARM press release, March 19 2007. Accessed April 11, 2007.
- ^ "ARM Cortex-M1", ARM product website. Accessed April 11, 2007.
- ^ http://www.arm.com/news/17017.html
[編集] 関連項目
[編集] 外部リンク
最終更新 2009年10月28日 (水) 08:33 (日時は個人設定で未設定ならばUTC)。
【ARMアーキテクチャ】変更履歴



