ARMアーキテクチャ とは?ページ内リンク ↓ウィキペディア(Wikipedia)記事 ↓Yahoo!知恵袋ARMアーキテクチャ (Acorn RISC Machine) とは、ARM Ltdにより開発されている、組み込み機器や低電力アプリケーション向けに広く用いられる32ビットRISC CPUのアーキテクチャのことである。 出典: 『ウィキペディア(Wikipedia)』 関連商品
最安値(新品): ¥ 2,200
最安値(中古): ¥ 1,334
|
目次 |
ARMアーキテクチャは消費電力を抑える特徴を持ち、低消費電力を目標に設計されるモバイル機器において、これに基づくCPUは支配的となっている。
現在では、ARMファミリーは組み込み型での32bit RISC CPUのおよそ75%を占め[1]、全世界で最も使用されている32bit CPUアーキテクチャのひとつである。ARMアーキテクチャに基づくCPUは、PDA・携帯電話・メディアプレーヤー・携帯型ゲーム・電卓などの携帯機器から、ハードディスク・ルータなどのPC周辺機器まで、あらゆる電子機器に使用され、2008年1月の時点ですでに100億個以上が出荷されている[2]。ARMアーキテクチャを使用したプロセッサの例としては、マーベル・テクノロジー・グループ en:Marvell Technology Groupの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マイクロエレクトロニクス、アナログ・デバイセズ、松下電器産業、クアルコムなどの会社もARMデザインのライセンス供与を受けている。ARMチップは世界で最もよく使われているCPUデザインの一つとなっており、ハードディスク、携帯電話、ルータ、電卓から玩具に至るまであらゆる製品の中に見ることができる。現在では32ビット/64ビット組み込みCPUで圧倒的なシェアを占め、2004年の世界シェアは61%であった[3]。
| ファミリー | アーキテクチャ | コア | 特徴 | キャッシュ (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, en:GP32,en:GP2X (マスタ), en:Tapwave Zodiac (Motorola i. MX1) | |||
| ARM922T | 8KB/8KB, MMU | |||||
| ARM940T | 4KB/4KB, MPU | en: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 | ||
| 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 |
| 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[4] (0.8 DMIPS/MHz[5], MHz achievable FPGA-dependent) | "Actel ProASIC3 and Actel Fusion PSC devices will sample in Q3 2007"[6] |
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"に期待されるような動作を行うコードを生成するのは不可能であった。
全てのインストラクションの4ビットを条件実行が占めていることもあってか、最近のARMプロセッサはThumbと呼ばれる16ビットのインストラクション・モードも持っている。これは小さなコードを可能にすることを意図したものである。これによってコードの密度が上がるだけでなく、メモリポートやバスが32ビットよりも狭い状況において、32ビットコードよりも実際に性能が高くなる。多くの場合、組み込みアプリケーションでは32ビットのデータパスを持っているのは一部のアドレス範囲のみであり(例: ゲームボーイアドバンス)、残りは16ビットかそれよりも狭くなっている。このような状況では、Thumbコードをコンパイルし、CPUに最も負荷のかかる部分だけを32ビットのインストラクション・セットを使用して手作業で最適化するのが、通常は理にかなっている。
Thumbテクノロジを搭載した最初のプロセッサはARM7TDMIである。ARM9とそれ以降のファミリは、XScaleも含めて全てThumbテクノロジを搭載している。
デジタル信号処理とマルチメディアアプリケーション向けに ARMアーキテクチャを拡張するため、いくつかのインストラクションが追加された[3]。ARMv5TE と ARMv5TEJ というアーキテクチャ名の "E" がこれを表していると思われる。
追加されたインストラクションは、デジタルシグナルプロセッサアーキテクチャで一般的なものである。例えば、符号付積和演算、飽和加算と飽和減算、「先行する0のカウント」のバリエーションである。
ARMは、Javaバイトコードをハードウェアでネイティブに実行できる技術を実装した。これはARMやThumbモードと並ぶもう一つの実行モードであり、ARM/Thumbの切り替えと同様にしてアクセスすることができる。
Jazelleテクノロジを搭載した最初のプロセッサはARM926EJ-Sである。CPU名の'J'がJazelleを表している。
Thumb-2テクノロジは2003年に発表されたARM1156コアで登場した。Thumb-2はThumbの制限された16ビットのインストラクション・セットを追加の32ビットのインストラクションで拡張し、インストラクション・セットの幅を広げるものである。公称されているThumb-2の目的は、Thumbと同様のコード密度と32ビットメモリ上でのARMインストラクション・セットと同様の性能を得ることであり、Thumb-2はビットフィールド操作、テーブル分岐や条件付き実行などを含んでいる。
PageRank5以上の相互リンク
・相互リンクスクエア
(PageRank 5)
・相互リンク インプロス
(PageRank 5)
→便利!NINJA TOOLS
→FC2検索
用語
Wikipedia
YouTube
![]() |
![]() |
![]() |
![]() |
![]() |
|
![]() |
![]() |