コンテンツにスキップ

ARMアーキテクチャ

出典: フリー百科事典『ウィキペディア(Wikipedia)』
ARM architectureから転送)
ARMアーキテクチャ
開発者 ARMホールディングス
ビット数 32ビット64ビット
発表 1983年
バージョン ARMv9[1]
デザイン RISC
タイプ Register-Register
エンコード Fixed
ブランチ Condition code
エンディアン Bi
拡張 Thumb, Jazelle, VFP, NEON, SVE, SME
レジスタ
16(32ビット)、31(64ビット)

ARMアーキテクチャ(アーム[2][3][4][5]アーキテクチャ) とは、ARMホールディングスの事業部門であるARM Ltd.により設計・ライセンスされているアーキテクチャである。組み込み機器や低電力アプリケーションからスーパーコンピューターまで様々な機器で用いられている。

概要

[編集]

ARMRISC/CISCARM25,000CISCRISCRISC

2005ARM3275%[6]使32CPU[]ARMCPUPDAPC使20159[7]

ARM20081100[8]20109200[9]ARM使OMAPXScaleNVIDIATegraSnapdragoni.MX RZSynergy

ARM32ARM[]ARM20111027ARM64ARMv8[10]

歴史

[編集]

ARM1983MOS 65026502

ARMMC6800RISC6502ARM[11]

1985ARM1ARM2ARM23226163216ARM23000032MC680001/41/3CPUARM34KB

1980Apple Computer:AppleARM1990Advanced RISC MachinesARMAcorn RISC MachineAdvanced RISC MachineAdvanced RISC Machines1998NASDAQARM Limited

ARM61991AppleARM6ARM610Apple Newton

ARM230000使ARM635000ARMCPU

ARM6ARM7ARM6ARM

ARMv4ARM7ARM7TDMIARM7TDMIThumbTDMIThumb (Debug)  (Multiplier)ICE

DECARMv4StrongARM233MHzStrongARM1Wi960StrongARMXScale

StrongARMARM9ARM10NECARM11

2005Cortex-ACortex-RCortex-MCortexARM[12]201211ARM64Cortex-A50[13]

ARMIPIBMAtmelSTMediaTek

ARM使CPU32CPU200461%[14]

主な採用製品

[編集]

ARM6

[編集]

ARM7/7E

[編集]

ARM9/9E

[編集]


DS/DS Lite/DSiCPUARM7

Tapwave Zodiac


Sun SPOT

Qualcomm
MSM6550CDMA2000 1xEV-DO Rel.0

MSM6800CDMA2000 1xEV-DO Rev.A

3G3.5GNTT FOMA 900i901iau(KDDI)CDMA 1XCDMA 1X WINSoftBank 3G

H11T3.5G

WS009KE "9 (nine)"WILLCOMPHS

Nokia N-Gage


Handheld Engine CXD2230GA SONY CLIE[15]


Sharp Brain

 EV3

ARM11/11E

[編集]

20072002429[16]
717ARM1176JZF-STC35711XBG20082

NVIDIA Tegra
Zune HD


iPod touch

Zune


T-Mobile G1

Qualcomm
MSM7500EV-DO Rev.AARM9E
KDDIau
KCP+CDMA 1X WINW56TW54SAW61SW62TARM9E

CDMA 1X WINE30HT

MSM7600EV-DO Rev.AARM9E
KYOCERA Zio M6000

HTC Hero

NTTFOMA902i905iSymbianSH-4A

WS018KE (WILLCOM 9)WILLCOMPHS

Samsung S3C6400ARM 1176JZ(F)-S v1.0
iPhone 3G412 MHz

PDA
 Internet Tablet N800

mylo COM-2


Zeebo (DL3D)


Raspberry Pi model 1A

Cortex-M3

[編集]

2004

ARMv7-M/v7E-MCortex-M3,M4,M7

使使


mbed - NXPLPC1768

Cortex-A8

[編集]

20092010Android

NetWalker

Samsung S5PC100
iPhone 3GS600 MHz

iPod touch (3)

Apple A4Cortex-A8Apple
iPhone 4800MHz

iPad1GHz

iPod touch4

Apple TV2010


BeagleBoardBeagleBoard-xMBeagleBoneBeagleBone Black


Cubieboard

Cortex-A9

[編集]

Cortex-A15

[編集]

20122013

1.7GHz Exynos 5250 201210[17]12.8GB/s[18]

2GHz20123[19]

NVIDIA  Tegra 4 20131


ODROID-XU

Cortex-A57

[編集]

20121064 ARMCortex-A57, A53AtlasApollo[20]2014Samsung Galaxy Note 4 

