AArch64
AArch64![]() | 이 기사는 대부분의 독자들이 이해하기에는 너무 기술적일 수 있습니다.(2020년 6월) (이 및 |

AArch64 또는 ARM64는 ARM 아키텍처 제품군의 64비트 확장입니다. Armv8-A 아키텍처와 함께 처음 소개되었으며 많은 확장 업데이트가 있었습니다.[1]
ARM-A(응용프로그램 아키텍처)
2011년 10월에 발표된 [2]ARMv8-A는 ARM 아키텍처의 근본적인 변화를 나타냅니다. 옵션인 64비트 아키텍처를 추가하여 "AArch64" 및 관련된 새로운 "A64" 명령 세트. AArch64는 기존 32비트 아키텍처("AArch32" / ARMv7-A) 및 명령어 세트("A32")와 사용자 공간 호환성을 제공합니다. 16-32비트 Thumb 명령어 세트는 "T32"라고 불리며 64비트 대응물이 없습니다. ARMv8-A를 사용하면 32비트 애플리케이션을 64비트 OS에서 실행할 수 있고, 32비트 OS는 64비트 하이퍼바이저의 제어 하에 있을 수 있습니다.[3] ARM은 2012년 10월 30일 코텍스-A53 및 코텍스-A57 코어를 발표했습니다.[4] 애플은 소비자용 제품(iPhone 5S)에 ARMv8-A 호환 코어(Cyclone)를 최초로 출시했습니다. Applied Micro는 FPGA를 사용하여 ARMv8-A를 최초로 시연했습니다.[5] 삼성의 첫 번째 ARMv8-A SoC는 갤럭시 노트 4에 사용된 엑시노스 5433으로, 크게 4개의 Cortex-A57 및 Cortex-A53 코어로 구성된 두 개의 클러스터가 특징입니다.구성이 거의 없습니다. 그러나 AArch32 모드에서만 실행됩니다.[6]
ARMv8-A는 AArch32 및 AArch64 모두에 VFPv3/v4 및 고급 SIMD(Neon)를 표준으로 합니다. 또한 AES, SHA-1/SHA-256 및 유한장 산술을 지원하는 암호화 지침을 추가합니다.[7]
명명 규칙
- 64 + 32비트:
- 건축: AArch64.
- 규격 : ARMv8-A.
- 명령어 세트: A64 + A32.
- Suffixes: v8-A
- 32 + 16(썸) 비트:
- 아키텍처: AArch32.
- 사양 : ARMv8-R / ARMv7-A
- 지침 세트: A32 + T32.
- 접미사: -A32 / -R / v7-A.
- 예: ARMv8-R, Cortex-A32.[8]
AArch64 기능
- 새 명령 집합, A64:
- 31개의 범용 64비트 레지스터가 있습니다.
- (명령에 따라) 전용 0 또는 SP(Stack Pointer) 레지스터가 있습니다.
- 프로그램 카운터(PC)는 더 이상 레지스터로 직접 액세스할 수 없습니다.
- 명령어는 여전히 32비트 길이이며 대부분 A32와 동일합니다(LDM/STM 명령어 및 대부분의 조건부 실행 중단).
- (LDM/STM 대신) 쌍으로 구성된 로드/스토어가 있습니다.
- 대부분의 명령어(가지 제외)에 대한 예측이 없습니다.
- 대부분의 명령어는 32비트 또는 64비트 인수를 사용할 수 있습니다.
- 주소는 64비트로 가정합니다.
- 향상된 고급 SIMD(네온):
- 새로운 예외 시스템:
- 뱅크 처리된 레지스터와 모드가 적습니다.
- 기존 LPAE(Large Physical Address Extension)를 기반으로 48비트 가상 주소의 메모리 변환으로, 64비트까지 쉽게 확장할 수 있도록 설계되었습니다.
확장: 데이터 수집 힌트(ARMv8.0-DGH).
AArch64는 ARMv8-A에 도입되었으며 후속 버전인 ARMv8-A에 포함되어 있습니다. 또한 ARMv8-A에 도입된 후 옵션으로 ARMv8-R에 도입되었으며, ARMv8-M에는 포함되지 않습니다.
명령어 형식
A64 명령어가 속한 그룹을 선택하는 주요 오피코드는 비트 25-28입니다.
유형 | 조금 | |||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
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 | |
예약한 | 0 | op0 | 0 | 0 | 0 | 0 | op1 | |||||||||||||||||||||||||
SME | 1 | op0 | 0 | 0 | 0 | 0 | 다르다 | |||||||||||||||||||||||||
무배정 | 0 | 0 | 0 | 1 | ||||||||||||||||||||||||||||
SVE | 0 | 0 | 1 | 0 | 다르다 | |||||||||||||||||||||||||||
무배정 | 0 | 0 | 1 | 1 | ||||||||||||||||||||||||||||
데이터 처리—즉시 PC-rel. | op | 임마lo | 1 | 0 | 0 | 0 | 0 | 임마hi | Rd | |||||||||||||||||||||||
데이터 처리 - 즉시 기타 | sf | 1 | 0 | 0 | 01-11 | Rd | ||||||||||||||||||||||||||
지점 + 시스템 지침 | op0 | 1 | 0 | 1 | op1 | op2 | ||||||||||||||||||||||||||
지침 로드 및 저장 | op0 | 1 | op1 | 0 | op2 | op3 | op4 | |||||||||||||||||||||||||
Data Processing — Register | sf | op0 | op1 | 1 | 0 | 1 | op2 | op3 | ||||||||||||||||||||||||
Data Processing — 부동 소수점 및 SIMD | op0 | 1 | 1 | 1 | op1 | op2 | op3 |
ARMv8.1-A
2014년 12월에 "v8.0보다 증분 이점"이 있는 업데이트인 [9]ARMv8.1-A가 발표되었습니다. 향상된 기능은 명령어 세트의 변경, 예외 모델 및 메모리 변환의 변경 등 두 가지 범주로 나뉩니다.
명령어 세트의 향상된 기능은 다음과 같습니다.
- AArch64 원자 읽기-쓰기 지침 세트입니다.
- AArch32 및 AArch64에 대한 고급 SIMD 명령 세트에 일부 라이브러리 최적화를 위한 기회를 제공합니다.
- 서명된 포화 라운딩 배가 곱셈 누적, 높은 반을 반환합니다.
- 서명된 포화 반올림 두 배 곱하기 뺄셈, 높은 반을 반환합니다.
- 명령어는 벡터 및 스칼라 형태로 추가됩니다.
- 구성 가능한 주소 영역으로 제한된 메모리 액세스 순서를 제공할 수 있는 일련의 AArch64 명령어를 로드하고 저장합니다.
- v8.0의 옵션 CRC 지침은 ARMv8.1의 요구 사항이 됩니다.
예외 모델 및 메모리 번역 시스템의 향상된 기능은 다음과 같습니다.
- 새로운 PAN(Privileged Access Never) 상태 비트는 명시적으로 활성화하지 않는 한 사용자 데이터에 대한 특권 액세스를 방지하는 제어 기능을 제공합니다.
- 가상화를 위한 VMID 범위 증가, 더 많은 수의 가상 시스템을 지원합니다.
- 페이지 테이블 액세스 플래그의 하드웨어 업데이트 및 하드웨어 업데이트, 더티 비트 메커니즘의 표준화(옵션)를 지원합니다.
- 가상화 호스트 확장(VHE). 이러한 향상된 기능은 호스트 운영 체제와 게스트 운영 체제 간에 전환할 때 관련된 소프트웨어 오버헤드를 줄여 Type 2 하이퍼바이저의 성능을 향상시킵니다. 확장 기능을 통해 호스트 OS는 EL1과는 달리 EL2에서 실질적인 수정 없이 실행할 수 있습니다.
- OS에서 하드웨어 지원이 필요하지 않은 운영 체제 사용을 위해 일부 번역 테이블 비트를 확보하는 메커니즘입니다.
- 메모리 태깅에 대한 최상위 바이트 무시.[10]
ARMv8.2-A
2016년 1월, ARMv8.2-A가 발표되었습니다.[11] 향상된 기능은 다음과 같은 네 가지 범주로 나뉩니다.
- 옵션인 반정밀 부동 소수점 데이터 처리(반정밀은 이미 지원되었지만, 스토리지 형식과 마찬가지로 처리용은 지원되지 않았습니다.)
- 메모리 모델 향상.
- 신뢰성, 가용성 및 서비스성 확장(RAS Extension) 소개.
- 통계 프로파일링의 도입.
확장 가능한 벡터 확장(SVE)
SVE(Scalable Vector Extension)는 고성능 컴퓨팅 과학 워크로드의 벡터화를 위해 특별히 개발된 "ARMv8.2-A 아키텍처 이상의 옵션 확장"입니다.[12][13] 이 사양을 사용하면 가변 벡터 길이를 128비트에서 2048비트까지 구현할 수 있습니다. 확장은 NEON 확장과 보완적이며 대체되지 않습니다.
후지쯔 A64FX ARM 프로세서를 사용하여 512비트 SVE 변형이 이미 후가쿠 슈퍼컴퓨터에 구현되었습니다. 이 컴퓨터는[14] 2020년[15] 6월부터 2022년 5월까지 2년 동안 세계에서 가장 빠른 슈퍼컴퓨터였습니다.[16] AWS Graviton3 ARM 프로세서는 보다 유연한 버전인 2x256 SVE를 구현했습니다.
SVE는 GCC 컴파일러에 의해 지원되며, GCC 8은 자동 벡터화를[13] 지원하고 GCC 10은 C 고유성을 지원합니다. 2020년[update] 7월 기준, LLVM과 clang은 C와 IR 고유성을 지원합니다. ARM만의 포크인 LLVM은 자동 벡터화를 지원합니다.[17]
ARMv8.3-A
2016년 10월, ARMv8.3-A가 발표되었습니다. 향상된 기능은 다음과 같은 6가지 범주로 분류되었습니다.[18]
- 포인터 인증[19](AArch64만 해당), 아키텍처에 대한 필수 확장(새로운 블록 암호, QARMA[20] 기반)(컴파일러는 보안 기능을 활용해야 하지만 NOP 공간에 있기 때문에 오래된 칩에 추가 보안을 제공하지는 않지만 하위 호환성이 있습니다.
- 중첩된 가상화(AArch64만 해당).
- 고급 SIMD 복소수 지원(AArch64 및 AArch32); 예를 들어 90도의 배수에 의한 회전.
- 새로운 FJCVTZS(Floating-point JavaScript를 서명된 고정점으로 변환, 0을 향한 반올림) 명령어.[21]
- 메모리 일관성 모델 변경(AArch64만 해당); C++11/C11의 (기본값이 아닌) 약한 RCpc(Release Constant 프로세서 일관성) 모델을 지원하기 위한 것(기본값 C++11/C11 일관성 모델은 이전 ARMv8에서 이미 지원됨).
- 더 큰 시스템 가시 캐시(AArch64 및 AArch32)에 대한 ID 메커니즘 지원.
ARMv8.3-A 아키텍처는 이제 (적어도) GCC 7 컴파일러에 의해 지원됩니다.[22]
ARMv8.4-A
2017년 11월, ARMv8.4-A가 발표되었습니다. 향상된 기능은 다음 범주에 속했습니다.[23][24][25]
- "SHA3 / SHA512 / SM3 / SM4 암호화 확장"
- 향상된 가상화 지원.
- MPAM(Memory Partitioning and Monitoring) 기능.
- 새로운 Secure EL2 상태 및 활동 모니터.
- 서명 및 서명되지 않은 정수 도트 제품(SDOT 및 UDOT) 지침입니다.
ARMv8.5-A and ARMv9.0-A
2018년 9월, ARMv8.5-A가 발표되었습니다. 향상된 기능은 다음 범주에 속했습니다.[26][27][28]
- MTE(Memory Tagging Extension)(AArch64).[29]
- BTI(Branch Target Indicators)(AArch64)를 사용하여 "공격자의 임의 코드 실행 능력"을 줄입니다. 포인터 인증과 마찬가지로 이전 버전의 ARMv8-A에서는 관련 지침이 작동하지 않습니다.
- 난수 생성기 지침 – "다양한 국가 및 국제 표준을 준수하는 결정론적이고 진정한 난수 제공"
2019년 8월 2일, 구글은 안드로이드가 메모리 태깅 확장(MTE)을 채택할 것이라고 발표했습니다.[30]
2021년 3월, ARMv9-A가 발표되었습니다. ARMv9-A의 기준선은 ARMv8.5의 모든 기능입니다.[31][32][33] 또한 ARMv9-A는 다음을 추가합니다.
- 스케일러블 벡터 확장 2(SVE2). SVE2는 SVE의 확장 가능한 벡터화를 기반으로 세분화된 DLP(Data Level Parallelism)를 향상시켜 명령에 따라 더 많은 작업을 수행할 수 있도록 지원합니다. SVE2는 현재 Neon을 사용하는 DSP 및 멀티미디어 SIMD 코드를 포함한 더 넓은 범위의 소프트웨어에 이러한 이점을 제공하는 것을 목표로 합니다.[34] LLVM/Clang 9.0 및 GCC 10.0 개발 코드는 SVE2를 지원하도록 업데이트되었습니다.[34][35]
- 트랜잭션 메모리 확장(TME). x86 확장에 이어 TME는 하드웨어 트랜잭션 메모리(HTM)와 트랜잭션 잠금(TLE)을 지원합니다. TME는 확장 가능한 동시성을 가져와 거친 스레드 수준 병렬(TLP)을 증가시켜 스레드당 더 많은 작업을 수행할 수 있도록 하는 것을 목표로 합니다.[34] LLVM/Clang 9.0 및 GCC 10.0 개발 코드는 TME를 지원하도록 업데이트되었습니다.[35]
- 기밀 컴퓨팅 아키텍처(CCA).[36][37]
ARMv8.6-A and ARMv9.1-A
2019년 9월, ARMv8.6-A가 발표되었습니다. 향상된 기능은 다음 범주에 속했습니다.[26][38]
- GEMM(General Matrix Multiple).
- Bfloat16 형식을 지원합니다.
- SIMD 매트릭스 조작 지시, BFDOT, BFMMLA, BFMLA 및 BFCVT.
- 가상화, 시스템 관리 및 보안 향상
- 그리고 다음 확장 기능(LLVM 11이 이미[39] 지원을 추가함):
- 향상된 카운터 가상화(ARMv8.6-ECV).
- 미립자 트랩(ARMv8.6-FGT).
- 활동 모니터링 가상화(ARMv8.6-AMU).
예를 들어 세분화된 트랩, WFE(Wait-for-Event) 지침, EnhancedPAC2와 FPAC. SVE 및 Neon용 bfloat16 확장은 주로 딥러닝용입니다.[40]
ARMv8.7-A and ARMv9.2-A
2020년 9월, ARMv8.7-A가 발표되었습니다. 향상된 기능은 다음 범주에 속했습니다.[26][41]
- SME(Scalable Matrix Extension)(ARMv9.2만 해당).[42] SME는 행렬을 효율적으로 처리하기 위해 다음과 같은 새로운 기능을 추가합니다.
- 매트릭스 타일 저장소.
- 즉석 매트릭스 전치.
- 타일 벡터 로드/저장/삽입/추출
- SVE 벡터의 매트릭스 외부 생성물.
- "스트리밍 모드" SVE.
- PCIe 핫 플러그(AArch64)에 대한 지원이 강화되었습니다.
- 원자 64바이트 로드 및 가속기(AArch64)에 저장됩니다.
- WFI(Wait For Instruction) 및 WFE(Wait For Event) 시간 초과(AArch64).
- Branch-Record Recording(ARMv9.2만 해당).
ARMv8.8-A and ARMv9.3-A
2021년 9월, ARMv8.8-A 및 ARMv9.3-A가 발표되었습니다. 향상된 기능은 다음과 같습니다.[26][43]
- 마스크 불가능 인터럽트(AArch64).
- memcpy() 및 memset() 스타일 작업을 최적화하는 지침(AArch64).
- PAC(AArch64)에 대한 향상된 기능.
- 암시된 조건부 분기(AArch64).
LLVM 15 supports ARMv8.8-A and ARMv9.3-A.[44]
ARMv8.9-A and ARMv9.4-A
2022년 9월 ARMv8.9-A 및 ARMv9.4-A가 발표되었습니다.[45]
- VMSA(Virtual Memory System Architecture) 기능이 향상되었습니다.
- 방향 및 오버레이에 대한 권한입니다.
- 번역 경화.
- 128비트 변환 테이블(ARMv9만 해당).
- 확장 가능한 Matrix Extension 2(SME2)(ARMv9만 해당).
- 다중 벡터 지침입니다.
- 다중 벡터 술어.
- 2b/4b 무게 압축.
- 1b 바이너리 네트워크.
- 범위 프리페치.
- 보안 제어 스택(GCS)(ARMv9만 해당).
- 기밀 컴퓨팅.
- 메모리 암호화 컨텍스트.
- 장치 할당.
ARM-R(실시간 아키텍처)
옵션인 AArch64 지원은 Armv8-R 프로파일에 추가되었으며, 첫 번째 Arm 코어는 Cortex-R82입니다.[46] A64 명령어 세트를 추가하고 메모리 장벽 명령어를 일부 변경합니다.[47]
참고문헌
- ^ "Overview". Learn the architecture: Understanding the Armv8.x and Armv9.x extensions.
- ^ "ARM Discloses Technical Details Of The Next Version Of The ARM Architecture" (Press release). Arm Holdings. 27 October 2011. Archived from the original on 1 January 2019. Retrieved 20 September 2013.
- ^ Grisenthwaite, Richard (2011). "ARMv8-A Technology Preview" (PDF). Archived from the original (PDF) on 11 November 2011. Retrieved 31 October 2011.
- ^ "ARM Launches Cortex-A50 Series, the World's Most Energy-Efficient 64-bit Processors" (Press release). Arm Holdings. Retrieved 31 October 2012.
- ^ "AppliedMicro Showcases World's First 64-bit ARM v8 Core" (Press release). AppliedMicro. 28 October 2011. Retrieved 11 February 2014.
- ^ "Samsung's Exynos 5433 is an A57/A53 ARM SoC". AnandTech. Retrieved 17 September 2014.
- ^ "ARM Cortex-A53 MPCore Processor Technical Reference Manual: Cryptography Extension". ARM. Retrieved 11 September 2016.
- ^ "Cortex-A32 Processor – ARM". Retrieved 18 December 2016.
- ^ Brash, David (2 December 2014). "The ARMv8-A architecture and its ongoing development". Retrieved 23 January 2015.
- ^ "Top-byte ignore (TBI)". WikiChip.
- ^ Brash, David (5 January 2016). "ARMv8-A architecture evolution". Retrieved 7 June 2016.
- ^ "The scalable vector extension sve for the ARMv8 a architecture". Arm Community. 22 August 2016. Retrieved 8 July 2018.
- ^ a b "GCC 8 Release Series – Changes, New Features, and Fixes – GNU Project – Free Software Foundation (FSF)". gcc.gnu.org. Retrieved 9 July 2018.
- ^ "Fujitsu Completes Post-K Supercomputer CPU Prototype, Begins Functionality Trials – Fujitsu Global". www.fujitsu.com (Press release). Retrieved 8 July 2018.
- ^ "Japan's Fugaku gains title as world's fastest supercomputer" (Press release). www.riken.jp. 23 June 2020. Retrieved 7 December 2020.
- ^ "ORNL's Frontier First to Break the Exaflop Ceiling". Top500. 30 May 2022. Retrieved 30 May 2022.
- ^ "⚙ D71712 Downstream SVE/SVE2 implementation (LLVM)". reviews.llvm.org.
- ^ David Brash (26 October 2016). "ARMv8-A architecture – 2016 additions".
- ^ ."[Ping~,AArch64] Add commandline support for -march=armv8.3-a".
pointer authentication extension is defined to be mandatory extension on ARMv8.3-A and is not optional
- ^ "Qualcomm releases whitepaper detailing pointer authentication on ARMv8.3". 10 January 2017.
- ^ "A64 Floating-point Instructions: FJCVTZS". arm.com. Retrieved 11 July 2019.
- ^ "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.
- ^ "Introducing 2017's extensions to the Arm Architecture". community.arm.com. 2 November 2017. Retrieved 15 June 2019.
- ^ "Exploring dot product machine learning". community.arm.com. 6 December 2017. Retrieved 15 June 2019.
- ^ "ARM Preps ARMv8.4-A Support For GCC Compiler – Phoronix". www.phoronix.com. Retrieved 14 January 2018.
- ^ a b c d "ARMv8.x and ARMv9.x extensions and features". Learn the architecture: Understanding the ARMv8.x and ARMv9.x extensions.
- ^ "Arm Architecture ARMv8.5-A Announcement – Processors blog – Processors – Arm Community". community.arm.com. Retrieved 26 April 2019.
- ^ "Arm Architecture Reference Manual ARMv8, for ARMv8-A architecture profile". ARM Developer. Retrieved 6 August 2019.
- ^ "Arm MTE architecture: Enhancing memory safety". community.arm.com. 5 August 2019. Retrieved 27 July 2021.
- ^ "Adopting the Arm Memory Tagging Extension in Android". Google Online Security Blog. Retrieved 6 August 2019.
- ^ "Arm's solution to the future needs of AI, security and specialized computing is v9". Arm The Architecture for the Digital World. Retrieved 27 July 2021.
- ^ Schor, David (30 March 2021). "Arm Launches ARMv9". WikiChip Fuse. Retrieved 27 July 2021.
- ^ Frumusanu, Andrei. "Arm Announces ARMv9 Architecture: SVE2, Security, and the Next Decade". www.anandtech.com. Retrieved 27 July 2021.
- ^ a b c "Arm releases SVE2 and TME for A-profile architecture – Processors blog – Processors – Arm Community". community.arm.com. 18 April 2019. Retrieved 25 May 2019.
- ^ a b "Arm SVE2 Support Aligning For GCC 10, LLVM Clang 9.0 – Phoronix". www.phoronix.com. Retrieved 26 May 2019.
- ^ "Unlocking the power of data with Arm CCA". community.arm.com. 23 June 2021. Retrieved 27 July 2021.
- ^ "Arm Introduces Its Confidential Compute Architecture". WikiChip Fuse. 23 June 2021. Retrieved 27 July 2021.
- ^ "Arm A profile architecture update 2019". community.arm.com. 25 September 2019. Retrieved 26 September 2019.
- ^ "LLVM 11.0.0 Release Notes". releases.llvm.org. Retrieved 11 March 2021.
- ^ "BFloat16 extensions for ARMv8-A". community.arm.com. 29 August 2019. Retrieved 30 August 2019.
- ^ Weidmann, Martin (21 September 2020). "Arm A-Profile Architecture Developments 2020". community.arm.com. ARM. Retrieved 28 September 2022.
- ^ "Scalable Matrix Extension for the ARMv9-A Architecture". community.arm.com. 14 July 2021. Retrieved 27 July 2021.
- ^ Weidmann, Martin (8 September 2021). "Arm A-Profile Architecture Developments 2021". community.arm.com. ARM. Retrieved 28 September 2022.
- ^ "What is New in LLVM 15? - Architectures and Processors blog - Arm Community blogs - Arm Community". 27 February 2023. Retrieved 15 April 2023.
- ^ "Arm A-Profile Architecture Developments 2022 - Architectures and Processors blog - Arm Community blogs - Arm Community". community.arm.com. 29 September 2022. Retrieved 9 December 2022.
- ^ Frumusanu, Andrei (3 September 2020). "ARM Announced Cortex-R82: First 64-bit Real Time Processor". AnandTech.
- ^ "Arm Architecture Reference Manual Supplement - Armv8, for Armv8-R AArch64 architecture profile". Arm Ltd.