fbpx
ウィキペディア

ARMアーキテクチャ

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

ARMアーキテクチャ
開発者 ARMホールディングス
ビット数 32ビット64ビット
発表 1983年
バージョン ARMv9[1]
デザイン RISC
タイプ Register-Register
エンコード Fixed
ブランチ Condition code
エンディアン Bi
拡張 NEON, Thumb, Jazelle, VFP
レジスタ
16(32ビット)、31(64ビット)

概要

ARMアーキテクチャは消費電力を抑える特徴を持ち、低消費電力を目標に設計されるモバイル機器において支配的となっている。本アーキテクチャの命令セットは「(基本的に)固定長の命令」「簡素な命令セット」というRISC風の特徴を有しつつ、「条件実行、定数シフト/ローテート付きオペランド、比較的豊富なアドレッシングモード」といったCISC風の特徴を併せ持つのが特徴的だが、これは初期のARMがパソコン向けに設計された際、当時の同程度の性能のチップとしてはかなり少ないゲート数(約25,000トランジスタ)で実装されたチップの多くの部分を常に活用する設計として工夫されたもので、回路の複雑さを増さないという方向性だというように見れば、CISC風の特徴というよりむしろRISC風の特徴とも言える。このような設計が、初期の世代の実装において、(性能の割に)低消費電力、小さなコア、(RISCとしては)高いコード密度といった優れた特性に結びつき、広く普及する原動力となった。

2005年の時点で、ARMファミリーは32ビット組込みマイクロプロセッサ(乃至、特にマイクロコントローラ)のおよそ75%を占め[6]、全世界で最も使用されている32ビットCPUアーキテクチャである[要出典]。ARMアーキテクチャに基づくCPUコアは、PDA携帯電話メディアプレーヤー携帯型ゲーム電卓などの携帯機器から、ハードディスクルータなどのPC周辺機器まで、あらゆる電子機器に使用される。2015年現在、携帯電話では9割超のシェアがある[2]

携帯機器や電子機器の高性能化に伴いARMコアの出荷数は加速度的に伸びており、2008年1月の時点で100億個以上[7]、2010年9月の時点で200億個以上[8]が出荷されている。ARMアーキテクチャを使用したプロセッサの例としては、テキサス・インスツルメンツOMAPシリーズやマーベル・テクノロジー・グループXScaleNVIDIATegraクアルコムSnapdragonフリースケールのi.MXシリーズ、ルネサス エレクトロニクスのRZファミリ、Synergyなどがある。

既存のARMプロセッサは組み込みとクライアントシステムに特化していたため全て32ビットであるが、顧客からは電力効率に優れるARMアーキテクチャのサーバへの応用を望む声が高まり[要出典]、ARM社は2011年10月27日、ARMの64ビット拡張であるARMv8アーキテクチャを発表した[9]

歴史

ARMの設計は、1983年エイコーン・コンピュータ(イギリス)によって開始された。当時エイコーンはモステクノロジーMOS 6502を搭載したコンピューターを製造・販売しており、小さなハードウェア規模でシンプルな命令セットを持つ、より高速なプロセッサを開発することによって、6502を置き換えることが目的であった。

ただし、しばしば誤ったことが書かれているが、ARMは6502を参考にしながら設計されたわけではなく、命令セットアーキテクチャにも内部アーキテクチャにもとりたてて類似している点は無い。命令セットを設計したソフィー・ウィルソンも、6502とARMにはほとんど共通点は無いと述べている[10]

開発チームは1985年までにARM1と呼ばれる開発サンプルを完成させ、最初の製品となるARM2は次の年に完成した。ARM2は32ビットのデータバス、26ビットのアドレス空間と16個の32ビットレジスタを備えていた。レジスタの1つは、上位6ビットが状態フラグを保持するプログラムカウンタである。ARM2のトランジスタ数は30000個しかなく、おそらく世界で最もシンプルな実用32ビットマイクロプロセッサであった。これは、マイクロコードを持たないこと(モトローラMC68000の場合は1/4から1/3がマイクロコードであった)と、現在のほとんどのCPUと違ってキャッシュを含まないことによるものである。このシンプルさのために消費電力は極めて低いが、それにもかかわらず80286よりも性能は高かった[要出典]。後継となる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の技術のフィードバックを受けたARM9ARM10を経て、NECとの提携などによって携帯電話向けプロセッサとしての地位を確固たるものにしたARM11をリリースする。

2005年には製品ラインナップを一新し、高機能携帯電話などのアプリケーションプロセッサ向けであるCortex-A、リアルタイム制御向けであるCortex-R組み込みシステム向けであるCortex-Mと、ターゲットごとにシリーズを分類した。なお、Cortexの末尾に付く文字は、社名であるARMの一文字ずつをそれぞれ割り当てたものである[11]。また、2012年11月にはARM初となる64ビットアーキテクチャによるプロセッサコアであるCortex-A50シリーズを発表した[12]

ARMからIPコアのライセンス供与を受けている主な企業には、モトローラIBMテキサス・インスツルメンツ任天堂フィリップスAtmelシャープサムスン電子STマイクロエレクトロニクスアナログ・デバイセズパナソニッククアルコムマーベル・テクノロジー・グループなどがある。ARMチップは世界で最もよく使われているCPUデザインの一つとなっており、ハードディスク携帯電話ルータ電卓から玩具に至るまであらゆる製品の中に見ることができる。32ビット組み込みCPUで圧倒的なシェアを占め、2004年の世界シェアは61%であった[13]

主な採用製品

ARM6

ARM7/7E

ARM9/9E

ARM11/11E

  • 2007年頃から採用されるようになる。発表は2002年4月29日[15]
    • 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ドコモ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ゲーム機)
  • シングルボードコンピュータ

Cortex-M3

Cortex-A8

Cortex-A9

