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アーキテクチャを使用したプロセッサの例としては、マーベル・テクノロジー・グループ en:Marvell Technology GroupXScaleや、テキサス・インスツルメンツ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マイクロエレクトロニクスアナログ・デバイセズパナソニッククアルコムなどの会社もARMデザインのライセンス供与を受けている。ARMチップは世界で最もよく使われているCPUデザインの一つとなっており、ハードディスク携帯電話ルータ電卓から玩具に至るまであらゆる製品の中に見ることができる。現在では32ビット/64ビット組み込みCPUで圧倒的なシェアを占め、2004年の世界シェアは61%であった[4]

[編集] ARMアーキテクチャのCPUを採用した主な製品

[編集] ARM6

[編集] ARM7

[編集] ARM9/9E

[編集] ARM11

[編集] コアの性能と採用実績

ファミリー アーキテクチャ コア 特徴 キャッシュ (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]

[編集] 設計について

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インストラクションとして表すことができる。

これにより、多くの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]ARMv5TEARMv5TEJ というアーキテクチャ名の "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はビットフィールド操作、テーブル分岐や条件付き実行などを含んでいる。

[編集] 脚注

[ヘルプ]
  1. ^ 可変長の命令でコード密度を向上させ、多彩なアドレッシングモードを持つことにより命令数を削減するなど、CISC的な特徴を低消費電力化に利用している。ただしマイクロプログラムは持たず過度の複雑さを避けるなど、RISCの利点も存分に活かしている。
  2. ^ http://www.arm.com/miscPDFs/3823.pdf
  3. ^ http://www.jp.arm.com/pressroom/08/080125.html
  4. ^ 2005年、ARM社のセミナー資料による。
  5. ^ "ARM Extends Cortex Family with First Processor Optimized for FPGA", ARM press release, March 19 2007. Accessed April 11, 2007.
  6. ^ "ARM Cortex-M1", ARM product website. Accessed April 11, 2007.
  7. ^ http://www.arm.com/news/17017.html

[編集] 関連項目

[編集] 外部リンク

最終更新 2009年8月21日 (金) 07:23 (日時は個人設定で未設定ならばUTC)。
【ARMアーキテクチャ】変更履歴

ご利用上の注意