AMD 2015 Opteron A1100 (Seattle) [21][22]

A57A5384+4A574A534

Cortex-A72

[編集]

201523[23]2015[24]Cortex-A57

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.MX3
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 で実装されている。

ARMアーキテクチャを採用しているCPU/メーカ

[編集]

ARMARMARMARMIPCPUCPU

CPUCPU/CPU/

32ビットARM

[編集]

命令セット

[編集]

ARM  RISC Thumb  ARM 

32

/

3

1

32RISC

ARMPC-/-RISC

ARMARMARM7TDMI2

CPUモード

[編集]

32 ARM CPU1[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/NEON32s0s3164d0d15使s0s31d0d15 ARMv7-A SoC d16d31使

VFP/NEON3
  • 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言語の

a += (j << 2);

のような文を1つのARM命令

        ADD     Ra, Ra, Rj, LSL #2



ARMRISC使ARMARMCPU

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

[編集]

ARMJavaARMThumbARM/ThumbJazelle RCTJazelle DBX (Direct Bytecode eXecution) 

JazelleARM926EJ-SCPU'J'Jazelle

Thumb Execution Environment (ThumbEE)

[編集]

ThumbEEJazelle RCT (Runtime Compilation Target)42005Cortex-A8Thumb-2JITJava.NET MSILC#PythonPerl

DSP 拡張命令

[編集]

デジタル信号処理とマルチメディアアプリケーション向けに ARMアーキテクチャを拡張するため、いくつかの命令が追加された[2]ARMv5TEARMv5TEJ というアーキテクチャ名の "E" がこれを表していると思われる。

追加された命令は、デジタルシグナルプロセッサアーキテクチャで一般的なものである。例えば、符号付積和演算、飽和加算と飽和減算、「先行する0のカウント」のバリエーションである。

SIMD

[編集]

ARMv6で導入された[38]。32ビット幅。

Advanced SIMD (NEON)

[編集]

Advanced SIMDNEON64128SIMD8/16/32/6432 () SIMDARMv732CPUVFP使

 ARMv7 SoC  NEON NVIDIA Tegra2SPEAr1310SPEAr1340 

VFP32643264SIMD (D0-D31) 16128SIMD (Q0-Q15) 128Q0D0D1264

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とは全く異なるものの、GCCVisual C++等のコンパイラで利用できる組み込み関数はMMXとの互換性がある程度確保されており、これを利用すればMMX向けに記述されたコードを比較的容易に移植することができる。

VFP

[編集]

VFP (Vector Floating Point) ARMv3

VFPv1 - 

VFPv2 - ARMv5TEARMv5TEJARMv6 

VFPv3 - ARMv7 32NVIDIA Tegra2VFPv3-D16Cortex-A8 (VFP Lite)

VFPv4 - Cortex-A5, A7, A15, Apple A6, Snapdragon Krait IEEE754Fused multiply add VFPv4-D16 

"Vector" 1使SIMD[ 1]ARM11SIMD使VFPv3ARMv7SIMDAdvanced SIMD (NEON) Cortex-A9A15[ 2]ARMVFPSIMDNEON

NEONIEEE7544NEONVFP使

64ビットARM

[編集]

ARMv8-Aから採用。ARMの64ビットモードアーキテクチャAArch64では、汎用レジスタはすべて64ビットとなり、数も16個から31個に増やされる。サーバ用途も意識して仮想化支援命令および暗号支援命令が追加され、SIMD拡張命令であるNEONも大幅に強化される。

命令セットの特徴

[編集]

643232ARMRISC

AArch64A64A64



32ARM2 (Flexible second operand) 14



CCMPCINCCSEL; CMOV

Compare-and-Branch

PC1 (CBZ/CBNZ)Thumb-2A64

/

/18,16,323264/

6432323264

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-ASIMD使A64FXArm Neoverse V1[39]AWS Graviton3[40][41][41]

(VL)1282048Advanced SIMDAdvanced SIMD128使32

(Vector Length Agnostic; VLA)SIMD







SW





Scalable Vector Extension 2 (SVE2) Armv9.0-ASIMD[42]SVE[43]Advanced SIMD (NEON)[44]SVESVE2Armv9-A[45]Arm Cortex-X2[46]Arm Cortex-X2, X3, X4, Neoverse V2Advanced SIMD128[47][48][49][50]

Scalable Matrix Extension

[編集]

Scalable Matrix Extension (SME) Armv9.2-ASIMDScalable Vector Extension 1Scalable Matrix Extension 2[51]Apple M4[52]Apple M4512[53]

Scalable Matrix Extension 2 (SME2) Armv9.4-ASIMD[54]

脚注

[編集]

注釈

[編集]
  1. ^ ベクトルレジスタが明示的に用意されておらず、複数のスカラレジスタに対して演算を行う。ベクタ長は固定されておらず、FPSCRという特殊なレジスタで最大8要素までのベクタ長を指定可能。また、レジスタがスカラモードのみで使えるバンクとベクタモードで使えるバンクに分けられており、レジスタの組み合わせに制約がある。
  2. ^ ARMプロセッサのベクタモードへの対応はMVFR0レジスタの24-27ビット目を参照することで確認できる。

出典

[編集]


(一)^ Arms Solution to the Future Needs of AI, Security and Specialized Computing is v9

(二)^ Arm® ()IP  Arm®.  arm.com. 20221118

(三)^ ARM!?ARM.  . 20221118

(四)^ ARM.  . 20221118

(五)^ ArmCPUCortex-M85.  . 20221118

(六)^ 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/

(十)^ https://ascii.jp/elem/000/000/645/645995/

(11)^ Smotherman, Mark. Which Machines Do Computer Architects Admire?. 2011919

(12)^ ARM.  ASCII.jp (20101220). 2013724

(13)^ ARM64CPUCortex-A5016.  ITpro (2012111). 20141127

(14)^ 2005ARM

(15)^ Sony Japan | | CPUHandheld EngineTM. www.sony.co.jp. 201948

(16)^ NewsARM11

(17)^ GoogleChromebookSamsung249

(18)^ PC Watch SamsungARM Cortex-A15Exynos 5250

(19)^ TIOMAP5

(20)^ Weekly ARMCPUAtlasApollo

(21)^ AMDs K12 ARM CPU Now In 2017

(22)^ 20132014AMD (64ARM)

(23)^ ARM Sets New Standard for the Premium Mobile Experience - ARM

(24)^ Qualcomm Introduces Next Generation Snapdragon 600 and 400 Tier Processors for High Performance, High-Volume Smartphones with Advanced LTE | Qualcomm

(25)^ "ARM Cortex-M1", ARM product website. Accessed April 11, 2007.

(26)^ "ARM Extends Cortex Family with First Processor Optimized for FPGA", ARM press release, March 19 2007. Accessed April 11, 2007.

(27)^ ARM Cortex-M1

(28)^ Actel: : : ARM: Cortex-M1

(29)^ AnandTech | Cortex-M7 Launches: Embedded, IoT and Wearables

(30)^ Cortex-M7 Overview - ARM

(31)^ Cortex-M23 Overview - ARM

(32)^ Cortex-M33 Overview - ARM

(33)^ ARMv8-A Synchronization primitives. p. 6. 202413

(34)^ Ltd, Arm. Cortex-A78C. Arm | The Architecture for the Digital World. 2023114

(35)^ Processor mode.  ARM. 2013326

(36)^ KVM/ARM. 201343

(37)^ 2.14. The program status registers - Cortex-A8 Technical Reference Manual

(38)^ DSP & SIMD - ARM

(39)^ Neoverse V1. 2024612

(40)^ Faster ML inference with AWS Graviton3. community.arm.com. 2024612

(41)^ abARMHot ChipsHPC. HPCwire Japan (2016828). 202212

(42)^ Overview - Learn the architecture - Introducing SVE2. 202462

(43)^  (2021331). Arm10Armv9SVE. PC Watch. 202212

(44)^ Learn the architecture - Introducing SVE2. 202462

(45)^ machine/arch-armv9: remove crc and sve tunes, they are mandatory - Patchwork. patchwork.yoctoproject.org. 2024612

(46)^ The Cortex-X2: More Performance, Deeper OoO - Arm Announces Mobile Armv9 CPU Microarchitectures: Cortex-X2, Cortex-A710 & Cortex-A510. 202461

(47)^ Arm CortexX2 Core Technical Reference Manual. 202461

(48)^ Arm Cortex-X3 Core Technical Reference Manual. 202461

(49)^ Arm Cortex-X4 Core Technical Reference Manual. 202461

(50)^ Arm Neoverse V2 Core Software Optimization Guide. 202462

(51)^ Scalable Matrix Extension for the Armv9-A Architecture. community.arm.com. 2024531

(52)^ Overview | Hello SME documentation. scalable.uni-jena.de. 202461

(53)^ Vector Length - Microbenchmarks | Hello SME documentation. scalable.uni-jena.de. 202461

(54)^ Arm A-Profile Architecture Developments 2022. community.arm.com. 2024531

関連項目

[編集]

外部リンク

[編集]