CLASSICISTRANIERI HOME PAGE - YOUTUBE CHANNEL
SITEMAP
Audiobooks by Valerio Di Stefano: Single Download - Complete Download [TAR] [WIM] [ZIP] [RAR] - Alphabetical Download  [TAR] [WIM] [ZIP] [RAR] - Download Instructions

Make a donation: IBAN: IT36M0708677020000000008016 - BIC/SWIFT:  ICRAITRRU60 - VALERIO DI STEFANO or
Privacy Policy Cookie Policy Terms and Conditions
ARMアーキテクチャ - Wikipedia

ARMアーキテクチャ

出典: フリー百科事典『ウィキペディア(Wikipedia)』

加筆依頼:この項目「ARMアーキテクチャ」は、加筆依頼に出されており、内容をより充実させるために次の点に関する加筆が求められています:ARM7、ARM9、ARM10、ARM11の加筆をお願いします。

ARMアーキテクチャ (Acorn RISC Machine) とは、en:ARM Ltdにより開発されている、組み込み機器や低電力アプリケーション向けに広く使われている32ビットRISC CPUのアーキテクチャのことである。

目次

[編集] 歴史

ARMの設計は、1983年にAcorn Computers Ltdによって開始された。その開発はモステクノロジー 6502の延長とも言えるものであり、当時6502に基づいた一連のコンピューターを製造していたAcornにとっては、同じ要領でプログラムできるチップは大きな強みになるはずであった。

開発チームは1985年までにARM1と呼ばれる開発サンプルを完成させ、最初の製品となるARM2は次の年に完成した。ARM2は32ビットのデータバス、26ビットのアドレス空間と16個の32ビットレジスタを備えていた。レジスタの1つは、上位6ビットが状態フラグを保持するプログラムカウンタである。ARM2のトランジスタ数は30000個しかなく、おそらく世界で最もシンプルな実用32ビットマイクロプロセッサであった。これは、マイクロコードを持たないこと(モトローラ 68000の場合は1/4から1/3がマイクロコードであった)と、現在のほとんどのCPUと違ってキャッシュを含まないことによるものである。このシンプルさ故に消費電力は極めて低いが、それにもかかわらず80286よりも性能は高かった。後継となるARM3は、4KBのキャッシュを含みさらに性能を高めた。

1980年代後半、アップルコンピュータはAcornと共同で新しいARMコアの開発に取り組んだ。この作業は非常に重要であったので、Acornは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ビット組み込みCPUの75%以上を占めている。

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

[編集] ARM7

[編集] ARM9

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

ファミリー アーキテクチャ コア 特徴 キャッシュ (I/D)/MMU 性能 MIPS @ MHz 採用製品
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 none
ARM9TDMI v4T ARM9TDMI 5ステージ パイプライン none
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 ニンテンドー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 シリーズ以降)
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
ARM11 v6 ARM1136J(F)-S SIMD, Jazelle DBX, (VFP) variable, MMU ?? @ 532-665MHz (i.MX31 SoC) Omap2 ノキア N93(?)
v6T2 ARM1156T2(F)-S SIMD, Thumb-2, (VFP) variable, MPU
v6KZ ARM1176JZ(F)-S SIMD, Jazelle DBX, (VFP) variable, MMU+TrustZone
v6K ARM11 MPCore 1-4 core SMP, SIMD, Jazelle DBX, (VFP) variable, MMU
Cortex v7-A Cortex-A8 Application profile, NEON, Jazelle RCT, Thumb-2 variable (L1+L2), MMU+TrustZone up to 2000 (2.0 DMIPS/MHz in speed from 600 MHz to greater than 1 GHz) テキサス・インスツルメンツ OMAP3
v7-R Cortex-R4(F) Embedded profile variable cache, MMU optional 600 DMIPS Broadcomが採用
v7-M Cortex-M3 Microcontroller profile no cache, (MPU) 120 DMIPS @ 100MHz en:Luminary Micro[2] microcontroller family
XScale v5TE 80200/IOP310/IOP315 I/O Processor
80219
IOP321 en:Iyonix
IOP33x
PXA210/PXA250 Applications processor ザウルス SL-5600
PXA255 32KB/32KB, MMU 400 BogoMips @400 MHz en:Gumstix
PXA26x
PXA27x 800 MIPS @ 624 MHz HTC Universal, ザウルス SL-C1000,3000,3100,3200
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

[編集] 設計について

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ループの部分は以下のようになる。

        b test              /* testへジャンプ */
 loop   subgt  Ri,Ri,Rj     /* > の場合 Ri = Ri - Rj */
        suble  Rj,Rj,Ri     /* <= の場合 Rj = Rj - Ri */
 test   cmp    Ri,Rj        /* RiとRjを比較*/
        bne    loop         /* != の場合 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テクノロジを搭載している。

[編集] 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はビットフィールド操作、テーブル分岐や条件付き実行などを含んでいる。

[編集] 外部リンク

Static Wikipedia 2008 (no images)

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - en - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu -

Static Wikipedia 2007 (no images)

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - en - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu -

Static Wikipedia 2006 (no images)

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu -

Sub-domains

CDRoms - Magnatune - Librivox - Liber Liber - Encyclopaedia Britannica - Project Gutenberg - Wikipedia 2008 - Wikipedia 2007 - Wikipedia 2006 -

Other Domains

https://www.classicistranieri.it - https://www.ebooksgratis.com - https://www.gutenbergaustralia.com - https://www.englishwikipedia.com - https://www.wikipediazim.com - https://www.wikisourcezim.com - https://www.projectgutenberg.net - https://www.projectgutenberg.es - https://www.radioascolto.com - https://www.debitoformtivo.it - https://www.wikipediaforschools.org - https://www.projectgutenbergzim.com