aarch64 ne demek?
AArch64 veya ARM64, 64-bit uzantısıdır. İlk olarak
mimarisi ile tanıtıldı. Arm her yıl
yeni bir uzantı yayınlar.
Armv8.x ve Armv9.x uzantıları ve özellikleri
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
kontrolü altında olmasına izin
verir. ARM, Cortex-A53 ve Cortex-A57 çekirdeklerini 30 Ekim 2012'de
duyurdu. , bir tüketici ürününde () Armv8-A uyumlu bir çekirdek
() yayınlayan ilk şirket oldu.
AppliedMicro, bir
kullanarak, Armv8-A'nın demosunu yapan ilk kurumdur.
ilk Armv8-A
, 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 ,
/ ve sonlu alan
aritmetiğini destekleyen kriptografi talimatları da ekler.
Adlandırma kuralları
- 64 + 32 bit
- Mimari: AArch64
- Özellikler: Armv8-A
- Komut setleri: A64 + A32
- Son ekler: v8-A
- 32 + 16 (Başparmak) bit
- Mimari: AArch32
- Özellikler: Armv8-R / Armv7-A
- Komut setleri: A32 + T32
- Son ekler: -A32 / -R / v7-A
- Örnek: Armv8-R, Cortex-A32
AArch64 özellikleri
- Yeni komut seti, A64
- 31 genel amaçlı 64-bit register vardır.
- Özel sıfır veya yığın işaretçisi (SP) kaydına sahiptir
(talimatlara bağlı olarak).
- Program sayacına (PC) artık bir kayıt olarak doğrudan
erişilebilir değildir.
- 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ü).
- Eşleştirilmiş yükler/depolar var (LDM/STM yerine).
- Çoğu talimat için tahmin yok (dallar hariç).
- Çoğu talimat, 32-bit veya 64-bit argümanlar alabilir.
- Adreslerin 64 bit olduğu varsayılmıştır.
- Gelişmiş SIMD (Neon) geliştirildi
- 32 × 128 bit kayıtlara sahiptir (16'dan yukarı), VFPv4
aracılığıyla da erişilebilir.
- Çift duyarlıklı kayan nokta biçimini destekler.
- Tamamen uyumlu.
- AES şifreleme/şifre çözme ve SHA-1/SHA-2 karma yönergeleri de bu
kayıtları kullanır.
- Yeni bir istisna sistemi
- Daha az bankalı kayıt ve mod.
- 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.
Uzantı: Veri toplama ipucu (Armv8.0-DGH)
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.
Talimat biçimleri
Bir A64 komutunun hangi gruba ait olduğunu seçmek için ana işlem kodu
25-28 bitlerindedir.
Tip | Biraz |
---|
31 | 30 |
Rezerve | op0 |
ayrılmamış | |
SVE Talimatları | |
ayrılmamış | |
Veri İşleme — Anında PC-rel. | operasyon |
Veri İşleme — Anında Diğerleri | sf |
Şubeler + Sistem Talimatları | op0 |
Yükleme ve Depolama Talimatları | op0 |
Veri İşleme — Kayıt Ol | sf |
Veri İşleme — Kayan Nokta ve SIMD | op0 |
A64 talimat formatları
Armv8.1-A
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.
Komut seti geliştirmeleri aşağıdakileri içeriyordu:
- Bir dizi AArch64 atomik okuma-yazma talimatı.
- 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:
- İmzalı Doyurucu Yuvarlama Katlama Çarpma Birikim, Yüksek Yarıyı
Döndürme.
- İmzalı Doyurucu Yuvarlama Katlama Çarpma Çıkarma, Yüksek Yarıyı
Döndürme.
- Talimatlar vektör ve skaler formlarda eklenir.
- 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ı.
- v8.0'daki isteğe bağlı CRC talimatları, Armv8.1'de bir gereklilik
haline gelir.
İstisna modeli ve bellek çeviri sistemi için geliştirmeler şunları
içeriyordu:
- 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.
- Sanallaştırma için artırılmış VMID aralığı; daha fazla sayıda sanal
makineyi destekler.
- 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.
- Bellek etiketleme için üst bayt yoksay .
Armv8.2-A
Ocak 2016'da Armv8.2-A duyuruldu. Geliştirmeleri dört kategoriye
ayrıldı:
- İ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. )
- Bellek modeli geliştirmeleri
- Güvenilirlik, Kullanılabilirlik ve Hizmet Verilebilirlik Uzantısının
(RAS Uzantısı) Tanıtımı
- İstatistiksel profil oluşturmaya giriş
Ölçeklenebilir Vektör Uzantısı (SVE)
Ölçeklenebilir Vektör Uzantısı (SVE), 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ı, uzantılarının
tamamlayıcısıdır ve yerini almaz.
Fujitsu A64FX ARM işlemci kullanılarak 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
derleyicisi tarafından
desteklenir. Temmuz 2020 itibariyle, LLVM ve clang, C ve IR özlerini
destekler. ARM'nin kendi LLVM çatalı otomatik vektörleştirmeyi
destekler.
Armv8.3-A
Ekim 2016'da Armv8.3-A duyuruldu. Geliştirmeleri altı kategoriye
ayrıldı:
- İş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).
- İç içe sanallaştırma (yalnızca AArch64)
- Gelişmiş SIMD desteği
(AArch64 ve AArch32); örneğin 90 derecenin katları ile döndürmeler.
- Yeni FJCVTZS (Kayan Noktalı
İ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)
Armv8.3-A mimarisi artık (en azından)
7 derleyicisi tarafından
desteklenmektedir.
Armv8.4-A
Kasım 2017'de Armv8.4-A duyuruldu. Geliştirmeleri şu kategorilere
giriyor:
- "SHA3 / SHA512 / SM3 / SM4 kripto uzantıları"
- Geliştirilmiş sanallaştırma desteği
- Bellek Bölümleme ve İzleme (MPAM) yetenekleri
- Yeni bir Güvenli EL2 durumu ve Etkinlik İzleyicileri
- İşaretli ve işaretsiz tam sayı nokta çarpımı (SDOT ve UDOT)
talimatları.
Armv8.5-A ve Armv9.0-A
Eylül 2018'de Armv8.5-A duyuruldu. Geliştirmeleri şu kategorilere
giriyor:
- Bellek Etiketleme Uzantısı (MTE)
- "Bir saldırganın keyfi kod yürütme yeteneğini" azaltmak için Şube
Hedef Göstergeleri (BTI),
- Rastgele Sayı Üretici talimatları - "çeşitli Ulusal ve Uluslararası
Standartlara uygun Deterministik ve Gerçek Rastgele Sayılar
sağlamak"
2 Ağustos 2019'da ,
Bellek Etiketleme Uzantısını (MTE)
benimseyeceğini duyurdu.
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 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 10.0
geliştirme kodları, TME'yi destekleyecek şekilde güncellendi.
- Gizli Bilgi İşlem Mimarisi (CCA)
- Ölçeklenebilir Matris Uzantısı (SME). KOBİ, matrisleri verimli
bir şekilde işlemek için aşağıdakiler gibi yeni özellikler ekler:
- Matris döşemesi depolama
- Anında matris aktarımı
- Döşeme vektörlerini yükleme/depolama/ekleme/çıkarma
- SVE vektörlerinin matris dış çarpımı
- "Akış modu" SVE
Armv8.6-A ve Armv9.1-A
Eylül 2019'da Armv8.6-A duyuruldu. Şunları ekler:
- Genel Matris Çarpımı (GEMM)
- Bfloat16 formatı desteği
- SIMD matris işleme talimatları, BFDOT, BFMMLA, BFMLAL ve BFCVT
- sanallaştırma, sistem yönetimi ve güvenlik için geliştirmeler
- ve aşağıdaki uzantılar (bu LLVM 11, için zaten destek
eklemiştir):
- Gelişmiş Sayaç Sanallaştırması (Armv8.6-ECV)
- İnce Taneli Tuzaklar (Armv8.6-FGT)
- Activity Monitor sanallaştırması (Armv8.6-AMU)
Ö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.7-A ve Armv9.2-A
- PCIe çalışırken takılabilir (AArch64) için gelişmiş destek
- Atomik 64 bayt yükleme ve hızlandırıcılara depolama (AArch64)
- Talimatı Bekle (WFI) ve Zaman aşımı (AArch64) ile Olayı Bekle (WFE)
- Dal Kaydı kaydı (yalnızca Armv9.2)
Armv8.8-A ve Armv9.3-A
- Maskelenemeyen kesmeler (AArch64)
- memcpy() ve memset() stili işlemleri optimize etme talimatları
(AArch64)
- PAC'deki Geliştirmeler (AArch64)
- İpuçlu koşullu dallar (AArch64)
Armv8-R (gerçek zamanlı mimari)
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.
Kaynakça
Orijinal kaynak: aarch64. Creative Commons Atıf-BenzerPaylaşım Lisansı ile paylaşılmıştır.
Kategoriler