ARMアーキテクチャ
Advanced SIMD拡張はNEONとも呼ばれ、メディアおよびデジタル信号の処理に向いた64ビットと128ビットのSIMD命令セットである。8/16/32/64ビットの整数演算と、32ビット (単精度) 浮動小数点演算のためのSIMD命令が定義されており、ARMv7から利用可能。32ビットCPUでは倍精度浮動小数点数は利用不可で、倍精度にはVFPを使用。
ほとんどの ARMv7 SoC で NEON に対応しているが、NVIDIA Tegra 2 シリーズ、SPEAr1310、SPEAr1340 などで対応していない。
レジスタはVFPレジスタとして用意されている32本の64ビットレジスタを用いて、32本の64ビットSIMDレジスタ (D0-D31) 、もしくは16本の128ビットSIMDレジスタ (Q0-Q15) としてアクセスできる。例えば128ビットレジスタQ0はD0とD1の2つの64ビットレジスタの領域にマッピングされている。
Cortex-A15 などより、NEONv2 (version 2) が搭載され、Fused Multiply-Add ができる。これにより、単精度浮動小数点数で 8 FLOPS/cycle となった。
ARMの設計は、1983年にエイコーン・コンピュータ(イギリス)によって開始された。当時エイコーンはモステクノロジーのMOS 6502を搭載したコンピューターを製造・販売しており、小さなハードウェア規模でシンプルな命令セットを持つ、より高速なプロセッサを開発することによって、6502を置き換えることが目的であった。
ただし、ARMはMC6800の影響を受けてはいるがよりRISCに近く、命令セットアーキテクチャや内部アーキテクチャに類似点は少ない。命令セットを設計したソフィー・ウィルソンも、6502とARMにはほとんど共通点は無いと述べている。
開発チームは1985年までにARM1と呼ばれる開発サンプルを完成させ、最初の製品となるARM2は次の年に完成した。ARM2は32ビットのデータバス、26ビットのアドレス空間と16個の32ビットレジスタを備えていた。レジスタの1つは、上位6ビットが状態フラグを保持するプログラムカウンタである。ARM2のトランジスタ数は30000個しかなく、おそらく世界で最もシンプルな実用32ビットマイクロプロセッサであった。これは、マイクロコードを持たないこと(モトローラのMC68000の場合は1/4から1/3がマイクロコードであった)と、現在のほとんどのCPUと違ってキャッシュを含まないことによるものである。このシンプルさのために消費電力は極めて低かった。
ARMv8-Aから採用。ARMの64ビットモードアーキテクチャAArch64では、汎用レジスタはすべて64ビットとなり、数も16個から31個に増やされる。サーバ用途も意識して仮想化支援命令および暗号支援命令が追加され、SIMD拡張命令であるNEONも大幅に強化される。
ARMプロセッサはThumbと呼ばれるコード効率の向上を意図した16ビット長の命令モードを持っている(SuperHの命令16ビット/データ32ビットに倣い追加された)。条件実行のための4ビットプレディケートが削除されている。メモリポートやバスが32ビットよりも狭い状況において32ビットコードよりも性能が向上する。多くの場合、組み込みアプリケーションでは32ビットのデータパスを持っているのは一部のアドレス範囲のみであり(例: ゲームボーイアドバンス)、残りは16ビットかそれよりも狭くなっている。このような状況では、Thumbコードをコンパイルし、CPUに最も負荷のかかる部分だけを32ビット長の命令セットを使用して手作業で最適化するのが、通常は理にかなっている。Thumb命令とARM命令は単一の実行ファイル内で混在が可能であるが、Thumb命令を実行できるモードとARM命令を実行できるモードは独立しており、両者を使うにはその都度プロセッサの状態を切り替える必要がある。状態の切り替えは分岐命令 (BX, BLX) で行うことができるため、通常は関数単位でThumb命令とARM命令を使い分け、関数呼び出しの際に切り替えを行うのが一般的である。
Thumbテクノロジを搭載した最初のプロセッサはARM7TDMIである。ARM9とそれ以降のファミリは、XScaleも含めて全てThumbテクノロジを搭載している。
2007年頃から採用されるようになる。発表は2002年4月29日。 7月17日、東芝がARM1176JZF-S搭載の携帯電話用プロセッサ、TC35711XBGを発表。2008年第2四半期より量産開始予定。
NVIDIA Tegra Zune HD
携帯音楽プレーヤー iPod touch Zune
携帯電話 T-Mobile G1 Qualcomm MSM7500(EV-DO Rev.A対応携帯電話用チップセット。ARM9Eとのダブル実装) KDDI/沖縄セルラー電話(各auブランド)の 「KCP+」対応CDMA 1X WINシリーズの携帯電話(例・W56T、W54SA、W61S、W62T等。ARM9Eとのダブル実装)および CDMA 1X WINシリーズのスマートフォン(例・E30HT等) MSM7600(EV-DO Rev.A対応携帯電話用チップセット。ARM9Eとのダブル実装) KYOCERA Zio M6000 HTC Hero NTTドコモのFOMA902iシリーズ以降の携帯電話。905i以降のSymbian採用機はSH-4Aとダブル実装。 WS018KE (WILLCOM 9)(WILLCOM(ウィルコム)のPHS端末) Samsung S3C6400(ARM 1176JZ(F)-S v1.0) iPhone 3G(412 MHzで駆動)
タブレット・PDA ノキア Internet Tablet N800 mylo COM-2
ゲーム機 Zeebo (新興国向けDL専用3Dゲーム機)
シングルボードコンピュータ Raspberry Pi model 1A
2009年頃から採用されるようになる。2010年発売のAndroidスマートフォンは大多数が採用。
NetWalker
Samsung S5PC100 iPhone 3GS(600 MHzで駆動) iPod touch (第3世代)
Apple A4(Cortex-A8をもとにAppleとサムスンが携帯機器向けに開発) iPhone 4(800MHz) iPad(1GHz) iPod touch(第4世代) Apple TV(2010年モデル)
シングルボードコンピュータ BeagleBoard、BeagleBoard-xM、BeagleBone、BeagleBone Black テキサス・インスツルメンツが技術支援をしてオープンソースハードウェアによって開発されたボード。 Cubieboard