Cortex-A15

  • タブレットは2012年から、スマートフォンは2013年から採用された。
  • サムスン電子は1.7GHzのデュアルコア Exynos 5250 を2012年10月[16]から搭載商品を販売開始。メモリ帯域12.8GB/s[17]
  • テキサス・インスルメンツは2GHzのデュアルコアで2012年第3四半期から商品を出荷予定[18]
  • NVIDIA は Tegra 4 を2013年第1四半期から出荷予定。
  • シングルボードコンピュータ

Cortex-A57

  • 2012年10月に64ビット ARMのCortex-A57, A53(コードネーム「Atlas」と「Apollo」)が発表され[19]、2014年に搭載商品(Samsung Galaxy Note 4 など)が販売開始された。
  • AMD は2015年下半期にサーバー向け Opteron A1100 (Seattle) をリリース予定[20][21]
  • A57やA53では、8コアや全てのコア同時稼働できる4+4コア(A57が4コア、A53が4コア)などが登場した。

Cortex-A72

  • 2015年2月3日に発表され[22]、2015年に搭載商品が販売される予定[23]。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, Freescale 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

Renesas RAファミリ,

Renesas Synergy S1シリーズ

Cortex-M1 なし, tightly coupled memory optional.
  • 0.8 DMIPS/MHz[24]
  • 最大 136 DMIPS @ 170 MHz[25](クロックはFPGA依存)
Altera Cyclone III[26], Actel FPGA[27]
v7-M Cortex-M3 マイクロコントローラ向け(ハーバード・アーキテクチャ) キャッシュなし, (MPU) 1.25 DMIPS/MHz Texas Instruments Stellaris MCU, STMicroelectronics STM32, 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/電力制御、オーディオ/ビデオ処理など。 Freescale Kinetis, NXP LPC43xx, STMicroelectronics,

Renesas RAファミリ, Renesas Synergy MCU (S3/S5/S7)

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[28][29] STMicroelectronics STM32 F7, Atmel SAM x7x, NXP i.MX RT1050
v8-M Cortex-M23 マイクロコントローラ向け(ノイマン・アーキテクチャ) 0.98 DMIPS/MHz[30] Renesas Synergy S1JA, Renesas RA2A1, Renesas RA2L1, Microchip SAML10
Cortex-M33 マイクロコントローラ向け(ハーバード・アーキテクチャ) 1.50 DMIPS/MHz[31] Renesas RA6M4, Renesas RA4M3, STM32L5, NXP5500
Cortex-R v7-R Cortex-R4 組み込み向け 可変キャッシュ, MMUはオプション 1.66 DMIPS/MHz Texas Instruments TMS570, Broadcom,

Renesas RZ/T

Cortex-R5
Cortex-R7 2.53 DMIPS/MHz
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
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, Freescale 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
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仮想アドレス MediaTek Helio X30
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
Cortex-A57 4.1 DMIPS/MHz Snapdragon 808, 810, Nvidia Tegra X1, Samsung Exynos 7, Alpine AL-324
Cortex-A72 Snapdragon 618, 620, 650, 652, HiSilicon Kirin 950, 955, AWS Graviton, Marvell ARMADA 7K, 8K
Cortex-A73 HiSilicon Kirin 960, MediaTek Helio X30
v8.2-A Cortex-A55
Cortex-A75 L1D: 64 KB, メモリ管理ユニット, TrustZone, 64bit仮想アドレス
Cortex-A76 4命令decode
Cortex-A77
Cortex-A78
Cortex-A78C[32]
v8.3-A Marvell ThunderX3
v8.4-A
v8.5-A
v8.6-A
v8.7-A
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.1-A
v9.2-A
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
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 Apple A8
Typhoon アプリケーション向け, 3コア, AArch64 1.5 GHz Apple A8X
Twister アプリケーション向け, 2コア, AArch64 1.8 GHz, 2.25 GHz Apple A9, Apple A9X
Hurricane, Zephyr アプリケーション向け, 2+2コア, AArch64 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/メーカ

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つのモードにしかなれない。命令や外部からの割込みなどでモードが切り替わる[33]

ユーザーモード
唯一の非特権モード。
高速割込みモード
FIQ 割込みが発生したときに切り替わる特権モード。
割込みモード
IRQ 割込みが発生したときに切り替わる特権モード。
スーパーバイザーモード
CPU がリセットされたときか SWI 命令が実行されたときに切り替わる特権モード。
アボートモード
プリフェッチアボートかデータアボート例外が発生したときに切り替わる特権モード。
未定義モード
未定義命令が実行されたときに切り替わる特権モード。
システムモード (ARMv4以降)
これが唯一例外が原因で切り替わるモードではない。CPSRレジスタにこのモードを書くことによりこのモードに切り替えることが出来る。
MONモード (要セキュリティ拡張)
TrustZone 拡張をサポートするために作られたモニターモード。
HYP 別名 PL2 モード (ARMv7以降)
仮想化拡張、ハイパーバイザーモード。[34]

レジスタ

レジスタ 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ビットを持つ[35]

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

a += (j << 2); 

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

 ADD Ra, Ra, Rj, LSL #2 

として表すことができる。

これにより、多くの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)

ThumbEEJazelle RCT (Runtime Compilation Target)とも呼ばれる第4のモードである。2005年にアナウンスされ、Cortex-A8プロセッサで最初に実装された。Thumb-2命令セットに小規模な変更を加えたもので、JITコンパイラのように実行時にコードを生成する場合に向いている。主な対象はJava.NET MSILC#など)、PythonPerlなどの言語である。

DSP 拡張命令

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

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

SIMD

ARMv6で導入された[36]。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とは全く異なるものの、GCCVisual 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ビットレジスタに格納される。

SIMD and Floating-point (NEON) 命令

A64命令セットにおいては従来のVFPとAdvanced SIMD (NEON) は統合され、一つの命令体系となった。これに伴い、名称については単に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 2

ARMv9策定で、富岳に使われたA64FXのScalable Vector Extension[37]を発展させて汎用化したベクトル拡張を中心とした追加命令[38]SVE2[39]

