AArch64またはARM64は、ARMアーキテクチャの64ビット命令セットである。ARMv8- Cortex-A57/A53 MPCore big.LITTLE CPUチップ
最初に、Armv8-Aアーキテクチャとして導入された。Armは毎年新しい拡張機能をリリースしている[1]。
Armv8.xおよびArmv9.x拡張機能「en:Comparison of ARMv8-A processors」も参照
2011年10月に発表された[2] Armv8-Aは、ARMアーキテクチャの根本的な変化を示した。これは、「AArch64」という名前のオプションの64ビットアーキテクチャと、関連する新しい「A64」命令セットを追加した。AArch64は、既存の32ビットアーキテクチャ("AArch32"/ARMv7-A)および命令セット("A32")とのユーザースペース互換性を提供する。16ビットのThumb命令セットは「T32」と呼ばれ、64ビットの命令セットがない。Armv8-Aを使用すると、32ビットアプリケーションを64ビットOSで実行し、32ビットOSを64ビットハイパーバイザーの制御下に置くことができる[3]。ARMは、2012年10月30日にCortex-A53およびCortex-A57コアを発表した[4]。
Appleは、消費者向け製品(iPhone 5s)でArmv8-A互換コア(Cyclone)を最初にリリースした。AppliedMicroは、シリコンチップ化される前のArmv8-A アーキテクチャをFPGAに構築し、64ビットLinuxを実行する最初のデモを行った[5]。Samsungの最初のArmv8-A SoCは、Galaxy Note 4で使用されているExynos 5433であり、big.LITTLE構成の4つのCortex-A57コアとCortex-A53コアの2つのクラスターを備えている。ただし、AArch32モードでのみ実行される[6]。
AArch32とAArch64の両方に対して、Armv8-AはVFPv3/v4とAdvanced SIMD (NEON)を標準としている。また、AES、SHA-1/SHA-256、および有限体演算
(英語版)をサポートする暗号化命令も追加する[7]。拡張:データ収集のヒント(Armv8.0-DGH)
AArch64はArmv8-Aで導入され、後続のバージョンに含まれている。AArch64は、Armv8-Aへの導入後にオプションとしてArmv8-Rにも導入された。Armv8-Mには含まれていない。 A64命令は以下の表のビットアサインに基づいてエンコードされる。命令はグルーピングされており、主にビット25から28が命令の所属グループを表現している。 A64命令エンコード[9]タイプビット 2014年12月、「v8.0を超える増分メリット」をもたらすアップデートであるArmv8.1-A[10]が発表された。拡張機能は2つのカテゴリ、すなわち命令セットの変更、および例外モデルとメモリ変換の変更に分類される。 命令セットの機能強化には、次のものが含まれる。
命令エンコード
313029282726252423222120191817161514131211109876543210
予約0op00000op1
SME命令1op00000op1op2op3
未割当0001
SVE命令op00010op1op2op3op4
未割当0011
データ処理(即値)100op0
分岐/例外生成/システム命令op0101op1op2
ロード・ストア命令op01op10op2op3op4
データ処理(レジスタ)op0op1101op2op3
データ処理(浮動小数/SIMD)op0111op1op2op3
Armv8.1-A
AArch64アトミック読み取り/書き込み命令のセット。