AArch64
AArch64(ARM Architecture 64-bit)またはARM64は、ARMアーキテクチャの64ビット
概要
[ARMv8-Aから
命令 セットの特徴
[AArch64モードにおける
Compare-and-Branch
Advanced SIMD and Floating-point 命令
[A64
VFPとAdvanced SIMDの
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)
のようなバリエーションが
Scalable Vector Extension
[Scalable Vector Extension (SVE) は、Armv8.2-Aで
- スケーラブルなベクトル
長 (VL)。128~2048ビットに対応 する。レジスタはAdvanced SIMDと兼用 で、Advanced SIMDでは下位 128ビットを使用 する。レジスタ数 は引 き続 き32個 。 - ベクトル
長 に囚 われない(Vector Length Agnostic; VLA)プログラミング。レジスタのビット長 が異 なったとしても、同一 の命令 でSIMD処理 をすることが可能 である。 - ギャザー・ロードとスキャッター・ストア
- レーン
単位 の条件 付 き実行 制御 条件 付 き実行 制御 主導 のループ制御 と管理 - ベクトル・パーティショニングとSW
管理 の投機 拡張 整数 および浮動 小数点 演算 の水平 方向 の縮小 - スカラー
化 内部 ベクトル・サブループ
Scalable Vector Extension 2 (SVE2) は、Armv9.0-Aで
Scalable Matrix Extension
[Scalable Matrix Extension (SME) は、Armv9.2-Aで
Scalable Matrix Extension 2 (SME2) は、Armv9.4-Aで
Armv8.xおよびArmv9.x拡張 機能
[2011
Appleは、
AArch32とAArch64の
命名 規則
[- 64+32ビット
- アーキテクチャ:AArch64
仕様 :Armv8-A命令 セット:A64 + A32- サフィックス:v8-A
- 32 + 16(サム)ビット
- アーキテクチャ:AArch32
仕様 :Armv8-R/ARMv7-A命令 セット:A32 + T32- サフィックス:-A32/-R/v7-A
例 :Armv8-R、Cortex-A32 [24]
AArch64の機能
[新 しい命令 セット、A64- 3
1個 の汎用 64ビットレジスタがある。 専用 のゼロレジスタまたはスタックポインタ(SP)レジスタがある(命令 によって異 なる)。- プログラムカウンタ(PC)は、レジスタとして
直接 アクセスできなくなった。 命令 はまだ32ビット長 で、ほとんどA32と同 じである(LDM/STM命令 とほとんどの条件 付 き実行 が削除 された)。- LDM/STMの
代 わりにロード/ストアのペアを搭載 。 - ほとんどの
命令 で予測 を行 わない(分岐 予測 を除 く)。
- LDM/STMの
- ほとんどの
命令 は、32ビットまたは64ビットの引数 を取 ることができる。 - アドレスは64ビットと
見 なされる。
- 3
- Advanced SIMD
拡張 (NEON)- 32
個 の128ビットレジスタ(以前 の16個 から増加 )があり、VFPv4からもアクセスできる。 倍精度 浮動 小数点 形式 をサポート。- IEEE 754に
完全 に準拠 。 - AES
暗号 化 /復号 およびSHA-1/SHA-2ハッシュ命令 もこれらのレジスタを使用 。
- 32
新 しい例外 システム- レジスタとモードのバンク
切 り替 えが少 なくなる。
- レジスタとモードのバンク
既存 のLarge Physical Address Extension(LPAE)に基 づく48ビット仮想 アドレスから64ビットに簡単 に拡張 できるよう設計 されたメモリ変換 。
AArch64はArmv8-Aで
命令 エンコード
[A64
タイプ | ビット | |||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0 | op0 | 0000 | op1 | |||||||||||||||||||||||||||||
SME |
1 | op0 | 0000 | op1 | op2 | op3 | ||||||||||||||||||||||||||
0001 | ||||||||||||||||||||||||||||||||
SVE |
op0 | 0010 | op1 | op2 | op3 | op4 | ||||||||||||||||||||||||||
0011 | ||||||||||||||||||||||||||||||||
データ |
100 | op0 | ||||||||||||||||||||||||||||||
op0 | 101 | op1 | op2 | |||||||||||||||||||||||||||||
ロード・ストア |
op0 | 1 | op1 | 0 | op2 | op3 | op4 | |||||||||||||||||||||||||
データ |
op0 | op1 | 101 | op2 | op3 | |||||||||||||||||||||||||||
データ |
op0 | 111 | op1 | op2 | op3 |
Armv8.1-A
[2014
- AArch64アトミック
読 み取 り/書 き込 み命令 のセット。 一部 のライブラリ最適 化 の機会 を可能 にするためのAArch32とAArch64の両方 のAdvanced SIMD命令 セットへの追加 :符号 付 き飽和 丸 め2倍 乗算 積算 、上位 半分 を返 す。符号 付 き飽和 丸 め2倍 乗算 減算 、上位 半分 を返 す。命令 は、ベクトル形式 とスカラー形式 で追加 される。
構成 可能 なアドレス領域 に制限 されたメモリアクセス順序 を提供 できるAArch64ロードおよびストア命令 のセット。- v8.0ではオプションだったCRC
命令 は、Armv8.1では要件 になった。
新 しいPrivileged Access Never(PAN)状態 ビット:明示 的 に有効 にされていない限 り、ユーザーデータへの特権 アクセスを防止 する制御 を提供 。仮想 化 のためのVMID範囲 の拡大 。多数 の仮想 マシンをサポート。- ページテーブルアクセスフラグのハードウェア
更新 のオプションのサポート、およびオプションのハードウェア更新 されたダーティビットメカニズムの標準 化 。 仮想 化 ホスト拡張 機能 (VHE):この拡張 機能 は、ホストオペレーティングシステムとゲストオペレーティングシステム間 の移行 時 に関連 するソフトウェアオーバーヘッドを削減 し、タイプ2ハイパーバイザーのパフォーマンスを向上 する。この拡張 機能 により、ホストOSは実質 的 な変更 なしにEL1ではなくEL2で実行 可能 。- OSがハードウェアサポートを
必要 としない場合 に、オペレーティングシステムで使用 するために一部 の変換 テーブルビットを解放 するメカニズム。 - メモリのタグ
付 け機能 を提供 するTop-byte Ignore[27]。
Armv8.2-A
[2016
- オプションの
半 精度 浮動 小数点 データ処理 (半 精度 は以前 からストレージ形式 ではサポートされていたが、演算 ではサポートされていなかった)。 - メモリモデルの
機能 強化 信頼 性 、可用性 、および保守 性 の拡張 (RAS拡張 )の導入 統計 的 プロファイリングの導入
Scalable Vector Extension(SVE)
[スケーラブルベクター
512ビットのSVEの
SVEはGCCコンパイラによってサポートされており、GCC 8は
Armv8.3-A
[2016
- ポインタ
認証 [35](AArch64のみ)。アーキテクチャへの必須 の拡張 (新 しいブロック暗号 、QARMA[36]に基 づく)(コンパイラはセキュリティ機能 を利用 する必要 があるが、命令 はNOPスペースにあるため、古 いチップでは追加 のセキュリティを提供 しないが、下位 互換 性 がある)。 - ネストされた
仮想 化 (AArch64のみ) - Advanced SIMDでの
複素数 のサポート(AArch64およびAArch32)。たとえば、90度 の倍数 の回転 新 しいFJCVTZS(Floating-point JavaScript Convert to Signed fixed-point, rounding toward Zero:JavaScriptの浮動 小数点 数 を符号 付 き固定 小数点 数 に変換 し、ゼロ方向 に丸 める)命令 [37]- メモリ
整合 性 モデルへの変更 (AArch64のみ)。C++11/C11の(デフォルトではない)より弱 いRCpc(Release Consistent processor consistent)モデルをサポートするため(デフォルトのC++11/C11コンシステンシー・モデルは以前 のArmv8ですでにサポートされていた) - より
大 きなシステム可視 キャッシュのIDメカニズムのサポート(AArch64およびAArch32)
Armv8.3-Aアーキテクチャは(
Armv8.4-A
[2017
- SHA3/SHA512/SM3/SM4
暗号 拡張 改善 された仮想 化 サポート- メモリパーティショニングおよびモニタリング(MPAM)
機能 新 しいセキュアEL2状態 とアクティビティモニター符号 付 きおよび符号 なし整数 ドット積 (SDOTおよびUDOT)命令
2018
- Memory Tagging Extension(MTE)[45]
- 「
攻撃 者 が任意 のコードを実行 する能力 」を低減 するための分岐 ターゲットインジケータ(BTI) 乱数 ジェネレーター命令 :さまざまな国内 および国際 規格 に準拠 した決定 論 的 で真 の乱数 を提供 する
2019
2021
- スケーラブルベクターエクステンション2(SVE2)。SVE2は、SVEのスケーラブルなベクトル
化 に基 づいて構築 されており、細 粒 度 のデータレベル並列 処理 (DLP)を向上 させ、命令 ごとにより多 くの作業 を実行 できる。SVE2は、Advanced SIMD (NEON)のスーパーセットとなり、現在 NEONを使用 しているDSPやマルチメディアSIMDコードなど、幅広 いソフトウェアにこれらのメリットをもたらすことを目的 とする[50]。LLVM/Clang 9およびGCC 10からSVE2をサポートしている[50][51]。 - トランザクションメモリ
拡張 (TME)。x86拡張 機能 に続 いて、TMEはハードウェアトランザクションメモリ(HTM)とトランザクションロックエリジオン(TLE)のサポートを提供 する。TMEは、スケーラブルな同時 実行 性 を実現 して、粗 粒 度 のスレッドレベル並列 処理 (TLP)を向上 させ、スレッドごとにより多 くの作業 を実行 できるようにすることを目的 としている[50]。LLVM/Clang 9およびGCC 10からTMEをサポートしている[51]。 機密 コンピューティングアーキテクチャ(CCA)[52][53]
2019
一般 的 な行列 積 (GEMM)- bfloat16フォーマットのサポート
- SIMD
行列 操作 命令 、BFDOT、BFMMLA、BFMLAL、およびBFCVT 仮想 化 、システム管理 、およびセキュリティの強化 次 の拡張 機能 (LLVM 11ではすでにこれらの機能 のサポートを追加 済 み[55]):拡張 カウンター仮想 化 (Armv8.6-ECV)- ファイングレイントラップ(Armv8.6-FGT)
- アクティビティモニターの
仮想 化 (Armv8.6-AMU)
たとえば、きめ
2020
- スケーラブルマトリックス
拡張 (SME)(Armv9.2のみ)[57]。SMEは行列 を効率 的 に処理 するために、次 のような新 機能 を追加 する。行列 タイルストレージ- オンザフライの
行列 転置 - タイルベクトルのロード/
保存 /挿入 /抽出 - SVEベクトルの
行列 外積 - 「ストリーミングモード」SVE
- PCIeホットプラグの
拡張 サポート(AArch64) - アトミックな64バイトロード/ストアでのアクセラレータへのアクセス(AArch64)
- タイムアウト
指定 付 きのWait For Instruction(WFI)およびWait For Event(WFE)(AArch64) 分岐 レコードの記録 (Armv9.2のみ)
2021
- マスク
不可能 な割 り込 み(AArch64) - memcpy()およびmemset()スタイルの
操作 を最適 化 する命令 (AArch64) - PACへの
拡張 機能 (AArch64) - ヒント
付 き条件 分岐 (AArch64)
2022
仮想 メモリシステムアーキテクチャ(VMSA)の機能 強化 - パーミッションインダイレクトとオーバーレイ
- translation hardening
- 128 ビット
変換 テーブル(ARMv9 のみ)
- Scalable Matrix Extension 2 (SME2) (ARMv9のみ)
- マルチベクトル
命令 - マルチベクトルpredicate
- 2b/4b のウェイト
圧縮 - 1b バイナリーネットワーク
- レンジプリフェッチ
- マルチベクトル
- ガード
付 きコントロールスタック(GCS)(ARMv9のみ) - コンフィデンシャル・コンピューティング
- メモリ
暗号 化 コンテクスト - デバイスの
割 り当 て
- メモリ
Armv8-R(リアルタイムアーキテクチャ)
[オプションのAArch64サポートがArmv8-Rプロファイルに
脚注
[- ^ “Overview”. Learn the architecture: Understanding the Armv8.x and Armv9.x extensions. 2022
年 8月 24日 閲覧 。 - ^ “Neoverse V1”. June 12, 2024
閲覧 。 - ^ “Faster ML inference with AWS Graviton3”. community.arm.com. 12 June 2024
閲覧 。 - ^ a b “ARM、Hot ChipsでHPC
用 のスケーラブル・ベクトル拡張 を公表 ”. HPCwire Japan (2016年 8月 28日 ). 2022年 1月 2日 閲覧 。 - ^ “Overview - Learn the architecture - Introducing SVE2”. June 2, 2024
閲覧 。 - ^
株式会社 インプレス (2021年 3月 31日 ). “Arm、10年 ぶりの新 アーキテクチャ「Armv9」。富岳 のSVE改良 版 やコンフィデンシャルコンピューティング機能 追加 ”. PC Watch. 2022年 1月 2日 閲覧 。 - ^ “Learn the architecture - Introducing SVE2”. June 2, 2024
閲覧 。 - ^ “machine/arch-armv9: remove crc and sve tunes, they are mandatory - Patchwork”. patchwork.yoctoproject.org. 12 June 2024
閲覧 。 - ^ “The Cortex-X2: More Performance, Deeper OoO - Arm Announces Mobile Armv9 CPU Microarchitectures: Cortex-X2, Cortex-A710 & Cortex-A510”. June 1, 2024
閲覧 。 - ^ “Arm Cortex‑X2 Core Technical Reference Manual”. June 1, 2024
閲覧 。 - ^ “Arm Cortex-X3 Core Technical Reference Manual”. June 1, 2024
閲覧 。 - ^ “Arm Cortex-X4 Core Technical Reference Manual”. June 1, 2024
閲覧 。 - ^ “Arm Neoverse V2 Core Software Optimization Guide”. June 2, 2024
閲覧 。 - ^ “Scalable Matrix Extension for the Armv9-A Architecture”. community.arm.com. 31 May 2024
閲覧 。 - ^ “Overview | Hello SME documentation”. scalable.uni-jena.de. 1 June 2024
閲覧 。 - ^ “Vector Length - Microbenchmarks | Hello SME documentation”. scalable.uni-jena.de. 1 June 2024
閲覧 。 - ^ “Arm A-Profile Architecture Developments 2022”. community.arm.com. 31 May 2024
閲覧 。 - ^ "ARM Discloses Technical Details Of The Next Version Of The ARM Architecture" (Press release). Arm Holdings. 27 October 2011. 2019
年 1月 1日 時点 のオリジナルよりアーカイブ。2013年 9月 20日 閲覧 。 - ^ Grisenthwaite (2011
年 ). “ARMv8-A Technology Preview”. 11 November 2011時 点 のオリジナルよりアーカイブ。31 October 2011閲覧 。 - ^ "ARM Launches Cortex-A50 Series, the World's Most Energy-Efficient 64-bit Processors" (Press release). Arm Holdings. 2012
年 10月 31日 閲覧 。 - ^ "AppliedMicro Showcases World's First 64-bit ARM v8 Core" (Press release). AppliedMicro. 28 October 2011. 2014
年 2月 11日 閲覧 。 - ^ “Samsung's Exynos 5433 is an A57/A53 ARM SoC”. AnandTech. 17 September 2014
閲覧 。 - ^ “ARM Cortex-A53 MPCore Processor Technical Reference Manual: Cryptography Extension”. ARM. 11 September 2016
閲覧 。 - ^ “Cortex-A32 Processor – ARM”. 18 December 2016
閲覧 。 - ^ “Top-level encodings for A64 - Arm A-profile A64 Instruction Set Architecture”. ARM. 2022
年 5月 8日 閲覧 。 - ^ Brash (2 December 2014). “The ARMv8-A architecture and its ongoing development”. 23 January 2015
閲覧 。 - ^ “Top-byte ignore (TBI)”. WikiChip. 2022
年 7月 17日 閲覧 。 - ^ Brash (5 January 2016). “ARMv8-A architecture evolution”. 7 June 2016
閲覧 。 - ^ “The scalable vector extension sve for the Armv8 a architecture” (
英語 ). Arm Community. (22 August 2016) 8 July 2018閲覧 。 - ^ a b “GCC 8 Release Series – Changes, New Features, and Fixes – GNU Project – Free Software Foundation (FSF)” (
英語 ). gcc.gnu.org. 9 July 2018閲覧 。 - ^ “Learn the architecture - Introducing SVE2”. June 1, 2024
閲覧 。 - ^ "Fujitsu Completes Post-K Supercomputer CPU Prototype, Begins Functionality Trials – Fujitsu Global" (Press release) (
英語 ). 2018年 7月 8日 閲覧 。 - ^ “⚙ D71712 Downstream SVE/SVE2 implementation (LLVM)”. reviews.llvm.org. 2020
年 9月 5日 閲覧 。 - ^ David Brash (26 October 2016). “ARMv8-A architecture – 2016 additions”. 2022
年 7月 17日 閲覧 。 - ^ “[Ping~,AArch64 Add commandline support for -march=armv8.3-a]”. 2022
年 8月 24日 閲覧 。 “pointer authentication extension is defined to be mandatory extension on ARMv8.3-A and is not optional” - ^ “Qualcomm releases whitepaper detailing pointer authentication on ARMv8.3” (2017
年 1月 10日 ). 2022年 8月 24日 閲覧 。 - ^ “A64 Floating-point Instructions: FJCVTZS”. arm.com. 11 July 2019
閲覧 。 - ^ “GCC 7 Release Series – Changes, New Features, and Fixes”. 2022
年 8月 24日 閲覧 。 “The ARMv8.3-A architecture is now supported. It can be used by specifying the -march=armv8.3-a option. [..] The option -msign-return-address= is supported to enable return address protection using ARMv8.3-A Pointer Authentication Extensions.” - ^ “Introducing 2017's extensions to the Arm Architecture” (
英語 ). community.arm.com. 15 June 2019閲覧 。 - ^ “Exploring dot product machine learning” (
英語 ). community.arm.com. 15 June 2019閲覧 。 - ^ “ARM Preps ARMv8.4-A Support For GCC Compiler – Phoronix” (
英語 ). www.phoronix.com. 14 January 2018閲覧 。 - ^ a b c d e “Armv8.x and Armv9.x extensions and features”. Learn the architecture: Understanding the Armv8.x and Armv9.x extensions. 2022
年 5月 4日 閲覧 。 - ^ “Arm Architecture Armv8.5-A Announcement – Processors blog – Processors – Arm Community” (
英語 ). community.arm.com. 26 April 2019閲覧 。 - ^ “Arm Architecture Reference Manual Armv8, for Armv8-A architecture profile” (
英語 ). ARM Developer. 6 August 2019閲覧 。 - ^ “Arm MTE architecture: Enhancing memory safety” (
英語 ). community.arm.com. 2021年 7月 27日 閲覧 。 - ^ “Adopting the Arm Memory Tagging Extension in Android” (
英語 ). Google Online Security Blog. 6 August 2019閲覧 。 - ^ “Arm's solution to the future needs of AI, security and specialized computing is v9” (
英語 ). Arm | The Architecture for the Digital World. 2021年 7月 27日 閲覧 。 - ^ Schor (2021
年 3月 30日 ). “Arm Launches ARMv9” (英語 ). WikiChip Fuse. 2021年 7月 27日 閲覧 。 - ^ Frumusanu. “Arm Announces Armv9 Architecture: SVE2, Security, and the Next Decade”. www.anandtech.com. 2021
年 7月 27日 閲覧 。 - ^ a b c “Arm releases SVE2 and TME for A-profile architecture – Processors blog – Processors – Arm Community” (
英語 ). community.arm.com. 25 May 2019閲覧 。 - ^ a b “Arm SVE2 Support Aligning For GCC 10, LLVM Clang 9.0 – Phoronix”. www.phoronix.com. 26 May 2019
閲覧 。 - ^ “Unlocking the power of data with Arm CCA” (
英語 ). community.arm.com. 2021年 7月 27日 閲覧 。 - ^ “Arm Introduces Its Confidential Compute Architecture” (
英語 ). WikiChip Fuse (2021年 6月 23日 ). 2021年 7月 27日 閲覧 。 - ^ “Arm A profile architecture update 2019” (
英語 ). community.arm.com. 26 September 2019閲覧 。 - ^ “LLVM 11.0.0 Release Notes”. releases.llvm.org. 2021
年 3月 11日 閲覧 。 - ^ “BFloat16 extensions for Armv8-A” (
英語 ). community.arm.com. 30 August 2019閲覧 。 - ^ “Scalable Matrix Extension for the Armv9-A Architecture” (
英語 ). community.arm.com. 2021年 7月 27日 閲覧 。 - ^ “Arm A-Profile Architecture Developments 2022 - Architectures and Processors blog - Arm Community blogs - Arm Community” (
英語 ). community.arm.com. 2022年 12月9日 閲覧 。 - ^ Frumusanu (September 3, 2020). “ARM Announced Cortex-R82: First 64-bit Real Time Processor”. AnandTech. 2022
年 7月 17日 閲覧 。 - ^ “Arm Architecture Reference Manual Supplement - Armv8, for Armv8-R AArch64 architecture profile”. Arm Ltd. 2022
年 7月 17日 閲覧 。