SIMD and Floating-point命令と比較して、次の特徴がある[40]

  • スケーラブルなベクトル長(VL)
  • ベクトル長に囚われない(VLA)プログラミング
  • ギャザー・ロードとスキャッター・ストア
  • レーン単位の条件付き実行制御
  • 条件付き実行制御主導のループ制御と管理
  • ベクトル・パーティショニングとSW管理の投機
  • 拡張整数および浮動小数点演算の水平方向の縮小
  • スカラー化内部ベクトル・サブループ

脚注

[脚注の使い方]

注釈

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

出典

  1. ^ [1]
  2. ^ “Arm® (日本)|半導体IP|アーム公式サイト – Arm®”. arm.com. 2022年11月18日閲覧。
  3. ^ “世の中ARMだらけ!? 現代社会を支える「ARM」ってなんだろう?”. ドスパラ. 2022年11月18日閲覧。
  4. ^ “ARMとは”. コトバンク. 2022年11月18日閲覧。
  5. ^ “Armがマイコン向けハイエンドCPUコア、Cortex-M85発表”. 日経. 2022年11月18日閲覧。
  6. ^ http://www.arm.com/miscPDFs/3823.pdf
  7. ^ http://www.jp.arm.com/pressroom/08/080125.html
  8. ^ https://news.mynavi.jp/techplus/article/20100910-cortex-a15/
  9. ^ http://ascii.jp/elem/000/000/645/645995/
  10. ^ Smotherman, Mark. “Which Machines Do Computer Architects Admire?”. 2011年9月19日閲覧。
  11. ^ “スマートフォンを席巻するARMプロセッサーの歴史”. ASCII.jp (2010年12月20日). 2013年7月24日閲覧。
  12. ^ “ARMが初の64ビットCPU「Cortex-A50シリーズ」発表、サーバー向けに16コア以上に対応”. ITpro (2012年11月1日). 2014年11月27日閲覧。
  13. ^ 2005年、ARM社のセミナー資料による。
  14. ^ “Sony Japan | プレスリリース| クリエ用新アプリケーションCPU「Handheld EngineTM」の開発について”. www.sony.co.jp. 2019年4月8日閲覧。
  15. ^ News:米速報:次世代マイクロアーキテクチャ「ARM11」発表
  16. ^ Googleが新型「Chromebook」を発表、Samsung製で249ドル
  17. ^ 【PC Watch】 Samsung、初のARM Cortex-A15プロセッサ「Exynos 5250」
  18. ^ 日本TI、モバイルの概念を一変させる高性能、高機能のOMAP™5プラットフォームを発表
  19. ^ 【後藤弘茂のWeekly海外ニュース】 ARMが次世代CPU「Atlas」と「Apollo」の計画を発表
  20. ^ AMD’s K12 ARM CPU Now In 2017
  21. ^ 苦難の2013年を越え、輝かしい2014年に賭けるAMD (大きな期待が寄せられているサーバー向け64ビットARMプロセッサ)
  22. ^ ARM Sets New Standard for the Premium Mobile Experience - ARM
  23. ^ Qualcomm Introduces Next Generation Snapdragon 600 and 400 Tier Processors for High Performance, High-Volume Smartphones with Advanced LTE | Qualcomm
  24. ^ "ARM Cortex-M1", ARM product website. Accessed April 11, 2007.
  25. ^ "ARM Extends Cortex Family with First Processor Optimized for FPGA", ARM press release, March 19 2007. Accessed April 11, 2007.
  26. ^ ARM Cortex-M1
  27. ^ Actel: 製品とサービス: プロセッサ: ARM: Cortex-M1
  28. ^ AnandTech | Cortex-M7 Launches: Embedded, IoT and Wearables
  29. ^ Cortex-M7 Overview - ARM
  30. ^ Cortex-M23 Overview - ARM
  31. ^ Cortex-M33 Overview - ARM
  32. ^ Ltd, Arm. “Cortex-A78C”. Arm | The Architecture for the Digital World. 2023年1月14日閲覧。
  33. ^ “Processor mode”. ARMホールディングス. 2013年3月26日閲覧。
  34. ^ “KVM/ARM”. 2013年4月3日閲覧。
  35. ^ 2.14. The program status registers - Cortex-A8 Technical Reference Manual
  36. ^ DSP & SIMD - ARM
  37. ^ “ARM、Hot ChipsでHPC用のスケーラブル・ベクトル拡張を公表”. HPCwire Japan (2016年8月28日). 2022年1月2日閲覧。
  38. ^ 株式会社インプレス (2021年3月31日). “Arm、10年ぶりの新アーキテクチャ「Armv9」。富岳のSVE改良版やコンフィデンシャルコンピューティング機能追加”. PC Watch. 2022年1月2日閲覧。
  39. ^ “Documentation – Arm Developer”. developer.arm.com. 2022年1月2日閲覧。
  40. ^ “ARM、Hot ChipsでHPC用のスケーラブル・ベクトル拡張を公表”. HPCwire Japan (2016年8月28日). 2022年1月2日閲覧。

関連項目

外部リンク

  • ARM Ltd.
  • Linux Zaurusでアセンブリプログラミング

