AArch64

AArch64またはARM64は、ARMアーキテクチャの64ビット命令セットである。
最初に、Armv8-Aアーキテクチャとして導入された。Armは毎年新しい拡張機能をリリースしている。
Armv8.xおよびArmv9.x拡張機能.
2011年10月に発表された Armv8-Aは、ARMアーキテクチャの根本的な変化を示した。これは、「AArch64」という名前のオプションの64ビットアーキテクチャと、関連する新しい「A64」命令セットを追加した。AArch64は、既存の32ビットアーキテクチャ（"AArch32"/ARMv7-A）および命令セット（"A32"）とのユーザースペース互換性を提供する。16ビットのThumb命令セットは「T32」と呼ばれ、64ビットの命令セットがない。Armv8-Aを使用すると、32ビットアプリケーションを64ビットOSで実行し、32ビットOSを64ビットハイパーバイザーの制御下に置くことができる。ARMは、2012年10月30日にCortex-A53およびCortex-A57コアを発表した。
Appleは、消費者向け製品（iPhone 5s）でArmv8-A互換コア（Cyclone）を最初にリリースした。AppliedMicroは、シリコンチップ化される前のArmv8-A アーキテクチャをFPGAに構築し、64ビットLinuxを実行する最初のデモを行った。Samsungの最初のArmv8-A SoCは、Galaxy Note 4で使用されているExynos 5433であり、big.LITTLE構成の4つのCortex-A57コアとCortex-A53コアの2つのクラスターを備えている。ただし、AArch32モードでのみ実行される。
AArch32とAArch64の両方に対して、Armv8-AはVFPv3/v4とAdvanced SIMD (NEON)を標準としている。また、AES、SHA-1/SHA-256、およびをサポートする暗号化命令も追加する。
AArch64の機能.
拡張：データ収集のヒント（Armv8.0-DGH）
AArch64はArmv8-Aで導入され、後続のバージョンに含まれている。AArch64は、Armv8-Aへの導入後にオプションとしてArmv8-Rにも導入された。Armv8-Mには含まれていない。
命令エンコード.
A64命令は以下の表のビットアサインに基づいてエンコードされる。命令はグルーピングされており、主にビット25から28が命令の所属グループを表現している。
Armv8.1-A.
2014年12月、「v8.0を超える増分メリット」をもたらすアップデートであるArmv8.1-Aが発表された。拡張機能は2つのカテゴリ、すなわち命令セットの変更、および例外モデルとメモリ変換の変更に分類される。
命令セットの機能強化には、次のものが含まれる。
例外モデルとメモリ変換システムの機能強化には、次のものが含まれる。
Armv8.2-A.
2016年1月、Armv8.2-Aが発表された。その機能強化は、次の4つのカテゴリに分類される。
Scalable Vector Extension（SVE）.
スケーラブルベクター拡張機能（SVE）は、特にハイパフォーマンスコンピューティングの科学的ワークロードのベクトル化のために開発された「Armv8.2-Aアーキテクチャ以降のオプションの拡張機能」である。この仕様では、128から2048ビットの可変ベクトル長を実装できる。この拡張機能は、NEON拡張機能を補完するものであり、これに置き換わるものではない。
512ビットのSVEの一種は、富士通A64FX ARMプロセッサを使用して富岳スーパーコンピュータに実装されている。富岳は、2021年に本格稼働を開始し、当時世界最高性能のスーパーコンピュータとなった。
SVEはGCCコンパイラによってサポートされており、GCC 8は自動ベクトル化をサポートし、GCC10はC組み込み関数をサポートしている。2020年7月の時点で、LLVMとclangはCとIRの組み込み関数をサポートしている。ARM独自のLLVMフォークは、自動ベクトル化をサポートしている。
Armv8.3-A.
2016年10月、Armv8.3-Aが発表された。その機能強化は6つのカテゴリに分類される。
Armv8.3-Aアーキテクチャは（少なくとも）GCC7コンパイラでサポートされるようになった。
Armv8.4-A.
2017年11月、Armv8.4-Aが発表されました。この拡張機能は次のカテゴリに分類される。
Armv8.5-AおよびArmv9.0-A.
2018年9月、Armv8.5-Aが発表された。その拡張機能は次のカテゴリに分類される。
2019年8月2日、GoogleはAndroidがMemory Tagging Extension（MTE）を採用すると発表した。
2021年3月、Armv9-Aが発表された。Armv9-Aのベースラインは、Armv8.5のすべての機能である。Armv9-Aは以下も追加している。
Armv8.6-AおよびArmv9.1-A.
2019年9月、Armv8.6-Aが発表された。その拡張機能は次のカテゴリに分類される。
たとえば、きめ細かいトラップ、Wait-for-Event（WFE）命令、EnhancedPAC2、FPACなどがある。SVEおよびNEONのBfloat16拡張機能は、主に深層学習で使用するためのものである。
Armv8.7-AおよびArmv9.2-A.
2020年9月、Armv8.7-Aが発表された。
Armv8.8-AおよびArmv9.3-A.
2021年9月、Armv8.8-AおよびArmv9.3-Aが発表された。
Armv8.9-AおよびArmv9.4-A.
2022年9月、ARMv8.9-AとARMv9.4-Aを発表。
Armv8-R（リアルタイムアーキテクチャ）.
オプションのAArch64サポートがArmv8-Rプロファイルに追加され、最初のARMコアがCortex-R82を実装した。A64命令セットが追加され、メモリバリア命令にいくつかの変更が加えられている。