ARMアーキテクチャ
この記事は検証可能 な参考文献や出典 が全く示されていないか、不十分です。 出典を追加 して記事の信頼性向上にご協力ください。(このテンプレートの使い方 ) 出典検索? : "ARMアーキテクチャ" – ニュース · 書籍 · スカラー · CiNii · J-STAGE · NDL · dlib.jp · ジャパンサーチ · TWL (2014年3月 )
ARMアーキテクチャ (アーム[2] [3] [4] [5] アーキテクチャ) とは、ARMホールディングス の事業部門であるARM Ltd.により設計・ライセンスされているアーキテクチャ である。組み込み機器 や低電力アプリケーションからスーパーコンピューターまで様々な機器で用いられている。
概要
ARMアーキテクチャは消費電力を抑える特徴を持ち、低消費電力を目標に設計されるモバイル機器 において支配的となっている。本アーキテクチャの命令セット は「(基本的に)固定長の命令」「簡素な命令セット」というRISC 風の特徴を有しつつ、「条件実行、定数シフト/ローテート付きオペランド、比較的豊富なアドレッシングモード」といったCISC 風の特徴を併せ持つのが特徴的だが、これは初期のARMがパソコン向けに設計された際、当時の同程度の性能のチップとしてはかなり少ないゲート数(約25,000トランジスタ )で実装されたチップの多くの部分を常に活用する設計として工夫されたもので、回路の複雑さを増さないという方向性だというように見れば、CISC風の特徴というよりむしろRISC風の特徴とも言える。このような設計が、初期の世代の実装において、(性能の割に)低消費電力、小さなコア、(RISCとしては)高いコード密度といった優れた特性に結びつき、広く普及する原動力となった。
2005年の時点で、ARMファミリーは32ビット 組込み マイクロプロセッサ (乃至、特にマイクロコントローラ)のおよそ75%を占め[6] 、全世界で最も使用されている32ビットCPUアーキテクチャである[要出典 ] 。ARMアーキテクチャに基づくCPUコアは、PDA ・携帯電話 ・メディアプレーヤー ・携帯型ゲーム ・電卓 などの携帯機器から、ハードディスク ・ルータ などのPC 周辺機器まで、あらゆる電子機器に使用される。2015年現在、携帯電話では9割超のシェアがある[7] 。
携帯機器や電子機器の高性能化に伴いARMコアの出荷数は加速度的に伸びており、2008年1月の時点で100億個以上[8] 、2010年9月の時点で200億個以上[9] が出荷されている。ARMアーキテクチャを使用したプロセッサの例としては、テキサス・インスツルメンツ のOMAP シリーズやマーベル・テクノロジー・グループ のXScale 、NVIDIA のTegra 、クアルコム のSnapdragon 、フリースケール のi.MXシリーズ、ルネサス エレクトロニクス のRZファミリ、Synergyなどがある。
既存のARMプロセッサは組み込みとクライアントシステムに特化していたため全て32ビット であるが、顧客からは電力効率に優れるARMアーキテクチャのサーバ への応用を望む声が高まり[要出典 ] 、ARM社は2011年10月27日、ARMの64ビット 拡張であるARMv8アーキテクチャを発表した[10] 。
歴史
ARMの設計は、1983年 にエイコーン・コンピュータ (イギリス)によって開始された。当時エイコーンはモステクノロジー のMOS 6502 を搭載したコンピューターを製造・販売しており、小さなハードウェア規模でシンプルな命令セットを持つ、より高速なプロセッサを開発することによって、6502を置き換えることが目的であった。
ただし、ARMはMC6800の影響を受けてはいるがよりRISC に近く、命令セットアーキテクチャや内部アーキテクチャに類似点は少ない。命令セットを設計したソフィー・ウィルソン も、6502とARMにはほとんど共通点は無いと述べている[11] 。
開発チームは1985年 までにARM1 と呼ばれる開発サンプルを完成させ、最初の製品となるARM2 は次の年に完成した。ARM2は32ビットのデータバス、26ビットのアドレス空間 と16個の32ビットレジスタ を備えていた。レジスタの1つは、上位6ビットが状態フラグを保持するプログラムカウンタである。ARM2のトランジスタ 数は30000個しかなく、おそらく世界で最もシンプルな実用32ビットマイクロプロセッサであった。これは、マイクロコード を持たないこと(モトローラ のMC68000 の場合は1/4から1/3がマイクロコードであった)と、現在のほとんどのCPUと違ってキャッシュ を含まないことによるものである。このシンプルさのために消費電力は極めて低かった。後継となるARM3 は、4KBのキャッシュを含みさらに性能を高めた。
1980年代後半、Apple Computer(現:Apple )はエイコーンと共同で新しいARMコアの開発に取り組んだ。この作業は非常に重要視されていたため、エイコーンは1990年 に開発チームをスピンオフしてAdvanced RISC Machinesという新会社を設立した。このため、ARMは本来のAcorn RISC MachineではなくAdvanced RISC Machine の略であるという説明をよく見かけることになる。Advanced RISC Machinesは、1998年 にロンドン証券取引所 とNASDAQ に上場した際、ARM Limitedとなった。
この経緯により、ARM6 が開発された。1991年 に最初のモデルがリリースされ、AppleはARM6ベースのARM610をApple Newton に採用した。
これらの変化を経てもコアは大体同じサイズに収まっている。ARM2は30000個のトランジスタを使用していたが、ARM6は35000個にしか増えていない。そこにあるアイデアは、エンドユーザーがARMコアと多くのオプションのパーツを組み合わせて完全なCPUとし、それによって古い設備でも製造でき、かつ安価に高性能を得られる、というものである。
このARM6の改良版であるARM7 も、ARM6を採用した製品群に引き続き採用されたほか、普及期に入りつつあった携帯電話 にも広く採用されたことから、今日のARMの礎ともなった。
さらに、新世代のARMv4アーキテクチャに基いてARM7を再設計したものがARM7TDMI である。ARM7TDMIはThumb命令(後述)を実装し、低消費電力と高いコード効率を両立する利点を備えていたことから、ライセンスを受けた多くの企業によって製品化され、特に携帯電話 やゲームボーイアドバンス といった民生機器に採用されたことから、莫大な数の製品に搭載された。なお、TDMIとはThumb命令、デバッグ (Debug) 回路、乗算器 (Multiplier)、ICE 機能を搭載していることを意味している。しかし、これより後のコアには全てこれらの機能が標準的に搭載されるようになったため、この名称は省かれている。
DEC はARMv4アーキテクチャの設計のライセンスを得てStrongARM を製造した。233MHzでStrongARMはほんの1W の電力しか消費しない(最近のバージョンはさらに少ない)。この業績は後に訴訟の解決の一環としてインテル に移管され、インテルはこの機会を利用して古くなりつつあったi960 をStrongARMで補強することにし、それ以降XScale という名で知られる高性能の実装を開発した。
以後も、StrongARMの技術のフィードバックを受けたARM9 やARM10 を経て、NECとの提携などによって携帯電話向けプロセッサとしての地位を確固たるものにしたARM11 をリリースする。
2005年には製品ラインナップを一新し、高機能携帯電話などのアプリケーションプロセッサ向けであるCortex-A 、リアルタイム制御向けであるCortex-R 、組み込みシステム 向けであるCortex-M と、ターゲットごとにシリーズを分類した。なお、Cortexの末尾に付く文字は、社名であるARMの一文字ずつをそれぞれ割り当てたものである[12] 。また、2012年11月にはARM初となる64ビットアーキテクチャによるプロセッサコアであるCortex-A50 シリーズを発表した[13] 。
ARMからIPコア のライセンス供与を受けている主な企業には、モトローラ 、IBM 、テキサス・インスツルメンツ 、任天堂 、フィリップス 、Atmel 、シャープ 、サムスン電子 、STマイクロエレクトロニクス 、アナログ・デバイセズ 、MediaTek 、パナソニック 、クアルコム 、マーベル・テクノロジー・グループ などがある。
ARMチップは世界で最もよく使われているCPUデザインの一つとなっており、ハードディスク 、携帯電話 、ルータ 、電卓 から玩具 に至るまであらゆる製品の中に見ることができる。32ビット組み込みCPUで圧倒的なシェアを占め、2004年 の世界シェアは61%であった[14] 。
主な採用製品
ARM6
ARM7/7E
携帯情報端末
携帯電話
一般的なGSM 携帯電話
cdmaOne 携帯電話
初期の3G 携帯電話(例:au CDMA 1X A1400番台の一部を除くA1000番台・A3000番台・A5500番台を除くA5000番台。一部例外除く)
携帯ゲーム機
携帯音楽プレーヤー
電卓
その他
ARM9/9E
携帯ゲーム機
携帯電話
携帯情報端末
Handheld Engine CXD2230GA (SONY CLIE に搭載)[15]
その他
ARM11/11E
2007年 頃から採用されるようになる。発表は2002年 4月29日 [16] 。
7月17日、東芝 がARM1176JZF-S搭載の携帯電話用プロセッサ、TC35711XBGを発表。2008年第2四半期より量産開始予定。
NVIDIA Tegra
携帯音楽プレーヤー
携帯電話
T-Mobile G1
Qualcomm
MSM7500(EV-DO Rev.A対応携帯電話用チップセット。ARM9Eとのダブル実装)
MSM7600(EV-DO Rev.A対応携帯電話用チップセット。ARM9Eとのダブル実装)
NTTドコモ のFOMA 902iシリーズ以降の携帯電話。905i以降のSymbian採用機はSH-4Aとダブル実装。
WS018KE (WILLCOM 9)(WILLCOM (ウィルコム)のPHS 端末)
Samsung S3C6400(ARM 1176JZ(F)-S v1.0)
タブレット・PDA
ノキア Internet Tablet N800
mylo COM-2
ゲーム機
シングルボードコンピュータ
Cortex-M3
Cortex-A8
2009年 頃から採用されるようになる。2010年発売のAndroidスマートフォンは大多数が採用。
NetWalker
Samsung S5PC100
Apple A4 (Cortex-A8をもとにAppleとサムスン が携帯機器向けに開発)
シングルボードコンピュータ
BeagleBoard 、BeagleBoard-xM、BeagleBone、BeagleBone Black
Cubieboard
Cortex-A9
タブレットは2010年頃から、スマートフォンは2011年から採用された。初期は2コアだったが、4コアのものがタブレットは2011年から、スマートフォンは2012年から登場した。
NVIDIA Tegra 2
携帯ゲーム機
Apple A5
Apple A5X
シングルボードコンピュータ
PandaBoard
BeagleBoard同様、テキサス・インスツルメンツの技術支援によって開発されたボード。
Wandboard
Cortex-A15
タブレットは2012年から、スマートフォンは2013年から採用された。
サムスン電子 は1.7GHzのデュアルコア Exynos 5250 を2012年10月[17] から搭載商品を販売開始。メモリ帯域12.8GB/s[18] 。
テキサス・インスルメンツは2GHzのデュアルコアで2012年第3四半期から商品を出荷予定[19] 。
NVIDIA は Tegra 4 を2013年第1四半期から出荷予定。
シングルボードコンピュータ
Cortex-A57
2012年10月に64ビット ARMのCortex-A57, A53(コードネーム「Atlas」と「Apollo」)が発表され[20] 、2014年に搭載商品(Samsung Galaxy Note 4 など)が販売開始された。
AMD は2015年下半期にサーバー向け Opteron A1100 (Seattle) をリリース予定[21] [22] 。
A57やA53では、8コアや全てのコア同時稼働できる4+4コア(A57が4コア、A53が4コア)などが登場した。
Cortex-A72
Raspberry Pi 4 Model B に採用された。
Cortex-A73
Cortex-A75
Cortex-A76
Cortex-A77
Cortex-A78
Cortex-X1
2020年 5月26日 にCortex-A78と共に発表された。
Cortex-X Custom Programに基づき、Cortex-A78をベースに拡張されている。
コアの性能と採用実績
ARM社製
ファミリー
アーキテクチャ
コア
特徴
キャッシュ (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としてはじめてのキャッシュの採用
4 KB 統合
12 MIPS @ 25 MHz 0.50 DMIPS /MHz
ARM6
ARMv3
ARM60
32ビットアドレス空間をサポート(それまでは26ビット)
なし
10 MIPS @ 12 MHz
3DO , Zarlink GPS Receiver
ARM600
キャッシュ、コプロセッサバス(FPA10浮動小数点演算ユニット用)
4 KB 統合
28 MIPS @ 33 MHz
ARM610
キャッシュ、コプロセッサバスは無し
17 MIPS @ 20 MHz 0.65 DMIPS /MHz
Acorn Risc PC 600 , Apple Newton 100シリーズ
ARM7
ARMv3
ARM700
8 KB 統合
40 MHz
Acorn Risc PC 試作CPUカード
ARM710
Acorn Risc PC 700
ARM710a
Acorn Risc PC 700 , Apple Newton eMate 300
ARM7100
Integrated SoC.
18 MHz
Psion Series 5
ARM7500
4 KB 統合
40 MHz
Acorn A7000
ARM7500FE
Integrated SoC. "FE"、FPA・EDOメモリコントローラを追加
Acorn A7000+
ARM7TDMI
v4T
ARM7TDMI(-S)
3ステージ パイプライン
なし
15 MIPS @ 16.8 MHz
ゲームボーイアドバンス , ニンテンドーDS , iPod
ARM710T
MMU
36 MIPS @ 40 MHz
Psion 5 series , Apple Newton
ARM720T
8 KB 統合キャッシュ, MMU
60 MIPS @ 59.8 MHz
ARM740T
MPU
v5TEJ
ARM7EJ-S
Jazelle DBX
なし
ARM9TDMI
v4T
ARM9TDMI
5ステージ パイプライン
ARM920T
16 KB/16 KB, MMU
200 MIPS @ 180 MHz
Armadillo , GP32 ,GP2X (マスタ), en:Tapwave Zodiac (Motorola i. MX1)
ARM922T
8 KB/8 KB, MMU
200/250 MHz
Cavium CNS2132 (Econa product lines) , Cavium STR8132 (Econa evaluation board) , Ritmo Torrent Box/Mini Lan Server/BT-Downloader (ZAP-LN-86BT)
ARM940T
4 KB/4 KB, MPU
GP2X (スレーブ)
ARM9E
v5TE
ARM946E-S
variable, tightly coupled memories (TCM), MPU
231 MIPS @ 210 MHz 74.47 MIPS @ 67.024 MHz
ニンテンドーDS , ノキア N-Gage , Conexant 802.11 chips
ARM966E-S
キャッシュレス, TCMs
ST Micro STR91xF, Ethernet内蔵
ARM968E-S
v5TEJ
ARM926EJ-S
Jazelle DBX
variable, TCMs, MMU
220 MIPS @ 200 MHz
Mobile phones: ソニー・エリクソン・モバイルコミュニケーションズ (K, W シリーズ), シーメンス and Benq (x65 シリーズ以降), テキサスインスツルメンツ OMAP1710
v5TE
ARM996HS
Clockless processor
キャッシュレス, TCMs, MPU
ARM10E
v5TE
ARM1020E
(VFP)
32 KB/32 KB, MMU
ARM1022E
16 KB/16 KB, MMU
v5TEJ
ARM1026EJ-S
Jazelle DBX
variable, MMU or MPU
ARM11
v6
ARM1136J(F)-S
SIMD, Jazelle DBX, (VFP)
variable, MMU
1.25 DMIPS/MHz
TI OMAP 2 , NXP i.MX 3
v6T2
ARM1156T2(F)-S
SIMD, Thumb-2, (VFP)
1.54 DMIPS/MHz
v6KZ
ARM1176JZ(F)-S
SIMD, Jazelle DBX, (VFP)
variable, MMU+TrustZone
1.25 DMIPS/MHz
iPhone , iPhone 3G, Broadcom BCM2835
v6K
ARM11 MPCore
1 – 4 core SMP, SIMD, Jazelle DBX, (VFP)
variable, MMU
1.25 DMIPS/MHz(最大608 MHz)
NVIDIA Tegra
SecurCore
v6-M
SC000
0.9 DMIPS/MHz
v4T
SC100
v7-M
SC300
1.25 DMIPS/MHz
Cortex-M
v6-M
Cortex-M0
マイクロコントローラ向け。M1はFPGA上で動作。命令はM3のサブセット。Thumb-2 (BL, MRS, MSR, ISB, DSB, and DMB)対応。
0.9 DMIPS/MHz
NXP LPC11xx, Triad Semiconductor, Melfas, 忠北テクノパーク, Nuvoton, オーストリアマイクロシステムズ, ローム, SwissMicros GmbH (DM15 , DM41 等)
Cortex-M0+
0.93 DMIPS/MHz
NXP LPC81x, LPC82x, NXP S32K11x, Renesas RAファミリ , Renesas Synergy S1シリーズ
Cortex-M1
なし, tightly coupled memory optional.
0.8 DMIPS/MHz[25] 最大 136 DMIPS @ 170 MHz[26] (クロックはFPGA依存)
Altera Cyclone III[27] , Actel FPGA[28]
v7-M
Cortex-M3
マイクロコントローラ向け(ハーバード・アーキテクチャ)
キャッシュなし, (MPU)
1.25 DMIPS/MHz
Texas Instruments Stellaris MCU, STMicroelectronics STM32, STMicroelectronics Accordo2, NXP LPC1000, NXP mbed , 東芝 TX03, Luminary Micro , Ember EM3xx, Atmel AT91SAM3, Europe Technologies EasyBCU, Energy Micro EFM32, Actel SmartFusion, Renesas R-IN32
v7E-M
Cortex-M4
マイクロコントローラ向け(ハーバード・アーキテクチャ)。M3にDSP追加。モーター制御、FA/電力制御、オーディオ/ビデオ処理など。
NXP Kinetis, NXP LPC43xx, NXP i.MX 6, 7, 8, NXP S32K14x, S32M, STMicroelectronics, Renesas RAファミリ , Renesas Synergy MCU (S3/S5/S7), Infineon TRAVEO
v7-M
Cortex-M7
マイクロコントローラ向け(ハーバード・アーキテクチャ)。M4までの3段パイプラインから、スーパースカラ(デュアル)6段パイプラインとなり、命令/データ1次キャッシュ、倍精度浮動小数点演算を追加するなど大幅に強化された。クロック周波数は最大800 MHz程度までをターゲットとしており、2017年現在600 MHzで動作する製品がある(NXP i.MX RT1050シリーズ)。
反面、M3,M4にあったBitBand機能が削除されているなどの変更点もある。
L1 命令/データ 各0 – 64 KB, (MPU)
2.14 DMIPS/MHz[29] [30]
STMicroelectronics STM32 F7, Atmel SAM x7x, NXP i.MX RT1050, NXP i.MX 8M Nano, Plus, i.MX 95, NXP S32G, S32K, S32M274, 276, Infineon TRAVEO
v8-M
Cortex-M23
マイクロコントローラ向け(ノイマン・アーキテクチャ)
0.98 DMIPS/MHz[31]
Renesas Synergy S1JA, Renesas RA2A1 , Renesas RA2L1, Microchip SAML10
Cortex-M33
マイクロコントローラ向け(ハーバード・アーキテクチャ)
1.50 DMIPS/MHz[32]
Renesas RA6M4 , Renesas RA4M3 , STM32L5, NXP5500, NXP i.MX 8ULP, i.MX 9
Cortex-R
v7-R
Cortex-R4
リアルタイム/セーフティクリティカルな組み込みシステム向け
可変キャッシュ, MMUはオプション
1.66 DMIPS/MHz
Texas Instruments TMS570, Broadcom , Renesas RZ/T, STMicroelectronics Accordo2
Cortex-R5
AMD/Xilinx Zynq UltraScale+ MPSoC
Cortex-R7
2.53 DMIPS/MHz
v8-R
Cortex-R52
Renesas R-Car V4H, Renesas RZ/T2, NXP S32N, S32Z, S32E
Cortex-A (英語版 )
v7-A
Cortex-A5
低コスト、低消費電力
L1: 4 KB – 64 KB可変, L2: オプション, メモリ管理ユニット, TrustZone
1.57 DMIPS/MHz (400 MHz – 800 MHz)
Atmel SAMA5, PS-T328, Snapdragon S4 Play, Snapdragon 200
Cortex-A7
1 – 4マルチプロセッシング 浮動小数点演算器 L2キャッシュメモリ4 MB(最高)
メモリ管理ユニット, TrustZone, ラージ物理アドレス拡張
1.9 DMIPS/MHz ( – 1.5Ghz)
Snapdragon S4 Play, Snapdragon 200, 208, 210, 212, 400, Allwinner A20, Allwinner A31, MediaTek MT6589, Broadcom BCM2836, Renesas R-Car H2, NXP i.MX 6, 7
Cortex-A8
アプリケーション向け, NEON, Jazelle RCT, Thumb-2
可変 (L1+L2), メモリ管理ユニット , TrustZone
2.0 DMIPS/MHz (600 MHz – 1 GHz)
TI OMAP 3 , Freescale i.MX 5, Apple A4 , Samsung Exynos 3, Allwinner A1x, Rockchip RK29xx
Cortex-A9
アプリケーション向け, 1 – 4コア対称型マルチプロセッシング , (VFP), (NEON), Jazelle RCT and DBX, Thumb-2, アウト・オブ・オーダー実行 , 投機的実行 , スーパースケーラ
メモリ管理ユニット, TrustZone
2.5 DMIPS/MHz (800 MHz – 2 GHz)
TI OMAP 4 , NXP i.MX 6, ST-Ericsson NovaThor U8500, NVIDIA Tegra 2, NVIDIA Tegra 3, NVIDIA Tegra 4i, STMicroelectronics SPEAr1300 , ザイリンクス Zynq-7000, Apple A5 , Rockchip RK3xxx, Samsung Exynos 4, HiSilicon K3V2, Kirin 910, MediaTek , Renesas RZ/A, Intel Cyclone V SoC FPGA
Cortex-A15
1 – 4コア対称型マルチプロセッシング
メモリ管理ユニット, TrustZone, ラージ物理アドレス拡張
3.5 DMIPS/MHz (1 GHz – 2.5 GHz)
TI OMAP 5 , Samsung Exynos 5, NVIDIA Tegra 4, NVIDIA Tegra K1, HiSilicon Kirin 920, Renesas APE6, Renesas R-Car H2, Renesas MP6530, Alpine AL-212
Cortex-A17
Rockchip RK3288
v8-A
Cortex-A32
超小型、低消費電力、電力効率重視。IoT 機器向け。32ビット命令セット。
Cortex-A35
低コスト、低消費電力、電力効率重視。64ビット命令セット。
メモリ管理ユニット, TrustZone, 64bit仮想アドレス, synchronization primitives。[33]
MediaTek Helio X30, NXP i.MX 8
Cortex-A53
AArch64 。暗号化 命令
2.3 DMIPS/MHz
Snapdragon 410, 412, 415, 425, 610, 615, 617, 625, 808, 810, HiSilicon Kirin 620, 930, 935, Rockchip RK3368, MediaTek MT6732, 6735, 6737, 6737T, 6738, 6750, 6752, 6753, Helio P10, P20, P25, X10, X30, Renesas R-Car H3, AMD/Xilinx Zynq UltraScale+ MPSoC, NXP i.MX 8, NXP S32G, S32R, TI AM67, 67A, 65x, 64x, 62P, 62x, 62Ax
Cortex-A57
4.1 DMIPS/MHz
Snapdragon 808, 810, Nvidia Tegra X1, Samsung Exynos 7, Alpine AL-324, Renesas R-Car H3
Cortex-A72
Snapdragon 618, 620, 650, 652, HiSilicon Kirin 950, 955, AWS Graviton, Marvell ARMADA 7K, 8K, NXP i.MX 8, TI AM68, 69, 68A, 69A, TI DRA82x, TI TDA4x
Cortex-A73
HiSilicon Kirin 960, MediaTek Helio X30
v8.2-A
Cortex-A55
Renesas R-Car S4, NXP i.MX 9
Cortex-A75
L1D: 64 KB, メモリ管理ユニット, TrustZone, 64bit仮想アドレス
Cortex-A76
4命令decode
Renesas R-Car V4H
Cortex-A77
Cortex-A78
Cortex-A78C[34]
v9.0-A
Cortex-A510
Dimensity 9000, Snapdragon 7 Gen 1, Snapdragon 8 Gen1, Snapdragon 8 Gen2, Exynos 2200
Cortex-A710
Dimensity 9000, Snapdragon 7 Gen 1, Snapdragon 8 Gen1, Snapdragon 8 Gen2, Exynos 2200
Cortex-A715
v9.2-A
Cortex-A520
コードネーム: Hayes
Cortex-A720
コードネーム: Hunter
Cortex-X
v8.2-A
Cortex-X1 (英語版 )
v9.0-A
Cortex-X2
Dimensity 9000, Qualcomm Snapdragon 8 Gen 1, Exynos 2200
Cortex-X3
Dimensity 9200, Snapdragon 8 Gen 2
v9.2-A
Cortex-X4 (英語版 )
Neoverse
v8.2-A
Neoverse E1
Neoverse N1
Ampere Altra, Altra Max, AWS Graviton2
v8.4-A
Neoverse V1
AWS Graviton3
v9.0-A
Neoverse E2
Neoverse N2
Neoverse V2
NVIDIA Grace
サードパーティー
ファミリー
アーキテクチャ
名称
特徴
キャッシュ (I/D)/MMU
性能 MIPS @ MHz
採用製品
StrongARM
v4
SA-1
16 KB/8 – 16 KB, MMU
1.0 DMIPS/MHz (203 – 206 MHz)
XScale
v5TE
80200/IOP310/IOP315
I/O Processor
80219
IOP321
en:Iyonix
IOP33x
PXA210/PXA250
Applications processor
ザウルス SL-5600, SL-A300
PXA255
32 KB/32 KB, 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
Snapdragon
v7-A
Scorpion
アプリケーション向け, 1 – 2コア対称型マルチプロセッシング, VFPv3, NEON, Thumb-2, Jazelle RCT, アウト・オブ・オーダー実行 , 投機的実行
可変(L1+L2), MMU , TrustZone
2.1 DMIPS/MHz (800 MHz – 1.5 GHz)
Qualcomm Snapdragon S1, S2, S3 (第1 – 3世代)
Krait
アプリケーション向け, 1 – 4コア対称型マルチプロセッシング, VFPv4
MMU , TrustZone
3.3 DMIPS/MHz ( – 2.5 GHz)
Qualcomm Snapdragon S4 (第4世代・S4 Playは除く), 400/600/800 (第5世代)
v8-A
Kryo
64 KB/512 KB – 1 MB
6.3 DMIPS/MHz ( – 2.6 GHz)
Qualcomm Snapdragon 820
Centriq
v8-A
Folker
Centriq 2400
ARMADA
v7-A
Sheeva PJ4
アプリケーション向け, 1 – 4コア対称型マルチプロセッシング, VFPv3, Wireless MMX2, Thumb-2
可変(L1+L2), MMU , TrustZone
2.42 DMIPS/MHz ( – 1.5 GHz)
Marvell ARMADA 500/600シリーズ
Sheeva PJ4B
組み込み向け, 1 – 4コア対称型マルチプロセッシング, VFPv3, NEON, Wireless MMX2, Thumb-2
可変(L1+L2), MMU , TrustZone
2.61 DMIPS/MHz ( – 1.6 GHz)
Marvell ARMADA XP/370/1500
Apple Ax
v7-A
Swift
アプリケーション向け, 2コア対称型マルチプロセッシング, VFPv4
32 KB/32 KB
1.1 GHz, 1.4 GHz
Apple A6 , Apple A6X
v8-A
Cyclone
アプリケーション向け, 2コア, AArch64
64 KB/64 KB
1.3 GHz
Apple A7
Cyclone gen 2
1.1 GHz, 1.4 GHz, 1.5 GHz
Apple A8
Typhoon
アプリケーション向け, 3コア, AArch64
1.5 GHz
Apple A8X
Twister
アプリケーション向け, 2コア, AArch64
2.23 GHz, 2.26 GHz
Apple A9 , Apple A9X
Hurricane, Zephyr
アプリケーション向け, 2+2コア, AArch64
1.64 GHz, 2.33 GHz
Apple A10 Fusion
アプリケーション向け, 3+3コア, AArch64
2.38Ghz
Apple A10X Fusion
Monsoon, Mistral
アプリケーション向け, 2+4コア, AArch64
L1: 64 KB/64 KB, L2: 8 MB
2.39 GHz
Apple A11 Bionic
Vortex, Tempest
L1: 128 KB/128 KB, L2: 8 MB
2.49 GHz
Apple A12 Bionic
アプリケーション向け, 4+4コア, AArch64
2.5GHZ
Apple A12X Bionic, Apple A12Z Bionic
v8.3-A
Lightning, Thunder
アプリケーション向け, 2+4コア, AArch64
L1: 48 KB/48 KB, L2: 4 MB
2.65 GHz
Apple A13 Bionic
v8.6-A
Firestorm, Icestorm
L1: 192 KB/64 KB, L2: 12 MB/4 MB
2.99 GHz
Apple A14 Bionic
Apple M1
アプリケーション向け, 4+4コア, AArch64
3.2 GHz
Apple M1
Apple M1 Pro
アプリケーション向け, 6+2コア, 8+2コア, AArch64
Apple M1 Pro
Apple M1 Max
アプリケーション向け, 8+2コア, AArch64
Apple M1 Max
Apple M1 Ultra
アプリケーション向け, 16+4コア, AArch64
Apple M1 Ultra
Apple A15
Avalanche, Blizzard
アプリケーション向け, 2+4コア, AArch64
3.23 GHz
Apple A15
Apple M2
アプリケーション向け, 4+4コア, AArch64
L1: 192 KB/128 KB, L2: 16 MB/4 MB
3.5 GHz
Apple M2
Apple M2 Pro
アプリケーション向け, 6+4コア, 8+4コア, AArch64
L1: 192 KB/128 KB, L2: 32 MB/4 MB
Apple M2 Pro
Apple M2 Max
アプリケーション向け, 8+4コア, AArch64
Apple M2 Max
Apple A16
Everest, Sawtooth
アプリケーション向け, 2+4コア, AArch64
L2: 16 MB/8 MB/24 MB
3.46 GHz
Apple A16
Tegra K1
v8-A
Denver
128 KB/64 KB
Google Nexus 9 , Xiaomi Mi Pad
Parker
Denver 2.0
DRIVE PX2
Xavier
Carmel
DRIVE Xavier, Jetson AGX Xavier
Exynos
v8-A
Exynos M1
64 KB/2 MB
(4コアシェア)
Exynos 8890 (Exynos 8 Octa)
Exynos M2
Exynos 8895
Exynos M3
Exynos 9810
ARMv7-A, v8-A は以下の SoC で実装されている。
Allwinner (全志科技)
Amlogic (晶晨半导体)
Apple A4 , A5 , A5X , A6 , A6X , A7 , A8 , A8X , A9 , A9X , A10 , A10X , A11 , A12 , A12X
Freescale i.MX
Fujitsu ARM based SoC Platform (FASP)
HiSilicon (海思半导体)
Marvell ARMADA
MediaTek
NVIDIA Tegra
Qualcomm Snapdragon
Renesas EV2, APE6
Rockchip (瑞芯微电子)
Samsung Hummingbird, Exynos
ST-Ericsson NovaThor
STMicroelectronics SPEAr
Texas Instruments OMAP
Trident PNX
ZiiLABS ZMS
ARMアーキテクチャを採用しているCPU/メーカ
ARMホールディングスの概要 にあるように、ARMホールディングスはARMアーキテクチャの設計のみをしており、製造は行ってはいない。ARMはIPコア として各社にライセンスされ、それぞれの会社において機能を追加するなどしてCPU として製造される。製造されたCPUはそのまま、あるいはボード上に実装、もしくは製品に組み込まれた形で販売などされる。
以下に『CPUそのもの』『ボード上に実装したもの』などCPUやボードのシリーズ名やブランド名などが明確な主なメーカ名/CPU名/シリーズ名等を記する。
32ビットARM
命令セット
ARM は RISC プロセッサであり、Thumb 命令ではなく ARM 命令の場合、その命令セットは
32ビット固定長命令
ロード/ストアアーキテクチャ
3オペランドのレジスタ間演算
多くの命令が1サイクルで実行可能
といった、多くの32ビットRISCプロセッサに共通する特徴が見られる。
ARMプロセッサは、PC 相対アドレッシングやプレ-/ポスト-インクリメント・アドレッシングモードなど、RISCとみなされる他のアーキテクチャと比べ、豊富なアドレッシングモード を持っている。
もう一つ留意すべきことは、ARMの命令セットが時間とともに増加しているということである。例えば、初期のARMプロセッサ(ARM7TDMIより以前のもの)は2バイトの値をロードする命令がなかった。
CPUモード
32ビット ARM アーキテクチャはいくつかのCPUモードを持つ。同時には1つのモードにしかなれない。命令や外部からの割込みなどでモードが切り替わる[35] 。
ユーザーモード
唯一の非特権モード。
高速割込みモード
FIQ 割込みが発生したときに切り替わる特権モード。
割込みモード
IRQ 割込みが発生したときに切り替わる特権モード。
スーパーバイザーモード
CPU がリセットされたときか SWI 命令が実行されたときに切り替わる特権モード。
アボートモード
プリフェッチアボートかデータアボート例外が発生したときに切り替わる特権モード。
未定義モード
未定義命令が実行されたときに切り替わる特権モード。
システムモード (ARMv4以降)
これが唯一例外が原因で切り替わるモードではない。CPSRレジスタにこのモードを書くことによりこのモードに切り替えることが出来る。
MONモード (要セキュリティ拡張)
TrustZone 拡張をサポートするために作られたモニターモード。
HYP 別名 PL2 モード (ARMv7以降)
仮想化拡張、ハイパーバイザーモード。[36]
レジスタ
レジスタ R0 から R7 は全ての CPU モードで同一。これらは決してバンクされない。
R13 と R14 はシステムモード以外の全ての特権 CPU モードでバンクされる。独自の R13 と R14 を持つことにより例外からそれぞれのモードに切り替えられる。R13 はスタックポインタ、R14 は関数からの戻りアドレスを持つ。
CPU モードごとのレジスタ
usr
sys
svc
abt
und
irq
fiq
R0
R1
R2
R3
R4
R5
R6
R7
R8
R8_fiq
R9
R9_fiq
R10
R10_fiq
R11
R11_fiq
R12
R12_fiq
R13
R13_svc
R13_abt
R13_und
R13_irq
R13_fiq
R14
R14_svc
R14_abt
R14_und
R14_irq
R14_fiq
R15
CPSR
SPSR_svc
SPSR_abt
SPSR_und
SPSR_irq
SPSR_fiq
別名:
R13 は SP とも呼ばれ、スタックポインタ
R14 は LR とも呼ばれ、リンクレジスタ
R15 は PC とも呼ばれ、プログラムカウンタ
CPSR は下記32ビットを持つ[37] 。
M (ビット 0 - 4) はプロセッサモードビット
T (ビット 5) は Thumb ステートビット
F (ビット 6) は FIQ 無効ビット
I (ビット 7) は IRQ 無効ビット
A (ビット 8) は不正データアボート無効ビット
E (ビット 9) はデータエンディアンビット
IT (ビット 10 - 15 と 25 - 26) は if-then ステートビット
GE (ビット 16 - 19) は greater-than-or-equal-to ビット
DNM (ビット 20 - 23) は書き換え禁止ビット
J (ビット 24) は Java ステートビット
Q (ビット 27) は sticky overflow ビット
V (ビット 28) はオーバーフロービット
C (ビット 29) は carry/borrow/extend ビット
Z (ビット 30) は零ビット
N (ビット 31) は negative/less ビット
VFP/NEON用として、これらとは別に32ビット用はs0〜s31のレジスタがある。これらは、64ビットレジスタとしてd0〜d15として使える。s0〜s31とd0〜d15はオーバーラップしている。大半の ARMv7-A SoC はさらに、d16〜d31も使える。
VFP/NEON用のシステムレジスタとして、以下の3つがある。
FPSCR - Floating-point status and control register (浮動小数点状態制御レジスタ)
FPEXC - Floating-point exception register (浮動小数点例外レジスタ)
FPSID - Floating-point system ID register (浮動小数点システムIDレジスタ)
条件実行
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言語の
のような文を1つのARM命令
として表すことができる。
これにより、多くのARMプログラムは通常RISCプロセッサに期待されるようなプログラムよりも密度の高いものになる。このため、命令フェッチに伴うメモリへのアクセス頻度が少なくなり、分岐に伴うストールも回避しやすく、パイプライン処理を効率的に使うことができる。このことが、ARMがARMより複雑なCPUデザインと競合することを可能にした特徴的な一因のひとつである。
Thumb
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テクノロジを搭載している。
Thumb-2
Thumb-2 テクノロジは2003年に発表されたARM1156コア で登場した。Thumb-2はThumbの制限された16ビット長の命令セットを追加の32ビット長命令で拡張し、命令セットの幅を広げるものである。公称されているThumb-2の目的は、Thumbと同様のコード密度と32ビットメモリ上でのARM命令セットと同様の性能を得ることであり、Thumb-2はビットフィールド操作、テーブル分岐や条件付き実行などを含んでいる。従来はThumbモードにおいて使用可能な汎用レジスタは8本のみであり自由度が低かったが、Thumb-2で導入された32ビット長命令では16本全てのレジスタが使用可能である。16ビット長命令と32ビット長命令はモードの切り替えなしで混在可能であるため、ThumbモードにおいてもARMモードに近い自由度が得られるようになった。
Jazelle
ARMは、Javaバイトコード をハードウェアでネイティブに実行できる技術を実装した。これはARMやThumbモードと並ぶもう一つの実行モードであり、ARM/Thumbの切り替えと同様にしてアクセスすることができる。後述のJazelle RCTに対してJazelle DBX (Direct Bytecode eXecution) とも言う。
Jazelleテクノロジを搭載した最初のプロセッサはARM926EJ-S である。CPU名の'J'がJazelleを表している。
Thumb Execution Environment (ThumbEE)
ThumbEE はJazelle RCT (Runtime Compilation Target)とも呼ばれる第4のモードである。2005年にアナウンスされ、Cortex-A8 プロセッサで最初に実装された。Thumb-2命令セットに小規模な変更を加えたもので、JITコンパイラ のように実行時にコードを生成する場合に向いている。主な対象はJava 、.NET MSIL (C# など)、Python 、Perl などの言語である。
DSP 拡張命令
デジタル信号処理 とマルチメディアアプリケーション向けに ARMアーキテクチャを拡張するため、いくつかの命令が追加された[2] 。ARMv5TE と ARMv5TEJ というアーキテクチャ名の "E" がこれを表していると思われる。
追加された命令は、デジタルシグナルプロセッサ アーキテクチャで一般的なものである。例えば、符号付積和演算、飽和加算と飽和減算、「先行する0のカウント」のバリエーションである。
SIMD
ARMv6で導入された[38] 。32ビット幅。
Advanced SIMD (NEON)
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 となった。
Wireless MMX
Wireless MMX (WMMX) はインテルがXScale プロセッサ向けに開発したSIMD命令セットである。64ビット幅のレジスタが16本用意されており、8/16/32/64ビットのSIMD整数演算が可能。XScaleとその売却先であるマーベル・テクノロジー・グループ製のARM SoCに採用されている。命令セット自体はx86プロセッサのMMXとは全く異なるものの、GCC やVisual C++ 等のコンパイラで利用できる組み込み関数はMMXとの互換性がある程度確保されており、これを利用すればMMX向けに記述されたコードを比較的容易に移植することができる。
VFP
VFP (Vector Floating Point) はARMアーキテクチャのコプロセッサ拡張である。半精度(v3以降)・単精度・倍精度の浮動小数点 演算機能を提供する。
VFPv1 - 廃止
VFPv2 - ARMv5TE、ARMv5TEJ、ARMv6 で利用可能
VFPv3 - ARMv7 で利用可能。通常はレジスタ数32個であるが、NVIDIA Tegra 2 シリーズなどはレジスタ数が半分のVFPv3-D16を採用。Cortex-A8の実装はパイプライン化されておらず非常に低速 (VFP Lite)。
VFPv4 - Cortex-A5, A7, A15, Apple A6 , Snapdragon Krait などで利用可能。IEEE754 準拠の(乗算結果の丸めを行わない)Fused multiply add 対応。VFPv4-D16 もあり。
"Vector" の名を冠する通り、いくつかの命令においてはベクタモードと呼ばれる1命令で複数のレジスタに対して演算を行うモードが用意されている。このモードを使えばSIMD 演算が可能であるが、プログラミングモデルがやや煩雑[注釈 1] であったことや、当時のARM11プロセッサにおける実装はスカラ命令を要素数分だけシーケンシャルに実行するというSIMD演算のメリットを享受できないものであったため、あまり積極的には使われなかった。VFPv3を実装するARMv7世代以降ではモダンなSIMD命令セットであるAdvanced SIMD拡張命令 (NEON) が導入されたため、現在ではベクタモードの利用は推奨されていない。Cortex-A9やA15ではベクタモードに対応していない[注釈 2] ことから分かるように、現在のARMアーキテクチャにおけるVFPの位置づけはスカラ専用の浮動小数点演算コプロセッサであり、SIMD演算用途についてはNEONに道を譲っている。
単精度の浮動小数点演算はNEONでも実行可能であるが、倍精度の浮動小数点演算やIEEE754準拠の4つの丸めモード、非正規化数のサポート等はNEONには存在しないため、これらを利用したい場合はVFP命令を使う必要がある。
64ビットARM
ARMv8-Aから採用。ARMの64ビットモードアーキテクチャAArch64 では、汎用レジスタはすべて64ビットとなり、数も16個から31個に増やされる。サーバ用途も意識して仮想化 支援命令および暗号 支援命令が追加され、SIMD 拡張命令であるNEONも大幅に強化される。
命令セットの特徴
汎用レジスタの増加と64ビット化に伴い、命令セットは完全に再定義されている。コード効率を重視して命令長は32ビットのままで、32ビットARMの特徴であった条件付き実行命令の大半が削除される。これによって一般的なRISC命令セットに近くなったが、依然としてコードサイズを小さくするための工夫が随所に織り込まれている。
AArch64モードにおける命令セットはA64と呼ばれ、以下にA64命令セットの特徴を示す。
即値シフト付きオペランド
これは従来の32ビットARM命令セットにおいてフレキシブル第2オペランド (Flexible second operand) と呼ばれていたものに相当する。多くの基本的な演算命令においては、入力オペランドのうち1つに対する操作を即値左シフト、即値論理右シフト、即値算術右シフト、シフトなし、の4つから選択することができ、演算命令と即値シフト命令を一体化することができる。なお、従来とは異なりローテートは不可能となった。
条件付き実行命令
汎用レジスタ数が倍増したのに伴い、基本命令の多くからは条件付き実行機能が削除されたが、それでも比較的豊富な条件付き実行命令が定義されている。代表的なものを挙げるとCCMP(条件付き比較)、CINC(条件付きインクリメント)、CSEL(条件付き選択; いわゆるCMOV)等が存在する。
Compare-and-Branch命令
PC相対分岐においては、ゼロフラグを参照する場合のみであるが比較と条件分岐を1命令で行うことが可能になっている (CBZ/CBNZ)。これは従来Thumb-2命令セットでのみ定義されていたものであるが、A64モードでは基本命令として定義されている。
符号拡張/ゼロ拡張付き命令
算術演算/比較命令については、入力オペランドのうち1つを8,16,32ビットから32もしくは64ビットに符号/ゼロ拡張するバージョンが用意されている。
汎用レジスタは64ビット幅であるが、多くの演算命令にはレジスタの下位32ビットのみを参照する32ビット命令が用意されている。この場合、レジスタの部分書き換えが発生しないように、演算結果の32ビットの値は暗黙のゼロ拡張が行われた上で64ビットレジスタに格納される。
Advanced SIMD and Floating-point 命令
A64命令セットにおいては従来のVFPとAdvanced SIMD (NEON) は統合され、一つの命令体系となった。これに伴い、名称についてはAdvanced SIMD and Floating-point命令と呼ばれるようになった。
主な変更点は倍精度浮動小数点演算への対応、IEEE754への準拠、レジスタ本数の増加の3点である。レジスタについては128ビットのレジスタが32本に増加している。依然として64ビットレジスタとしてアクセスすることも可能であるが、32ビットモードとは異なり、64ビットレジスタは128ビットレジスタの下位64ビットにマッピングされている。
VFPとAdvanced SIMDの統合に伴い、従来はVFPが担っていたスカラの浮動小数点演算命令は、SIMDレジスタのうち下位の32/64ビットにのみ作用する命令として再定義されている。例えば浮動小数点加算命令については
fadd s2 , s1 , s0 ; s2 <= s0 + s1(単精度スカラ)
fadd d2 , d1 , d0 ; d2 <= d0 + d1(倍精度スカラ)
fadd v2.4s , v1.4s , v0.4s ; [v2] <= [v0] + [v1](単精度x4 SIMD)
fadd v2.2d , v1.2d , v0.2d ; [v2] <= [v0] + [v1](倍精度x2 SIMD)
のようなバリエーションが命令のニーモニックを保ちつつ、オペランドのプレフィックス (s, d, v) とサフィックスを変更することによって記述可能になっている(サフィックスについては、一部の環境向けのアセンブラではニーモニック側に付加する省略記法も許されるようである)。これはx86プロセッサのSSE命令セットがスカラ命令とSIMD命令の双方を備えているのとよく似ている。
Scalable Vector Extension
Scalable Vector Extension (SVE) は、Armv8.2-Aで追加されたSIMD 命令セット。富岳 に使われたA64FX 、Arm Neoverse V1[39] (AWS Graviton3[40] )などで実装されている[41] 。次の特徴がある[41] 。
スケーラブルなベクトル長(VL)。128~2048ビットに対応する。レジスタはAdvanced SIMDと兼用で、Advanced SIMDでは下位128ビットを使用する。レジスタ数は引き続き32個。
ベクトル長に囚われない(Vector Length Agnostic; VLA)プログラミング。レジスタのビット長が異なったとしても、同一の命令でSIMD処理をすることが可能である。
ギャザー・ロードとスキャッター・ストア
レーン単位の条件付き実行制御
条件付き実行制御主導のループ制御と管理
ベクトル・パーティショニングとSW管理の投機
拡張整数および浮動小数点演算の水平方向の縮小
スカラー化内部ベクトル・サブループ
Scalable Vector Extension 2 (SVE2) は、Armv9.0-Aで追加されたSIMD命令セット[42] 。SVEを発展させて汎用化し[43] 、Advanced SIMD (NEON)のスーパーセットとなった[44] 。SVEとは異なり、SVE2はArmv9-Aでは実装が必須となり[45] 、Arm Cortex-X2等で実装されている[46] 。ただし、Arm Cortex-X2, X3, X4, Neoverse V2で採用しているベクトル長はAdvanced SIMDと同じく128ビットで、特に長くはしていない[47] [48] [49] [50] 。
Scalable Matrix Extension
Scalable Matrix Extension (SME) は、Armv9.2-Aで追加されたSIMD 命令セット。Scalable Vector Extension は(1次元)ベクトルを対象とするのに対して、Scalable Matrix Extension は(2次元)行列 を対象とする[51] 。Apple M4等で実装されていて[52] 、Apple M4はベクトル長として512ビットを採用[53] 。
Scalable Matrix Extension 2 (SME2) は、Armv9.4-Aで追加されたSIMD命令セット。[54]
脚注
注釈
^ ベクトルレジスタが明示的に用意されておらず、複数のスカラレジスタに対して演算を行う。ベクタ長は固定されておらず、FPSCRという特殊なレジスタで最大8要素までのベクタ長を指定可能。また、レジスタがスカラモードのみで使えるバンクとベクタモードで使えるバンクに分けられており、レジスタの組み合わせに制約がある。
^ ARMプロセッサのベクタモードへの対応はMVFR0レジスタの24-27ビット目を参照することで確認できる。
出典
^ Arm’s Solution to the Future Needs of AI, Security and Specialized Computing is v9
^ “Arm® (日本)|半導体IP|アーム公式サイト – Arm® ”. arm.com. 2022年11月18日 閲覧。
^ “世の中ARMだらけ!? 現代社会を支える「ARM」ってなんだろう? ”. ドスパラ. 2022年11月18日 閲覧。
^ “ARMとは ”. コトバンク. 2022年11月18日 閲覧。
^ “Armがマイコン向けハイエンドCPUコア、Cortex-M85発表 ”. 日経. 2022年11月18日 閲覧。
^ http://www.arm.com/miscPDFs/3823.pdf
^ [1]
^ http://www.jp.arm.com/pressroom/08/080125.html
^ https://news.mynavi.jp/techplus/article/20100910-cortex-a15/
^ http://ascii.jp/elem/000/000/645/645995/
^ Smotherman, Mark. “Which Machines Do Computer Architects Admire? ”. 2011年9月19日 閲覧。
^ “スマートフォンを席巻するARMプロセッサーの歴史 ”. ASCII.jp (2010年12月20日). 2013年7月24日 閲覧。
^ “ARMが初の64ビットCPU「Cortex-A50シリーズ」発表、サーバー向けに16コア以上に対応 ”. ITpro (2012年11月1日). 2014年11月27日 閲覧。
^ 2005年 、ARM社のセミナー資料による。
^ “Sony Japan | プレスリリース| クリエ用新アプリケーションCPU「Handheld EngineTM」の開発について ”. www.sony.co.jp . 2019年4月8日 閲覧。
^ News:米速報:次世代マイクロアーキテクチャ「ARM11」発表
^ Googleが新型「Chromebook」を発表、Samsung製で249ドル
^ 【PC Watch】 Samsung、初のARM Cortex-A15プロセッサ「Exynos 5250」
^ 日本TI、モバイルの概念を一変させる高性能、高機能のOMAP™5プラットフォームを発表
^ 【後藤弘茂のWeekly海外ニュース】 ARMが次世代CPU「Atlas」と「Apollo」の計画を発表
^ AMD’s K12 ARM CPU Now In 2017
^ 苦難の2013年を越え、輝かしい2014年に賭けるAMD (大きな期待が寄せられているサーバー向け64ビットARMプロセッサ)
^ ARM Sets New Standard for the Premium Mobile Experience - ARM
^ Qualcomm Introduces Next Generation Snapdragon 600 and 400 Tier Processors for High Performance, High-Volume Smartphones with Advanced LTE | Qualcomm
^ "ARM Cortex-M1" , ARM product website. Accessed April 11, 2007.
^ "ARM Extends Cortex Family with First Processor Optimized for FPGA" , ARM press release, March 19 2007. Accessed April 11, 2007.
^ ARM Cortex-M1
^ Actel: 製品とサービス: プロセッサ: ARM: Cortex-M1
^ AnandTech | Cortex-M7 Launches: Embedded, IoT and Wearables
^ Cortex-M7 Overview - ARM
^ Cortex-M23 Overview - ARM
^ Cortex-M33 Overview - ARM
^ “ARMv8-A Synchronization primitives ”. p. 6. 2024年1月3日 閲覧。
^ Ltd, Arm. “Cortex-A78C ”. Arm | The Architecture for the Digital World . 2023年1月14日 閲覧。
^ “Processor mode ”. ARMホールディングス . 2013年3月26日 閲覧。
^ “KVM/ARM ”. 2013年4月3日 閲覧。
^ 2.14. The program status registers - Cortex-A8 Technical Reference Manual
^ DSP & SIMD - ARM
^ “Neoverse V1 ”. 2024年6月12日 閲覧。
^ “Faster ML inference with AWS Graviton3 ”. community.arm.com . 2024年6月12日 閲覧。
^ a b “ARM、Hot ChipsでHPC用のスケーラブル・ベクトル拡張を公表 ”. HPCwire Japan (2016年8月28日). 2022年1月2日 閲覧。
^ “Overview - Learn the architecture - Introducing SVE2 ”. 2024年6月2日 閲覧。
^ 株式会社インプレス (2021年3月31日). “Arm、10年ぶりの新アーキテクチャ「Armv9」。富岳のSVE改良版やコンフィデンシャルコンピューティング機能追加 ”. PC Watch . 2022年1月2日 閲覧。
^ “Learn the architecture - Introducing SVE2 ”. 2024年6月2日 閲覧。
^ “machine/arch-armv9: remove crc and sve tunes, they are mandatory - Patchwork ”. patchwork.yoctoproject.org . 2024年6月12日 閲覧。
^ “The Cortex-X2: More Performance, Deeper OoO - Arm Announces Mobile Armv9 CPU Microarchitectures: Cortex-X2, Cortex-A710 & Cortex-A510 ”. 2024年6月1日 閲覧。
^ “Arm Cortex‑X2 Core Technical Reference Manual ”. 2024年6月1日 閲覧。
^ “Arm Cortex-X3 Core Technical Reference Manual ”. 2024年6月1日 閲覧。
^ “Arm Cortex-X4 Core Technical Reference Manual ”. 2024年6月1日 閲覧。
^ “Arm Neoverse V2 Core Software Optimization Guide ”. 2024年6月2日 閲覧。
^ “Scalable Matrix Extension for the Armv9-A Architecture ”. community.arm.com . 2024年5月31日 閲覧。
^ “Overview | Hello SME documentation ”. scalable.uni-jena.de . 2024年6月1日 閲覧。
^ “Vector Length - Microbenchmarks | Hello SME documentation ”. scalable.uni-jena.de . 2024年6月1日 閲覧。
^ “Arm A-Profile Architecture Developments 2022 ”. community.arm.com . 2024年5月31日 閲覧。
関連項目
外部リンク
ARMベースのチップ
アプリケーション プロセッサー
組込み用 マイクロコントローラ
Cortex-M0 Cortex-M0+ Cortex-M1 Cortex-M3
Actel SmartFusion, SmartFusion 2
Atmel AT91SAM3
Cypress PSoC 5
Energy Micro EFM32 Tiny, Gecko, Leopard, Giant
Fujitsu FM3
NXP LPC1300, LPC1700, LPC1800
Silicon Labs Precision32
STマイクロエレクトロニクス STM32 F1, F2, L1, W
テキサス・インスツルメンツ F28, LM3, TMS470, OMAP 4
Toshiba TX03
Cortex-M4 Cortex-M4F
リアルタイム処理 マイクロコントローラ
クラシック プロセッサー