ARMアーキテクチャ
armアーキテクチャ, この記事は検証可能な参考文献や出典が全く示されていないか, 不十分です, 出典を追加して記事の信頼性向上にご協力ください, このテンプレートの使い方, 出典検索, ニュース, 書籍, スカラー, cinii, stage, dlib, ジャパンサーチ, 2014年3月, アーム, アーキテクチャ, とは, armホールディングスの事業部門であるarm, により設計, ライセンスされているアーキテクチャである, 組み込み機器や低電力アプリケーションからスーパーコンピューターまで様々な機器で用い. この記事は検証可能な参考文献や出典が全く示されていないか 不十分です 出典を追加して記事の信頼性向上にご協力ください このテンプレートの使い方 出典検索 ARMアーキテクチャ ニュース 書籍 スカラー CiNii J STAGE NDL dlib jp ジャパンサーチ TWL 2014年3月 ARMアーキテクチャ アーム 2 3 4 5 アーキテクチャ とは ARMホールディングスの事業部門であるARM Ltd により設計 ライセンスされているアーキテクチャである 組み込み機器や低電力アプリケーションからスーパーコンピューターまで様々な機器で用いられている ARMアーキテクチャ開発者ARMホールディングスビット数32ビット 64ビット発表1983年バージョンARMv9 1 デザインRISCタイプRegister RegisterエンコードFixedブランチCondition codeエンディアンBi拡張NEON Thumb Jazelle VFPレジスタ16 32ビット 31 64ビット 目次 1 概要 2 歴史 3 主な採用製品 3 1 ARM6 3 2 ARM7 7E 3 3 ARM9 9E 3 4 ARM11 11E 3 5 Cortex M3 3 6 Cortex A8 3 7 Cortex A9 3 8 Cortex A15 3 9 Cortex A57 3 10 Cortex A72 3 11 Cortex A73 3 12 Cortex A75 3 13 Cortex A76 3 14 Cortex A77 3 15 Cortex A78 3 16 Cortex X1 4 コアの性能と採用実績 4 1 ARM社製 4 2 サードパーティー 5 ARMアーキテクチャを採用しているCPU メーカ 6 32ビットARM 6 1 命令セット 6 2 CPUモード 6 3 レジスタ 6 4 条件実行 6 5 Thumb 6 6 Thumb 2 6 7 Jazelle 6 8 Thumb Execution Environment ThumbEE 6 9 DSP 拡張命令 6 10 SIMD 6 11 Advanced SIMD NEON 6 12 Wireless MMX 6 13 VFP 7 64ビットARM 7 1 命令セットの特徴 7 2 SIMD and Floating point NEON 命令 7 3 Scalable Vector Extension 2 8 脚注 8 1 注釈 8 2 出典 9 関連項目 10 外部リンク概要 編集ARMアーキテクチャは消費電力を抑える特徴を持ち 低消費電力を目標に設計されるモバイル機器において支配的となっている 本アーキテクチャの命令セットは 基本的に 固定長の命令 簡素な命令セット というRISC風の特徴を有しつつ 条件実行 定数シフト ローテート付きオペランド 比較的豊富なアドレッシングモード といったCISC風の特徴を併せ持つのが特徴的だが これは初期のARMがパソコン向けに設計された際 当時の同程度の性能のチップとしてはかなり少ないゲート数 約25 000トランジスタ で実装されたチップの多くの部分を常に活用する設計として工夫されたもので 回路の複雑さを増さないという方向性だというように見れば CISC風の特徴というよりむしろRISC風の特徴とも言える このような設計が 初期の世代の実装において 性能の割に 低消費電力 小さなコア RISCとしては 高いコード密度といった優れた特性に結びつき 広く普及する原動力となった 2005年の時点で ARMファミリーは32ビット組込みマイクロプロセッサ 乃至 特にマイクロコントローラ のおよそ75 を占め 6 全世界で最も使用されている32ビットCPUアーキテクチャである 要出典 ARMアーキテクチャに基づくCPUコアは PDA 携帯電話 メディアプレーヤー 携帯型ゲーム 電卓などの携帯機器から ハードディスク ルータなどのPC周辺機器まで あらゆる電子機器に使用される 2015年現在 携帯電話では9割超のシェアがある 2 携帯機器や電子機器の高性能化に伴いARMコアの出荷数は加速度的に伸びており 2008年1月の時点で100億個以上 7 2010年9月の時点で200億個以上 8 が出荷されている ARMアーキテクチャを使用したプロセッサの例としては テキサス インスツルメンツのOMAPシリーズやマーベル テクノロジー グループのXScale NVIDIAのTegra クアルコムのSnapdragon フリースケールのi MXシリーズ ルネサス エレクトロニクスのRZファミリ Synergyなどがある 既存のARMプロセッサは組み込みとクライアントシステムに特化していたため全て32ビットであるが 顧客からは電力効率に優れるARMアーキテクチャのサーバへの応用を望む声が高まり 要出典 ARM社は2011年10月27日 ARMの64ビット拡張であるARMv8アーキテクチャを発表した 9 歴史 編集ARMの設計は 1983年にエイコーン コンピュータ イギリス によって開始された 当時エイコーンはモステクノロジーのMOS 6502を搭載したコンピューターを製造 販売しており 小さなハードウェア規模でシンプルな命令セットを持つ より高速なプロセッサを開発することによって 6502を置き換えることが目的であった ただし しばしば誤ったことが書かれているが ARMは6502を参考にしながら設計されたわけではなく 命令セットアーキテクチャにも内部アーキテクチャにもとりたてて類似している点は無い 命令セットを設計したソフィー ウィルソンも 6502とARMにはほとんど共通点は無いと述べている 10 開発チームは1985年までにARM1と呼ばれる開発サンプルを完成させ 最初の製品となるARM2は次の年に完成した ARM2は32ビットのデータバス 26ビットのアドレス空間と16個の32ビットレジスタを備えていた レジスタの1つは 上位6ビットが状態フラグを保持するプログラムカウンタである ARM2のトランジスタ数は30000個しかなく おそらく世界で最もシンプルな実用32ビットマイクロプロセッサであった これは マイクロコードを持たないこと モトローラのMC68000の場合は1 4から1 3がマイクロコードであった と 現在のほとんどのCPUと違ってキャッシュを含まないことによるものである このシンプルさのために消費電力は極めて低いが それにもかかわらず80286よりも性能は高かった 要出典 後継となる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の一文字ずつをそれぞれ割り当てたものである 11 また 2012年11月にはARM初となる64ビットアーキテクチャによるプロセッサコアであるCortex A50シリーズを発表した 12 ARMからIPコアのライセンス供与を受けている主な企業には モトローラ IBM テキサス インスツルメンツ 任天堂 フィリップス Atmel シャープ サムスン電子 STマイクロエレクトロニクス アナログ デバイセズ パナソニック クアルコム マーベル テクノロジー グループなどがある ARMチップは世界で最もよく使われているCPUデザインの一つとなっており ハードディスク 携帯電話 ルータ 電卓から玩具に至るまであらゆる製品の中に見ることができる 32ビット組み込みCPUで圧倒的なシェアを占め 2004年の世界シェアは61 であった 13 主な採用製品 編集ARM6 編集 ARM60 3DOインタラクティブ マルチプレーヤー ARM60 CPU VY86C06020FC 2 ARM60 CPU P60ARM ARM610 Apple ニュートン メッセージパッド メッセージパッド100 メッセージパッド110 メッセージパッド120ARM7 7E 編集 携帯情報端末 eMate 300 携帯電話 一般的なGSM携帯電話 cdmaOne携帯電話 初期の3G携帯電話 例 au CDMA 1X A1400番台の一部を除くA1000番台 A3000番台 A5500番台を除くA5000番台 一部例外除く 携帯ゲーム機 ゲームボーイアドバンス ニンテンドー DS DS Lite サブCPU GBAソフトの動作にも使われる DSi サブCPU 携帯音楽プレーヤー iPodシリーズ デュアルコア実装 電卓 HP 20b HP 30b その他 レゴマインドストーム NXT 知能ブロックの一部 ルンバ 一部の機種 ARM9 9E 編集 携帯ゲーム機 ニンテンドーDS DS Lite DSi メインCPU ARM7とのダブル実装 Tapwave Zodiac 携帯電話 Sun SPOT Qualcomm MSM6550 CDMA2000 1xEV DO Rel 0対応携帯電話用チップセット MSM6800 CDMA2000 1xEV DO Rev A対応携帯電話用チップセット 3Gおよび3 5G携帯電話 例 NTTドコモ FOMA 900i 901iシリーズ au KDDI 沖縄セルラー電話 のCDMA 1XシリーズおよびCDMA 1X WINシリーズ ソフトバンクモバイルのSoftBank 3Gシリーズ等 一部例外除く H11T イー モバイルの音声通話用3 5G端末 WS009KE 9 nine WILLCOM ウィルコム のPHS端末 Nokia N Gage 携帯情報端末 Handheld Engine CXD2230GA SONY CLIEに搭載 14 その他 Sharp Brain レゴマインドストーム EV3ARM11 11E 編集 2007年頃から採用されるようになる 発表は2002年4月29日 15 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 1ACortex M3 編集 2004年に発表されたマイクロコントローラ 同じARMv7 M v7E MシリーズのCortex M3 M4 M7共にハーバード アーキテクチャであることが最大の特徴である 自動車 工場 家電などの機器制御などに使われている 自動車では モーター制御 パワーステアリング 横滑り防止装置などいろいろな場所で使われている ワンボードマイコン mbed NXPのLPC1768の評価ボード ホビー用途としても広く流通している Cortex A8 編集 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 テキサス インスツルメンツが技術支援をしてオープンソースハードウェアによって開発されたボード CubieboardCortex A9 編集 タブレットは2010年頃から スマートフォンは2011年から採用された 初期は2コアだったが 4コアのものがタブレットは2011年から スマートフォンは2012年から登場した NVIDIA Tegra 2 Surface RT 携帯ゲーム機 PlayStation Vita Apple A5 Apple TV 第3世代 iPod touch 第5世代 iPad 2 iPad mini iPhone 4S Apple A5X iPad 第3世代 シングルボードコンピュータ PandaBoard BeagleBoard同様 テキサス インスツルメンツの技術支援によって開発されたボード WandboardCortex A15 編集 タブレットは2012年から スマートフォンは2013年から採用された サムスン電子は1 7GHzのデュアルコア Exynos 5250 を2012年10月 16 から搭載商品を販売開始 メモリ帯域12 8GB s 17 テキサス インスルメンツは2GHzのデュアルコアで2012年第3四半期から商品を出荷予定 18 NVIDIA は Tegra 4 を2013年第1四半期から出荷予定 シングルボードコンピュータ ODROID XUCortex A57 編集 2012年10月に64ビット ARMのCortex A57 A53 コードネーム Atlas と Apollo が発表され 19 2014年に搭載商品 Samsung Galaxy Note 4 など が販売開始された AMD は2015年下半期にサーバー向け Opteron A1100 Seattle をリリース予定 20 21 A57やA53では 8コアや全てのコア同時稼働できる4 4コア A57が4コア A53が4コア などが登場した Cortex A72 編集 2015年2月3日に発表され 22 2015年に搭載商品が販売される予定 23 Cortex A57の後継製品 Raspberry Pi 4 Model B に採用された Cortex A73 編集 2016年 5月30日 に発表された Cortex A75 編集 2017年 5月29日 に発表された Cortex A76 編集 2018年 5月31日 に発表された Cortex A77 編集 2019年 5月27日 に発表された Cortex A78 編集 2020年 5月26日 に発表された 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 MicroARM2 ARMv2 ARM2 MUL 乗算 命令を追加 4 MIPS 8 MHz0 33 DMIPS MHz Acorn Archimedes ChessmachineARMv2a ARM250 統合メモリコントローラ MMU Graphics and IO processor SWAP命令を追加 なし MEMC1a 7 MIPS 12 MHz Acorn ArchimedesARM3 ARMv2a ARM2a ARMとしてはじめてのキャッシュの採用 4 KB 統合 12 MIPS 25 MHz0 50 DMIPS MHzARM6 ARMv3 ARM60 32ビットアドレス空間をサポート それまでは26ビット なし 10 MIPS 12 MHz 3DO Zarlink GPS ReceiverARM600 キャッシュ コプロセッサバス FPA10浮動小数点演算ユニット用 4 KB 統合 28 MIPS 33 MHzARM610 キャッシュ コプロセッサバスは無し 17 MIPS 20 MHz0 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 700ARM710a 40 MHz0 68 DMIPS MHz Acorn Risc PC 700 Apple Newton eMate 300ARM7100 Integrated SoC 18 MHz Psion Series 5ARM7500 4 KB 統合 40 MHz Acorn A7000ARM7500FE Integrated SoC FE FPA EDOメモリコントローラを追加 56 MHz0 73 DMIPS MHz Acorn A7000 ARM7TDMI v4T ARM7TDMI S 3ステージ パイプライン なし 15 MIPS 16 8 MHz ゲームボーイアドバンス ニンテンドーDS iPodARM710T MMU 36 MIPS 40 MHz Psion 5 series Apple NewtonARM720T 8 KB 統合キャッシュ MMU 60 MIPS 59 8 MHzARM740T MPUv5TEJ 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 MHz74 47 MIPS 67 024 MHz ニンテンドーDS ノキア N Gage Conexant 802 11 chipsARM966E S キャッシュレス TCMs ST Micro STR91xF Ethernet内蔵ARM968E Sv5TEJ ARM926EJ S Jazelle DBX variable TCMs MMU 220 MIPS 200 MHz Mobile phones ソニー エリクソン モバイルコミュニケーションズ K W シリーズ シーメンス and Benq x65 シリーズ以降 テキサスインスツルメンツ OMAP1710v5TE ARM996HS Clockless processor キャッシュレス TCMs MPUARM10E v5TE ARM1020E VFP 32 KB 32 KB MMUARM1022E 16 KB 16 KB MMUv5TEJ ARM1026EJ S Jazelle DBX variable MMU or MPUARM11 v6 ARM1136J F S SIMD Jazelle DBX VFP variable MMU 1 25 DMIPS MHz TI OMAP 2 Freescale i MX3v6T2 ARM1156T2 F S SIMD Thumb 2 VFP 1 54 DMIPS MHzv6KZ ARM1176JZ F S SIMD Jazelle DBX VFP variable MMU TrustZone 1 25 DMIPS MHz iPhone iPhone 3G Broadcom BCM2835v6K ARM11 MPCore 1 4 core SMP SIMD Jazelle DBX VFP variable MMU 1 25 DMIPS MHz 最大608 MHz NVIDIA TegraSecurCore v6 M SC000 0 9 DMIPS MHzv4T SC100v7 M SC300 1 25 DMIPS MHzCortex 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 Renesas RAファミリ Renesas Synergy S1シリーズCortex M1 なし tightly coupled memory optional 0 8 DMIPS MHz 24 最大 136 DMIPS 170 MHz 25 クロックはFPGA依存 Altera Cyclone III 26 Actel FPGA 27 v7 M Cortex M3 マイクロコントローラ向け ハーバード アーキテクチャ キャッシュなし MPU 1 25 DMIPS MHz Texas Instruments Stellaris MCU STMicroelectronics STM32 NXP LPC1000 NXP mbed 東芝 TX03 Luminary Micro Ember EM3xx Atmel AT91SAM3 Europe Technologies EasyBCU Energy Micro EFM32 Actel SmartFusion Renesas R IN32v7E M Cortex M4 マイクロコントローラ向け ハーバード アーキテクチャ M3にDSP追加 モーター制御 FA 電力制御 オーディオ ビデオ処理など Freescale Kinetis NXP LPC43xx STMicroelectronics Renesas RAファミリ Renesas Synergy MCU S3 S5 S7 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 28 29 STMicroelectronics STM32 F7 Atmel SAM x7x NXP i MX RT1050v8 M Cortex M23 マイクロコントローラ向け ノイマン アーキテクチャ 0 98 DMIPS MHz 30 Renesas Synergy S1JA Renesas RA2A1 Renesas RA2L1 Microchip SAML10Cortex M33 マイクロコントローラ向け ハーバード アーキテクチャ 1 50 DMIPS MHz 31 Renesas RA6M4 Renesas RA4M3 STM32L5 NXP5500Cortex R v7 R Cortex R4 組み込み向け 可変キャッシュ MMUはオプション 1 66 DMIPS MHz Texas Instruments TMS570 Broadcom Renesas RZ TCortex R5Cortex R7 2 53 DMIPS MHzCortex 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 200Cortex 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 BCM2836Cortex 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 RK29xxCortex A9 アプリケーション向け 1 4コア対称型マルチプロセッシング VFP NEON Jazelle RCT and DBX Thumb 2 アウト オブ オーダー実行 投機的実行 スーパースケーラ メモリ管理ユニット TrustZone 2 5 DMIPS MHz 800 MHz 2 GHz TI OMAP 4 Freescale 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 ACortex 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 212Cortex A17 Rockchip RK3288v8 A Cortex A32 超小型 低消費電力 電力効率重視 IoT機器向け 32ビット命令セット Cortex A35 低コスト 低消費電力 電力効率重視 64ビット命令セット メモリ管理ユニット TrustZone 64bit仮想アドレス MediaTek Helio X30Cortex 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 X30Cortex A57 4 1 DMIPS MHz Snapdragon 808 810 Nvidia Tegra X1 Samsung Exynos 7 Alpine AL 324Cortex A72 Snapdragon 618 620 650 652 HiSilicon Kirin 950 955 AWS Graviton Marvell ARMADA 7K 8KCortex A73 HiSilicon Kirin 960 MediaTek Helio X30v8 2 A Cortex A55Cortex A75 L1D 64 KB メモリ管理ユニット TrustZone 64bit仮想アドレスCortex A76 4命令decodeCortex A77Cortex A78Cortex A78C 32 v8 3 A Marvell ThunderX3v8 4 Av8 5 Av8 6 Av8 7 Av9 0 A Cortex A510 Dimensity 9000 Snapdragon 7 Gen 1 Snapdragon 8 Gen1 Snapdragon 8 Gen2 Exynos 2200Cortex A710 Dimensity 9000 Snapdragon 7 Gen 1 Snapdragon 8 Gen1 Snapdragon 8 Gen2 Exynos 2200Cortex A715v9 1 Av9 2 ACortex X v8 2 A Cortex X1v9 0 A Cortex X2 Dimensity 9000 Qualcomm Snapdragon 8 Gen 1 Exynos 2200Cortex X3 Dimensity 9200 Snapdragon 8 Gen 2Neoverse v8 2 A Neoverse E1Neoverse N1 Ampere Altra Altra Max AWS Graviton2v8 4 A Neoverse V1 AWS Graviton3v9 0 A Neoverse E2Neoverse N2Neoverse 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 Processor80219IOP321 en IyonixIOP33xPXA210 PXA250 Applications processor ザウルス SL 5600 SL A300PXA255 32 KB 32 KB MMU 400 BogoMips 400 MHz en GumstixPXA26xPXA27x 800 MIPS 624 MHz HTC Universal ザウルス SL C1000 3000 3100 3200 Willcom W ZERO3シリーズ WS003SH WS004SH WS007SH WS011SH WS020SHPXA800 E FMonahans 1000 MIPS 1 25 GHzPXA900 Blackberry 8700 Blackberry Pearl 8100 IXC1100 Control Plane ProcessorIXP2400 IXP2800IXP2850IXP2325 IXP2350IXP42x en NSLU2IXP460 IXP465Snapdragon 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 820Centriq v8 A Folker Centriq 2400ARMADA 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 1500Apple Ax v7 A Swift アプリケーション向け 2コア対称型マルチプロセッシング VFPv4 32 KB 32 KB 1 1 GHz 1 4 GHz Apple A6 Apple A6Xv8 A Cyclone アプリケーション向け 2コア AArch64 64 KB 64 KB 1 3 GHz Apple A7Cyclone gen 2 1 1 GHz 1 4 GHz Apple A8Typhoon アプリケーション向け 3コア AArch64 1 5 GHz Apple A8XTwister アプリケーション向け 2コア AArch64 1 8 GHz 2 25 GHz Apple A9 Apple A9XHurricane Zephyr アプリケーション向け 2 2コア AArch64 2 33 GHz Apple A10 Fusionアプリケーション向け 3 3コア AArch64 2 38Ghz Apple A10X FusionMonsoon Mistral アプリケーション向け 2 4コア AArch64 L1 64 KB 64 KB L2 8 MB 2 39 GHz Apple A11 BionicVortex 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 Bionicv8 3 A Lightning Thunder アプリケーション向け 2 4コア AArch64 L1 48 KB 48 KB L2 4 MB 2 65 GHz Apple A13 Bionicv8 6 A Firestorm Icestorm L1 192 KB 64 KB L2 12 MB 4 MB 2 99 GHz Apple A14 BionicApple M1 アプリケーション向け 4 4コア AArch64 3 2 GHz Apple M1Apple M1 Pro アプリケーション向け 6 2コア 8 2コア AArch64 Apple M1 ProApple M1 Max アプリケーション向け 8 2コア AArch64 Apple M1 MaxApple M1 Ultra アプリケーション向け 16 4コア AArch64 Apple M1 UltraApple A15 Avalanche Blizzard アプリケーション向け 2 4コア AArch64 3 23 GHz Apple A15Apple M2 アプリケーション向け 4 4コア AArch64 L1 192 KB 128 KB L2 16 MB 4 MB 3 5 GHz Apple M2Apple M2 Pro アプリケーション向け 6 4コア 8 4コア AArch64 L1 192 KB 128 KB L2 32 MB 4 MB Apple M2 ProApple M2 Max アプリケーション向け 8 4コア AArch64 Apple M2 MaxApple A16 Everest Sawtooth アプリケーション向け 2 4コア AArch64 L2 16 MB 8 MB 24 MB 3 46 GHz Apple A16Tegra K1 v8 A Denver 128 KB 64 KB Google Nexus 9 Xiaomi Mi PadParker Denver 2 0 DRIVE PX2Xavier Carmel DRIVE Xavier Jetson AGX XavierExynos v8 A Exynos M1 64 KB 2 MB 4コアシェア Exynos 8890 Exynos 8 Octa Exynos M2 Exynos 8895Exynos M3 Exynos 9810ARMv7 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 ZMSARMアーキテクチャを採用しているCPU メーカ 編集ARMホールディングスの概要にあるように ARMホールディングスはARMアーキテクチャの設計のみをしており 製造は行ってはいない ARMはIPコアとして各社にライセンスされ それぞれの会社において機能を追加するなどしてCPUとして製造される 製造されたCPUはそのまま あるいはボード上に実装 もしくは製品に組み込まれた形で販売などされる 以下に CPUそのもの ボード上に実装したもの などCPUやボードのシリーズ名やブランド名などが明確な主なメーカ名 CPU名 シリーズ名等を記する NXPセミコンダクターズ LPC LPCXpresso mbed フリースケール セミコンダクタ i MX Kinetis DEC インテル StrongARM インテル マーベル テクノロジー グループ XScale STマイクロエレクトロニクス STM32 サイプレス マイクロシステムズ PSoC 5 東芝 TX03 TX09シリーズ Panasonic MN2WS0220シリーズ スマートテレビ用UniPhier ルネサス エレクトロニクス RAファミリ RZファミリ REファミリ EMMA Mobile R Mobile R Car R IN Renesas Synergy 富士通 A64FX32ビットARM 編集命令セット 編集 ARM は RISC プロセッサであり Thumb 命令ではなく ARM 命令の場合 その命令セットは 32ビット固定長命令 ロード ストアアーキテクチャ 3オペランドのレジスタ間演算 多くの命令が1サイクルで実行可能といった 多くの32ビットRISCプロセッサに共通する特徴が見られる ARMプロセッサは PC相対アドレッシングやプレ ポスト インクリメント アドレッシングモードなど RISCとみなされる他のアーキテクチャと比べ 豊富なアドレッシングモードを持っている もう一つ留意すべきことは ARMの命令セットが時間とともに増加しているということである 例えば 初期のARMプロセッサ ARM7TDMIより以前のもの は2バイトの値をロードする命令がなかった CPUモード 編集 32ビット ARM アーキテクチャはいくつかのCPUモードを持つ 同時には1つのモードにしかなれない 命令や外部からの割込みなどでモードが切り替わる 33 ユーザーモード 唯一の非特権モード 高速割込みモード FIQ 割込みが発生したときに切り替わる特権モード 割込みモード IRQ 割込みが発生したときに切り替わる特権モード スーパーバイザーモード CPU がリセットされたときか SWI 命令が実行されたときに切り替わる特権モード アボートモード プリフェッチアボートかデータアボート例外が発生したときに切り替わる特権モード 未定義モード 未定義命令が実行されたときに切り替わる特権モード システムモード ARMv4以降 これが唯一例外が原因で切り替わるモードではない CPSRレジスタにこのモードを書くことによりこのモードに切り替えることが出来る MONモード 要セキュリティ拡張 TrustZone 拡張をサポートするために作られたモニターモード HYP 別名 PL2 モード ARMv7以降 仮想化拡張 ハイパーバイザーモード 34 レジスタ 編集 レジスタ R0 から R7 は全ての CPU モードで同一 これらは決してバンクされない R13 と R14 はシステムモード以外の全ての特権 CPU モードでバンクされる 独自の R13 と R14 を持つことにより例外からそれぞれのモードに切り替えられる R13 はスタックポインタ R14 は関数からの戻りアドレスを持つ CPU モードごとのレジスタ usr sys svc abt und irq fiqR0R1R2R3R4R5R6R7R8 R8 fiqR9 R9 fiqR10 R10 fiqR11 R11 fiqR12 R12 fiqR13 R13 svc R13 abt R13 und R13 irq R13 fiqR14 R14 svc R14 abt R14 und R14 irq R14 fiqR15CPSRSPSR svc SPSR abt SPSR und SPSR irq SPSR fiq別名 R13 は SP とも呼ばれ スタックポインタ R14 は LR とも呼ばれ リンクレジスタ R15 は PC とも呼ばれ プログラムカウンタCPSR は下記32ビットを持つ 35 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 gt 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 lt lt 2 のような文を1つのARM命令 ADD Ra Ra Rj LSL 2 として表すことができる これにより 多くの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アーキテクチャを拡張するため いくつかの命令が追加された 3 ARMv5TE と ARMv5TEJ というアーキテクチャ名の E がこれを表していると思われる 追加された命令は デジタルシグナルプロセッサアーキテクチャで一般的なものである 例えば 符号付積和演算 飽和加算と飽和減算 先行する0のカウント のバリエーションである SIMD 編集 ARMv6で導入された 36 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ビットレジスタに格納される SIMD and Floating point NEON 命令 編集 A64命令セットにおいては従来のVFPとAdvanced SIMD NEON は統合され 一つの命令体系となった これに伴い 名称については単に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 lt s0 s1 単精度スカラ fadd d2 d1 d0 d2 lt d0 d1 倍精度スカラ fadd v2 4s v1 4s v0 4s v2 lt v0 v1 単精度x4 SIMD fadd v2 2d v1 2d v0 2d v2 lt v0 v1 倍精度x2 SIMD のようなバリエーションが命令のニーモニックを保ちつつ オペランドのプレフィックス s d v とサフィックスを変更することによって記述可能になっている サフィックスについては 一部の環境向けのアセンブラではニーモニック側に付加する省略記法も許されるようである これはx86プロセッサのSSE命令セットがスカラ命令とSIMD命令の双方を備えているのとよく似ている Scalable Vector Extension 2 編集 ARMv9策定で 富岳に使われたA64FXのScalable Vector Extension 37 を発展させて汎用化したベクトル拡張を中心とした追加命令 38 SVE2 39 SIMD and Floating point命令と比較して 次の特徴がある 40 スケーラブルなベクトル長 VL ベクトル長に囚われない VLA プログラミング ギャザー ロードとスキャッター ストア レーン単位の条件付き実行制御 条件付き実行制御主導のループ制御と管理 ベクトル パーティショニングとSW管理の投機 拡張整数および浮動小数点演算の水平方向の縮小 スカラー化内部ベクトル サブループ脚注 編集 脚注の使い方 注釈 編集 ベクトルレジスタが明示的に用意されておらず 複数のスカラレジスタに対して演算を行う ベクタ長は固定されておらず FPSCRという特殊なレジスタで最大8要素までのベクタ長を指定可能 また レジスタがスカラモードのみで使えるバンクとベクタモードで使えるバンクに分けられており レジスタの組み合わせに制約がある ARMプロセッサのベクタモードへの対応はMVFR0レジスタの24 27ビット目を参照することで確認できる 出典 編集 1 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 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 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 amp SIMD ARM ARM Hot ChipsでHPC用のスケーラブル ベクトル拡張を公表 HPCwire Japan 2016年8月28日 2022年1月2日 閲覧 株式会社インプレス 2021年3月31日 Arm 10年ぶりの新アーキテクチャ Armv9 富岳のSVE改良版やコンフィデンシャルコンピューティング機能追加 PC Watch 2022年1月2日 閲覧 Documentation Arm Developer developer arm com 2022年1月2日 閲覧 ARM Hot ChipsでHPC用のスケーラブル ベクトル拡張を公表 HPCwire Japan 2016年8月28日 2022年1月2日 閲覧 関連項目 編集mClinux ソフィー ウィルソン外部リンク 編集ARM Ltd Linux Zaurusでアセンブリプログラミング https ja wikipedia org w index php title ARMアーキテクチャ amp oldid 93653271 から取得, ウィキペディア、ウィキ、本、library、

論文

、読んだ、ダウンロード、自由、無料ダウンロード、mp3、video、mp4、3gp、 jpg、jpeg、gif、png、画像、音楽、歌、映画、本、ゲーム、ゲーム。