Ini pertama kali diperkenalkan dengan arsitektur Armv8-A. Arm merilis ekstensi baru setiap tahun.[1]
Ekstensi dan fitur: ARMv8.x dan ARMv9.x
Diumumkan pada bulan Oktober 2011, ARMv8-A mewakili perubahan mendasar dalam arsitektur ARM.[2] Ini menambahkan arsitektur 64 bit opsional, bernama "AArch64", dan set instruksi baru "A64" yang terkait. AArch64 menyediakan kompatibilitas ruang pengguna dengan arsitektur 32-bit yang ada ("AArch32"/ARMv7-A), dan set instruksi ("A32"). Set instruksi Thumb 16-32bit disebut dengan "T32" dan tidak memiliki lawan 64-bit. ARMv8-A memungkinkan aplikasi 32-bit untuk dijalankan dalam OS 64-bit, dan OS 32-bit untuk berada di bawah kendali dari hypervisor 64-bit.[3] ARM mengumumkan inti Cortex-A53 dan Cortex- A57 pada 30 Oktober 2012.[4] Apple adalah yang pertama kali merilis inti kompatibel ARMv8-A (Cyclone) dalam produk konsumen (iPhone 5S). AppliedMicro, menggunakan FPGA, adalah yang pertama untuk mendemonstrasikan ARMv8-A.[5]SoC ARMv8A pertama dari Samsung yaitu Exynos 5433 yang digunakan dalam Galaxy Note 4, yang menampilkan dua kluster dari empat inti Cortex-A57 dan Cortex-A53 dalam konfigurasi big.LITTLE; namun hanya akan berjalan pada mode AArch32.[6]
Untuk AArch32 dan AArch64, ARMv8-A membuat standar VFPv3/v4 dan SIMD (Neon) lanjutan. Itu juga menambahkan instruksi kriptografi yang mendukung AES, SHA-1/SHA-256 dan aritmatika bidang terbatas.[7]
Memiliki register 32 × 128-bit (naik dari 16), juga dapat diakses via VFPv4.
Mendukung format floating-point presisi ganda.
Sepenuhnya sesuai dengan IEEE 754.
AES mengenkripsi/mendekripsi dan instruksi hashing SHA-1/SHA-2 juga menggunakan register ini.
Sistem pengecualian baru
Lebih sedikit register dan mode yang dibelokkan.
Terjemahan memori dari alamat virtual 48-bit berdasarkan Ekstensi Alamat Fisik Besar (LPAE) yang ada, yang dirancang agar mudah diperluas ke 64-bit.
Ekstensi: Petunjuk pengumpulan data (ARMv8.0-DGH)
AArch64 diperkenalkan di ARMv8-A dan disertakan dalam versi selanjutnya dari ARMv8-A. Itu juga diperkenalkan di ARMv8-R sebagai opsi, setelah diperkenalkan di ARMv8-A; itu tidak termasuk dalam ARMv8-M.
Format instruksi
Opcode utama untuk memilih grup mana yang termasuk dalam instruksi A64 adalah pada bit 25-28.
A64 instruction formats
Tipe
Bit
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
Reserved
op0
0000
op1
Immediate constant 16 bits
Unallocated
0001
Intruksi SVE
0010
Unallocated
0011
Data Processing — Immediate PC-rel.
op
immlo
10000
immhi
Rd
Data Processing — Immediate Others
sf
100
01-11
Rd
Branches + System Instructions
op0
101
op1
op2
Load and Store Instructions
op0
1
op1
0
op2
op3
op4
Data Processing — Register
sf
op0
op1
101
op2
op3
Data Processing — Floating Point and SIMD
op0
111
op1
op2
op3
ARMv8.1-A
Pada bulan Desember 2014, ARMv8.1-A,[9] pembaruan dengan diumumkannya "manfaat tambahan dari v8.0". Perangkat tambahan jatuh ke dalam dua kategori: perubahan set instruksi, dan perubahan model pengecualian dan terjemahan memori.
Penyempurnaan set instruksi termasuk yang berikut:
Satu set instruksi baca-tulis atomik AArch64.
Tambahan pada set instruksi SIMD Lanjutan untuk AArch32 dan AArch64 untuk mengaktifkan peluang bagi beberapa pengoptimalan perpustakaan:
Ditandatangani Saturating Rounding Doubling Multiply Accumulate, Returning High Half.
Ditandatangani Saturating Rounding Doubling Multiply Subtract, Returning High Half.
Instruksi ditambahkan dalam bentuk vektor dan skalar.
Serangkaian instruksi pemuatan dan penyimpanan AArch64 yang dapat memberikan urutan akses memori yang terbatas pada wilayah alamat yang dapat dikonfigurasi.
Instruksi CRC opsional di v8.0 menjadi persyaratan di ARMv8.1.
Penyempurnaan untuk model pengecualian dan sistem terjemahan memori termasuk yang berikut ini:
Bit status Privileged Access Never (PAN) terbaru menyediakan kontrol yang mencegah akses istimewa ke data pengguna kecuali diaktifkan secara eksplisit.
Peningkatan rentang VMID untuk virtualisasi; mendukung jumlah mesin virtual yang lebih banyak.
Dukungan opsional untuk pembaruan perangkat keras dari bendera akses tabel halaman, dan standarisasi mekanisme bit kotor, pembaruan perangkat keras, dan opsional.
Ekstensi Host Virtualisasi (VHE). Penyempurnaan ini meningkatkan kinerja hypervisor Tipe 2 dengan mengurangi overhead perangkat lunak yang terkait saat bertransisi antara sistem operasi Host dan Guest. Ekstensi memungkinkan OS Host untuk mengeksekusi di EL2, bukan EL1, tanpa modifikasi substansial.
Mekanisme untuk membebaskan beberapa bit tabel terjemahan untuk penggunaan sistem operasi, di mana dukungan perangkat keras tidak diperlukan oleh OS.
Pada bulan Januari 2016, ARMv8.2-A telah diumumkan.[11] Perangkat tambahannya jatuh ke dalam empat kategori:
Pemrosesan data half-precision floating-point opsional (setengah presisi sudah didukung, tetapi tidak untuk diproses, hanya sebagai format penyimpanan.)
Peningkatan model memori
Pengenalan Ekstensi Keandalan, Ketersediaan, dan Kemudahan Servis (Ekstensi RAS)
Pengenalan profil statistik
Scalable Vector Extension (SVE)
Scalable Vector Extension (SVE) adalah "ekstensi opsional untuk arsitektur ARMv8.2-A dan yang lebih baru" yang dikembangkan secara khusus untuk vektorisasi beban kerja ilmiah komputasi performa tinggi.[12][13] Spesifikasi yang memungkinkan panjang vektor variabel diimplementasikan dari 128 sampai 2048 bit. Ekstensi ini melengkapi, dan tidak menggantikan, ekstensi NEON.
Varian SVE 512-bit telah diimplementasikan pada superkomputer Fugaku menggunakan prosesor Fujitsu A64FX ARM. Ini bertujuan untuk menjadi superkomputer dengan kinerja tertinggi di dunia dengan "tujuan untuk memulai operasi penuh sekitar tahun 2021."[14] Versi yang lebih fleksibel, 2x256 SVE, diimplementasikan oleh prosesor AWS Graviton3 ARM.
SVE didukung oleh kompiler GCC, dengan GCC 8 mendukung vektorisasi otomatis[13] dan GCC 10 mendukung intrinsik C. Mulai bulan Juli 2020, LLVM dan <i>clang</i> mendukung intrinsik C dan IR. Garpu LLVM ARM sendiri mendukung vektorisasi otomatis.[15]
ARMv8.3-A
Pada bulan Oktober 2016, ARMv8.3-A telah diumumkan. Perangkat tambahannya jatuh ke dalam enam kategori:[16]
Otentikasi penunjuk[17] (hanya AArch64); ekstensi wajib (berdasarkan cipher blok baru, QARMA[18]) ke arsitektur (kompiler perlu mengeksploitasi fitur keamanan, tetapi karena instruksi berada di ruang NOP, mereka kompatibel ke belakang meskipun tidak memberikan keamanan ekstra pada chip lama).
Virtualisasi bersarang (khusus AArch64)
Dukungan bilangan kompleks SIMD tingkat lanjut (AArch64 dan AArch32); misalnya rotasi dengan kelipatan 90 derajat.
Instruksi FJCVTZS terbaru (Floating-point JavaScript Convert to Signed fixed-point, pembulatan menuju Nol).[19]
Perubahan pada model konsistensi memori (hanya AArch64); untuk mendukung model RCpc (Rilis Konsisten prosesor yang konsisten) (non-default) yang lebih lemah dari C++11/C11 (model konsistensi C++ 11/C11 default sudah didukung di ARMv8 sebelumnya).
Dukungan mekanisme ID untuk cache yang terlihat sistem yang lebih besar (AArch64 dan AArch32)
Arsitektur ARMv8.3-A sekarang didukung oleh (setidaknya) kompiler GCC 7.[20]
ARMv8.4-A
Pada bulan November 2017, ARMv8.4-A telah diumumkan. Peningkatannya termasuk dalam kategori berikut:[21][22][23]
Indikator Target Cabang (BTI) untuk mengurangi "kemampuan penyerang untuk mengeksekusi kode arbitrer",
Instruksi Penghasil Bilangan Acak – "menyediakan Bilangan Acak Deterministik dan Benar yang sesuai dengan berbagai Standar Nasional dan Internasional"
Pada tanggal 2 Agustus 2019, Google mengumumkan Android akan mengadopsi Ekstensi Penandaan Memori (MTE).[28]
Pada bulan Maret 2021, ARMv9-A telah diumumkan. Baseline ARMv9-A adalah semua fitur yang ada di ARMv8.5.[29][30][31] ARMv9-A juga menambahkan:
Ekstensi Vektor yang Dapat Diskalakan 2 (SVE2). SVE2 dibangun di atas vektorisasi SVE yang dapat diskalakan untuk meningkatkan Paralelisme Tingkat Data (DLP) fine-grain, untuk memungkinkan lebih banyak pekerjaan dilakukan per instruksi. SVE2 bertujuan untuk membawa manfaat ini ke perangkat lunak yang lebih luas termasuk DSP dan kode multimedia SIMD yang saat ini menggunakan Neon.[32] Kode pengembangan LLVM/Clang 9.0 dan GCC 10.0 diperbarui untuk mendukung SVE2.[32][33]
Ekstensi Memori Transaksional (TME). Mengikuti ekstensi x86, TME membawa dukungan untuk Hardware Transactional Memory (HTM) dan Transactional Lock Elision (TLE). TME bertujuan untuk menghadirkan konkurensi yang dapat diskalakan untuk meningkatkan Thread Level Parallelism (TLP) berbutir kasar, untuk memungkinkan lebih banyak pekerjaan dilakukan per utas.[32] Kode pengembangan LLVM/Clang 9.0 dan GCC 10.0 diperbarui untuk mendukung TME.[33]
Instruksi manipulasi matriks SIMD, BFDOT, BFMMLA, BFMLAL dan BFCVT
perangkat tambahan untuk virtualisasi, manajemen sistem dan keamanan
dan ekstensi berikut (yang LLVM 11 telah menambahkan dukungan untuk[37]):
Peningkatan Kontra Virtualisasi (ARMv8.6-ECV)
Perangkap Berbutir Halus (ARMv8.6-FGT)
Monitor Aktivitas virtualisasi (ARMv8.6-AMU)
Sebagai contoh, perangkap berbutir halus, instruksi Wait-for-Event (WFE), EnhancedPAC2 dan FPAC. Ekstensi bfloat16 untuk SVE dan Neon sebagian besar digunakan untuk pembelajaran mendalam.[38]
Pada September 2022, ARMv8.9-A dan ARMv9.4-A telah diumumkan, termasuk: [43]
Peningkatan Arsitektur Sistem Memori Virtual (VMSA).
Izin inderection dan overlay
Pengerasan terjemahan
Tabel terjemahan 128-bit (khusus ARMv9)
Ekstensi Matriks yang Dapat Diskalakan 2 (SME2) (khusus ARMv9)
Instruksi multi-vektor
Predikat multi-vektor
Kompresi berat 2b/4b
1b jaringan biner
Rentang Prefetch
Guarded Control Stack (GCS) (khusus ARMv9)
Komputasi Rahasia
Konteks Enkripsi Memori
Penugasan Perangkat
Armv8-R (arsitektur real-time)
Dukungan AArch64 opsional telah ditambahkan ke profil Armv8-R, dengan inti Arm pertama yang mengimplementasikannya ialah Cortex-R82.[44] Itu menambahkan set instruksi A64, dengan beberapa perubahan pada instruksi penghalang memori.[45]
Referensi
^"Overview". Learn the architecture: Understanding the Armv8.x and Armv9.x extensions.
^ (Siaran pers). Arm Holdings. Diarsipkan dari versi asli Parameter |archive-url= membutuhkan |url= (bantuan) tanggal 1 January 2019.Tidak memiliki atau tanpa |title= (bantuan); Parameter |access-date= membutuhkan |url= (bantuan)
^Grisenthwaite, Richard (2011). "ARMv8-A Technology Preview"(PDF). Diarsipkan dari versi asli(PDF) tanggal 11 November 2011. Diakses tanggal 31 October 2011.Parameter |url-status= yang tidak diketahui akan diabaikan (bantuan)
^ (Siaran pers). Arm Holdings.Tidak memiliki atau tanpa |title= (bantuan); Parameter |access-date= membutuhkan |url= (bantuan)
^ (Siaran pers). AppliedMicro.Tidak memiliki atau tanpa |title= (bantuan); Parameter |access-date= membutuhkan |url= (bantuan)
^"GCC 7 Release Series – Changes, New Features, and Fixes". 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.
^ abcd"ARMv8.x and ARMv9.x extensions and features". Learn the architecture: Understanding the ARMv8.x and ARMv9.x extensions.Kesalahan pengutipan: Tanda <ref> tidak sah; nama "armv8-x-and-armv9-x-extensions-and-features" didefinisikan berulang dengan isi berbeda