AArch64

Ekim 2011'de duyurulan  Armv8-A, ARM mimarisinde temel bir değişikliği temsil etmektedir. "AArch64" adlı isteğe bağlı bir 64 bit mimari ve ilişkili yeni "A64" komut kümesi ekler. AArch64, mevcut 32 bit mimari ("AArch32" / Armv7-A) ve komut seti ("A32") ile kullanıcı alanı uyumluluğu sağlar. 16-32bit Thumb komut seti "T32" olarak anılır ve 64-bit karşılığı yoktur. Armv8-A, 32 bit uygulamaların 64 bit işletim sisteminde yürütülmesine ve 32 bit işletim sisteminin 64 bit hipervizörün kontrolü altında olmasına izin verir. ARM, Cortex-A53 ve Cortex-A57 çekirdeklerini 30 Ekim 2012'de duyurdu.  Apple, bir tüketici ürününde (iPhone 5S) Armv8-A uyumlu bir çekirdek (Cyclone) yayınlayan ilk şirket  oldu. AppliedMicro, bir FPGA kullanarak, Armv8-A'nın demosunu yapan ilk kurumdur.  Samsung'un ilk Armv8-A SoC'si, Galaxy Note 4'te kullanılan ve büyük bir dört Cortex-A57 ve Cortex-A53 çekirdekli iki kümeye sahip Exynos 5433'tür. big.LITTLE konfigürasyon; ancak yalnızca AArch32 modunda çalışacaktır.Hem AArch32 hem de AArch64 için Armv8-A, VFPv3/v4 ve gelişmiş SIMD (Neon) standardı yapar. Ayrıca AES, SHA-1 / SHA-256 ve sonlu alan aritmetiğini destekleyen kriptografi talimatları da ekler.Talimatlar hala 32 bit uzunluğunda ve çoğunlukla A32 ile aynı (LDM/STM komutları ve çoğu koşullu yürütme düştü).64 bit'e kolayca genişletilmek üzere tasarlanmış mevcut Büyük Fiziksel Adres Uzantısını (LPAE) temel alan 48 bit sanal adreslerden bellek çevirisi.AArch64, Armv8-A'da tanıtıldı ve Armv8-A'nın sonraki sürümlerine dahil edildi. Ayrıca Armv8-A'daki tanıtımından sonra Armv8-R'de bir seçenek olarak tanıtıldı; Armv8-M'ye dahil değildir.Aralık 2014'te Armv8.1-A, "v8.0'a göre artan faydalar" içeren bir güncelleme duyuruldu. Geliştirmeler iki kategoriye ayrıldı: talimat setindeki değişiklikler ve istisna modeli ve bellek çevirisindeki değişiklikler.Bazı kitaplık optimizasyonları için fırsatları etkinleştirmek için hem AArch32 hem de AArch64 için Gelişmiş SIMD komut setine eklemeler:Yapılandırılabilir adres bölgeleriyle sınırlı bellek erişim sırası sağlayabilen bir dizi AArch64 yükleme ve saklama talimatı.Yeni Ayrıcalıklı Erişim Asla (PAN) durum biti, açıkça etkinleştirilmedikçe kullanıcı verilerine ayrıcalıklı erişimi engelleyen kontrol sağlar.Sayfa tablosu erişim bayrağının donanım güncellemesi için isteğe bağlı destek ve isteğe bağlı, donanım güncelleştirilmiş, kirli bit mekanizmasının standartlaştırılması.Sanallaştırma Ana Bilgisayar Uzantıları (VHE). Bu geliştirmeler, Host ve Guest işletim sistemleri arasında geçiş yaparken ortaya çıkan yazılım yükünü azaltarak Tip 2 hipervizörlerin performansını iyileştirir. Uzantılar, Ana İşletim Sisteminin önemli bir değişiklik olmaksızın EL1'in aksine EL2'de çalışmasına izin verir.İşletim sisteminin donanım desteğine ihtiyaç duymadığı durumlarda, işletim sistemi kullanımı için bazı çeviri tablosu bitlerini serbest bırakan bir mekanizma.İsteğe bağlı yarı kesinlikli kayan noktalı veri işleme (yarı kesinlik zaten destekleniyordu, ancak işleme için desteklenmiyor, tıpkı bir depolama biçimi olarak. )Ölçeklenebilir Vektör Uzantısı (SVE), yüksek performanslı bilgi işlem bilimsel iş yüklerinin vektörleştirilmesi için özel olarak geliştirilmiş "ARMv8.2-A mimarisinin isteğe bağlı bir uzantısıdır ve daha yenidir". Spesifikasyon, 128 ila 2048 bit arasında değişen vektör uzunluklarının uygulanmasına izin verir. Uzantı, NEON uzantılarının tamamlayıcısıdır ve yerini almaz.Fujitsu A64FX ARM işlemci kullanılarak Fugaku süper bilgisayarında 512 bitlik bir SVE varyantı zaten uygulandı. "2021 civarında tam operasyonlara başlama hedefi" ile dünyanın en yüksek performanslı süper bilgisayarı olmayı hedefliyor.SVE, otomatik vektörleştirmeyi destekleyen GCC 8  ve C intrinsiklerini destekleyen GCC 10 ile GCC derleyicisi tarafından desteklenir. Temmuz 2020 itibarıyla, LLVM ve clang, C ve IR özlerini destekler. ARM'nin kendi LLVM çatalı otomatik vektörleştirmeyi destekler.İşaretçi kimlik doğrulaması  (yalnızca AArch64); mimariye zorunlu uzantı (yeni bir blok şifresine dayalı, QARMA  ) (derleyicilerin güvenlik özelliğinden yararlanmaları gerekir, ancak talimatlar NOP alanında olduğundan, eski yongalarda ekstra güvenlik sağlamasa da geriye dönük olarak uyumludurlar).Gelişmiş SIMD karmaşık sayı desteği (AArch64 ve AArch32); örneğin 90 derecenin katları ile döndürmeler.Yeni FJCVTZS (Kayan Noktalı JavaScript'i İmzalı Sabit Noktaya Dönüştürme, Sıfıra doğru yuvarlama) talimatı.Bellek tutarlılık modelinde bir değişiklik (yalnızca AArch64); C++11 / C11'in (varsayılan olmayan) daha zayıf RCpc (Sürüm Tutarlı işlemci tutarlı) modelini desteklemek için (varsayılan C++11/ C11 tutarlılık modeli önceki Armv8'de zaten destekleniyordu).Sistem tarafından görülebilen daha büyük önbellekler için kimlik mekanizması desteği (AArch64 ve AArch32)Rastgele Sayı Üretici talimatları - "çeşitli Ulusal ve Uluslararası Standartlara uygun Deterministik ve Gerçek Rastgele Sayılar sağlamak"Mart 2021'de ARMv9-A duyuruldu. ARMv9-A'nın temeli, Armv8.5'in tüm özellikleridir. ARMv9-A ayrıca şunları da ekler:Ölçeklenebilir Vektör Uzantısı 2 (SVE2). SVE2, talimat başına daha fazla iş yapılmasına izin vermek için artırılmış ince taneli Veri Düzeyi Paralelliği (DLP) için SVE'nin ölçeklenebilir vektörleştirmesini temel alır. SVE2, bu faydaları DSP ve şu anda Neon kullanan multimedya SIMD kodu da dahil olmak üzere daha geniş bir yazılım yelpazesine getirmeyi amaçlamaktadır. LLVM / Clang 9.0 ve GCC 10.0 geliştirme kodları, SVE2'yi destekleyecek şekilde güncellendi.İşlemsel Bellek Uzantısı (TME). x86 uzantılarının ardından TME, Donanım İşlemsel Belleği (HTM) ve İşlem Kilidi Elision (TLE) için destek getiriyor. TME, iş parçacığı başına daha fazla iş yapılmasına izin vermek için kaba taneli Diş Düzeyi Paralelliğini (TLP) artırmak için ölçeklenebilir eşzamanlılık getirmeyi amaçlar. LLVM / Clang 9.0 ve GCC 10.0 geliştirme kodları, TME'yi destekleyecek şekilde güncellendi.Ölçeklenebilir Matris Uzantısı (SME). KOBİ, matrisleri verimli bir şekilde işlemek için aşağıdakiler gibi yeni özellikler ekler:Örneğin, ayrıntılı tuzaklar, Olayı Bekle (WFE) yönergeleri, EnhancedPAC2 ve FPAC. SVE ve Neon için Bfloat16 uzantıları, temel olarak derin öğrenme kullanımı içindir.Armv8-R profiline isteğe bağlı AArch64 desteği eklendi ve onu uygulayan ilk Arm çekirdeği Cortex-R82 oldu. Bellek bariyeri talimatlarında bazı değişikliklerle birlikte A64 komut setini ekler.