AArch64

ARM AArch64 (64비트)
발표2011년(15년 전)(2011)
버전ARMv8-A, ARMv8-R, ARMv9-A
인코딩AArch64/A64 및 AArch32/A32는 32비트 명령어를 사용하며, AArch32/T32 (Thumb-2)는 16비트와 32비트 혼합 명령어를 사용함
엔디언데이터에 대해서만 바이엔디언 (기본값은 리틀 엔디언, 명령어는 리틀 엔디언)
확장
  • SVE, SVE2, SME, AES, SM3, SM4, SHA, CRC32, RNDR, TME
  • 필수: Thumb-2, Neon, VFPv4-D16, VFPv4
  • 단종: Jazelle
레지스터
범용 목적31 × 64비트 정수 레지스터
부동소수점32 × 128비트 레지스터 (스칼라 32 및 64비트 부동소수점 또는 SIMD 부동소수점 또는 정수용, 또는 암호화용)

AArch64 또는 ARM64는 널리 사용되는 컴퓨터 프로세서 설계 세트인 ARM 아키텍처의 64비트 버전이다. 2011년 ARMv8 아키텍처와 함께 도입되었으며 나중에 ARMv9 시리즈의 일부가 되었다. AArch64를 사용하면 프로세서가 이전의 32비트 버전보다 더 많은 메모리를 처리하고 더 빠른 계산을 수행할 수 있다. 이는 AArch32로 알려진 이전 32비트 모드와 함께 작동하도록 설계되어 광범위한 소프트웨어와의 호환성을 허용한다. AArch64를 사용하는 장치에는 스마트폰, 태블릿, 개인용 컴퓨터 및 서버가 포함된다. AArch64 아키텍처는 성능, 보안 및 고급 컴퓨팅 작업에 대한 지원을 개선하는 업데이트를 통해 계속 진화하고 있다.

AArch64 실행 상태

ARMv8-A, ARMv8-R 및 ARMv9-A에서 "실행 상태"(Execution state)는 프로세서 환경의 주요 특성을 정의한다. 여기에는 기본 프로세서 레지스터에 사용되는 비트 수, 지원되는 명령어 집합 및 프로세서 실행 환경의 기타 측면이 포함된다. 이러한 버전의 ARM 아키텍처는 64비트 AArch64 상태와 32비트 AArch32 상태의 두 가지 실행 상태를 지원한다.

명명 규칙

AArch64 기능

확장: 데이터 수집 힌트 (ARMv8.0-DGH).

AArch64는 ARMv8-A에서 도입되었으며 이후 버전의 ARMv8-A 및 모든 버전의 ARMv9-A에 포함되어 있다. 또한 ARMv8-A 도입 이후 ARMv8-R에서도 옵션으로 도입되었으나, ARMv8-M에는 포함되지 않는다.

A64 명령어 형식

A64 명령어가 속한 그룹을 선택하기 위한 주요 연산 코드(opcode)는 25~28비트에 위치한다.

A64 명령어 형식
유형 비트
313029282726252423222120191817161514131211109876543210
예약됨 0 op0 0000 op1
SME 1 op0 0000 가변적
미할당 0001
SVE 0010 가변적
미할당 0011
데이터 처리 — 즉시 PC-상대 opimmlo10000immhiRd
데이터 처리 — 즉시 기타 sf10001–11Rd
분기 + 시스템 명령어 op0101op1op2
로드 및 스토어 명령어 op01op10op2op3op4
데이터 처리 — 레지스터 sfop0op1101op2op3
데이터 처리 — 부동소수점 및 SIMD op0111op1op2op3

ARM-A (애플리케이션 아키텍처)

Cortex-A57/A53 MPCore Big.LITTLE CPU 칩을 장착한 Armv8-A 플랫폼

2011년 10월에 발표된 ARMv8-A는 ARM 아키텍처의 근본적인 변화를 나타낸다. 이는 "AArch64"라고 불리는 선택적 64비트 실행 상태와 관련 새로운 "A64" 명령어 집합을 추가하며, 기존의 32비트 "A32"(오리지널 32비트 ARM) 및 "T32"(Thumb/Thumb-2) 명령어 집합을 지원하는 32비트 실행 상태인 "AArch32"도 함께 지원한다. 후자의 명령어 집합은 기존의 32비트 ARMv7-A 아키텍처와 사용자 공간 호환성을 제공한다. ARMv8-A를 사용하면 64비트 OS에서 32비트 애플리케이션을 실행할 수 있으며, 32비트 OS를 64비트 하이퍼바이저의 제어 하에 둘 수 있다. ARM은 2012년 10월 30일에 Cortex-A53 및 Cortex-A57 코어를 발표했다. 애플은 소비자 제품(iPhone 5S)에 ARMv8-A 호환 코어(Cyclone)를 최초로 출시했다. AppliedMicro는 FPGA를 사용하여 ARMv8-A를 최초로 시연했다. 삼성전자의 첫 번째 ARMv8-A SoC는 갤럭시 노트4에 사용된 엑시노스 5433으로, Big.LITTLE 구성의 Cortex-A57 및 Cortex-A53 코어 4개씩 두 개의 클러스터를 특징으로 하지만 AArch32 모드에서만 실행된다. ARMv8-A는 AArch32와 AArch64 모두에서 VFPv3/v4 및 고급 SIMD(Neon)를 표준 기능으로 포함한다. 또한 AES, SHA-1/SHA-256 및 유한체 산술을 지원하는 암호화 명령어를 추가한다.

ARMv8-A 프로세서는 AArch32와 AArch64 중 하나 또는 둘 다를 지원할 수 있다. 낮은 예외 레벨에서는 AArch32와 AArch64를 지원하고 높은 예외 레벨에서는 AArch64만 지원할 수도 있다. 예를 들어, ARM Cortex-A32는 AArch32만 지원하고, ARM Cortex-A34는 AArch64만 지원하며, ARM Cortex-A72는 AArch64와 AArch32를 모두 지원한다. ARMv9-A 프로세서는 모든 예외 레벨에서 AArch64를 지원해야 하며, EL0에서 AArch32를 지원할 수 있다.

ARMv8.1-A

2014년 12월, "v8.0에 비해 점진적인 이점"을 가진 업데이트인 ARMv8.1-A가 발표되었다. 향상된 기능은 명령어 집합의 변경과 예외 모델 및 메모리 변환의 변경이라는 두 가지 범주로 나뉜다.

명령어 집합의 향상된 기능은 다음과 같다.

예외 모델 및 메모리 변환 시스템의 향상된 기능은 다음과 같다.

ARMv8.2-A

ARMv8.2-A는 2016년 1월에 발표되었다. 향상된 기능은 네 가지 범주로 나뉜다.

확장형 벡터 확장 (SVE)

확장형 벡터 확장(Scalable Vector Extension, SVE)은 고능성 컴퓨팅 과학 워크로드의 벡터화를 위해 특별히 개발된 "ARMv8.2-A 아키텍처 이상에 대한 선택적 확장"으로 라이선스가 부여된다. 사양에 따라 ARM 라이선스 사용자는 128비트 배수로 128에서 2048비트 사이의 하드코딩된 아키텍처 레지스터 너비를 선택할 수 있다. 이 확장은 NEON 확장을 보완하며 이를 대체하지 않는다.

512비트 SVE 변체는 후지쯔 A64FX ARM 프로세서를 사용하는 후가쿠 슈퍼컴퓨터에서 이미 구현되었다. 이 컴퓨터는 2020년 6월부터 2022년 5월까지 2년 동안 세계에서 가장 빠른 슈퍼컴퓨터였다. 더 유연한 버전인 2x256 SVE는 AWS Graviton3 ARM 프로세서에 의해 구현되었다.

SVE는 GCC에서 지원되며, GCC 8은 자동 벡터화를 지원하고 GCC 10은 C 인트린직(intrinsics)을 지원한다. 2020년 7월 현재 LLVM과 클랭은 C 및 IR 인트린직을 지원한다. ARM 자체 LLVM 포크는 자동 벡터화를 지원한다.

ARMv8.3-A

2016년 10월, ARMv8.3-A가 발표되었다. 향상된 기능은 여섯 가지 범주로 나뉜다.

ARMv8.3-A 아키텍처는 이제 최소 GCC 7.0에서 지원된다.

ARMv8.4-A

2017년 11월, ARMv8.4-A가 발표되었다. 향상된 기능은 다음 범주로 나뉜다.

ARMv8.5-A 및 ARMv9.0-A

2018년 9월, ARMv8.5-A가 발표되었다. 향상된 기능은 다음 범주로 나뉜다.

2019년 8월 2일, 구글은 안드로이드가 메모리 태깅 확장(MTE)을 채택할 것이라고 발표했다.

2021년 3월, ARMv9-A가 발표되었다. ARMv9-A의 기준선은 ARMv8.5의 모든 기능이다. ARMv9-A는 또한 다음을 추가한다.

ARMv8.6-A 및 ARMv9.1-A

2019년 9월, ARMv8.6-A가 발표되었다. 향상된 기능은 다음 범주로 나뉜다.

예를 들어, 미세 트랩, WFE(Wait-for-Event) 명령어, EnhancedPAC2 및 FPAC가 있다. SVE 및 Neon을 위한 bfloat16 확장은 주로 딥 러닝 용도이다.

ARMv8.7-A 및 ARMv9.2-A

2020년 9월, ARMv8.7-A가 발표되었다. 향상된 기능은 다음 범주로 나뉜다.

ARMv8.8-A 및 ARMv9.3-A

2021년 9월, ARMv8.8-A 및 ARMv9.3-A가 발표되었다. 향상된 기능은 다음 범주로 나뉜다.

LLVM 15는 ARMv8.8-A 및 ARMv9.3-A를 지원한다.

ARMv8.9-A 및 ARMv9.4-A

2022년 9월, ARMv8.9-A 및 ARMv9.4-A가 발표되었으며 다음을 포함한다.

ARMv9.5-A

2023년 10월, ARMv9.5-A가 발표되었으며 다음을 포함한다.

ARMv9.6-A

2024년 10월, ARMv9.6-A가 발표되었으며 다음을 포함한다.

ARMv9.7-A

2025년 10월, ARMv9.7-A가 발표되었으며 다음을 포함한다.

ARM-R (실시간 아키텍처)

ARM-R 아키텍처, 특히 Armv8-R 프로파일은 예측 가능하고 결정론적인 동작이 필수적인 실시간 애플리케이션의 요구 사항을 해결하도록 설계되었다. 이 프로파일은 실시간 제약이 중요한 임베디드 시스템에서 고성능, 신뢰성 및 효율성을 제공하는 데 중점을 둔다.

Armv8-R 프로파일에 선택적인 AArch64 지원이 도입되면서 실시간 기능이 더욱 향상되었다. Cortex-R82는 이 확장된 지원을 구현한 최초의 프로세서로, 실시간 영역에 여러 가지 새로운 기능과 개선 사항을 가져왔다.

각주

  1. 1 2 3 4 Grisenthwaite, Richard (2011). “ARMv8-A Technology Preview” (PDF). 2011년 11월 11일에 원본 문서 (PDF)에서 보존된 문서. 2011년 10월 31일에 확인함.
  2. ↑ “Overview”. 《Learn the architecture: Understanding the Armv8.x and Armv9.x extensions》.
  3. ↑ “ARM Cortex-A57 MPCore Processor Technical Reference Manual”. Arm Ltd.
  4. ↑ “Cortex-A32 Processor – ARM”. 2016년 12월 18일에 확인함.
  5. ↑ “ARM Discloses Technical Details Of The Next Version Of The ARM Architecture” (보도자료). ARM 홀딩스. 2011년 10월 27일. 2019년 1월 1일에 원본 문서에서 보존된 문서. 2013년 9월 20일에 확인함.
  6. ↑ “ARM Launches Cortex-A50 Series, the World's Most Energy-Efficient 64-bit Processors” (보도자료). ARM 홀딩스. 2012년 10월 31일에 확인함.
  7. ↑ “AppliedMicro Showcases World's First 64-bit ARM v8 Core” (보도자료). AppliedMicro. 2011년 10월 28일. 2014년 2월 11일에 확인함.
  8. ↑ “Samsung's Exynos 5433 is an A57/A53 ARM SoC”. AnandTech. 2014년 9월 17일에 원본 문서에서 보존된 문서. 2014년 9월 17일에 확인함.
  9. ↑ “ARM Cortex-A53 MPCore Processor Technical Reference Manual: Cryptography Extension”. ARM. 2016년 9월 11일에 확인함.
  10. 1 2 “Impact of implemented Exception levels”. 《Learn the architecture - AArch64 Exception Model》. Arm.
  11. ↑ “Cortex-A72”. 《Arm Developer》.
  12. ↑ Brash, David (2014년 12월 2일). “The ARMv8-A architecture and its ongoing development”. 2015년 1월 23일에 확인함.
  13. ↑ “ARM Virtualization: Performance and Architectural Implications”. 《ISCA 2016》. 2016년 6월 18일.
  14. ↑ “Top-byte ignore (TBI)”. 《WikiChip》. 2021년 8월 15일에 원본 문서에서 보존된 문서. 2025년 12월 25일에 확인함.
  15. ↑ Brash, David (2016년 1월 5일). “ARMv8-A architecture evolution”. 2016년 6월 7일에 확인함.
  16. ↑ “The scalable vector extension sve for the ARMv8 a architecture” (영어). 《Arm Community》. 2016년 8월 22일. 2018년 7월 8일에 확인함.
  17. 1 2 “GCC 8 Release Series – Changes, New Features, and Fixes – GNU Project – Free Software Foundation (FSF)” (영어). 《gcc.gnu.org》. 2018년 7월 9일에 확인함.
  18. ↑ “Fujitsu Completes Post-K Supercomputer CPU Prototype, Begins Functionality Trials – Fujitsu Global” (영어) (보도자료). 《www.fujitsu.com》. 2018년 7월 8일에 확인함.
  19. ↑ “Japan's Fugaku gains title as world's fastest supercomputer” (영어) (보도자료). www.riken.jp. 2020년 6월 23일. 2020년 12월 7일에 확인함.
  20. ↑ “ORNL's Frontier First to Break the Exaflop Ceiling”. 《Top500》. 2022년 5월 30일. 2022년 5월 30일에 확인함.
  21. ↑ “⚙ D71712 Downstream SVE/SVE2 implementation (LLVM)”. 《reviews.llvm.org》.
  22. ↑ David Brash (2016년 10월 26일). “ARMv8-A architecture – 2016 additions”.
  23. ↑ “[Ping~,AArch64] Add commandline support for -march=armv8.3-a”. 2021년 2월 26일에 원본 문서에서 보존된 문서. 2025년 12월 25일에 확인함. pointer authentication extension is defined to be mandatory extension on ARMv8.3-A and is not optional
  24. ↑ “Pointer Authentication on Arm”. ARM. 2025년 3월 5일에 확인함.
  25. ↑ “Qualcomm releases whitepaper detailing pointer authentication on ARMv8.3”. 2017년 1월 10일.
  26. ↑ “A64 Floating-point Instructions: FJCVTZS”. 《arm.com》. 2019년 7월 11일에 확인함.
  27. ↑ “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.
  28. ↑ “Introducing 2017's extensions to the Arm Architecture” (영어). 《community.arm.com》. 2017년 11월 2일. 2019년 6월 15일에 확인함.
  29. ↑ “Exploring dot product machine learning” (영어). 《community.arm.com》. 2017년 12월 6일. 2019년 6월 15일에 확인함.
  30. ↑ “ARM Preps ARMv8.4-A Support For GCC Compiler – Phoronix” (영어). 《www.phoronix.com》. 2018년 1월 14일에 확인함.
  31. ↑ “NEVE: Nested Virtualization Extensions for ARM”. 《SOSP 2017》. 2017년 10월 14일.
  32. 1 2 3 4 “ARMv8.x and ARMv9.x extensions and features”. 《Learn the architecture: Understanding the ARMv8.x and ARMv9.x extensions》.
  33. ↑ “Arm Architecture ARMv8.5-A Announcement – Processors blog – Processors – Arm Community” (영어). 《community.arm.com》. 2019년 4월 26일에 확인함.
  34. ↑ “Arm Architecture Reference Manual ARMv8, for ARMv8-A architecture profile” (영어). 《ARM Developer》. 2019년 8월 6일에 확인함.
  35. ↑ “Arm MTE architecture: Enhancing memory safety” (영어). 《community.arm.com》. 2019년 8월 5일. 2021년 7월 27일에 확인함.
  36. ↑ “Adopting the Arm Memory Tagging Extension in Android” (영어). 《Google Online Security Blog》. 2019년 8월 6일에 확인함.
  37. ↑ “Arm's solution to the future needs of AI, security and specialized computing is v9” (영어). 《Arm | The Architecture for the Digital World》. 2021년 7월 27일에 확인함.
  38. ↑ Schor, David (2021년 3월 30일). “Arm Launches ARMv9” (미국 영어). 《WikiChip Fuse》. 2021년 7월 27일에 원본 문서에서 보존된 문서. 2021년 7월 27일에 확인함.
  39. ↑ Frumusanu, Andrei. “Arm Announces ARMv9 Architecture: SVE2, Security, and the Next Decade”. 《www.anandtech.com》. 2021년 3월 30일에 원본 문서에서 보존된 문서. 2021년 7월 27일에 확인함.
  40. 1 2 3 “Arm releases SVE2 and TME for A-profile architecture – Processors blog – Processors – Arm Community” (영어). 《community.arm.com》. 2019년 4월 18일. 2019년 5월 25일에 확인함.
  41. 1 2 “Arm SVE2 Support Aligning For GCC 10, LLVM Clang 9.0 – Phoronix”. 《www.phoronix.com》. 2019년 5월 26일에 확인함.
  42. ↑ “Design and Verification of the Arm Confidential Compute Architecture”. 《OSDI 2022》. 2022년 7월 11일에 확인함.
  43. ↑ “Unlocking the power of data with Arm CCA” (영어). 《community.arm.com》. 2021년 6월 23일. 2021년 7월 27일에 확인함.
  44. ↑ “Arm Introduces Its Confidential Compute Architecture” (미국 영어). 《WikiChip Fuse》. 2021년 6월 23일. 2021년 7월 27일에 원본 문서에서 보존된 문서. 2021년 7월 27일에 확인함.
  45. ↑ “Arm A profile architecture update 2019” (영어). 《community.arm.com》. 2019년 9월 25일. 2019년 9월 26일에 확인함.
  46. ↑ “BFloat16 extensions for ARMv8-A” (영어). 《community.arm.com》. 2019년 8월 29일. 2019년 8월 30일에 확인함.
  47. ↑ Weidmann, Martin (2020년 9월 21일). “Arm A-Profile Architecture Developments 2020”. 《community.arm.com》. ARM. 2022년 9월 28일에 확인함.
  48. ↑ “Scalable Matrix Extension for the ARMv9-A Architecture” (영어). 《community.arm.com》. 2021년 7월 14일. 2021년 7월 27일에 확인함.
  49. ↑ Weidmann, Martin (2021년 9월 8일). “Arm A-Profile Architecture Developments 2021”. 《community.arm.com》. ARM. 2022년 9월 28일에 확인함.
  50. ↑ “What is New in LLVM 15? - Architectures and Processors blog - Arm Community blogs - Arm Community”. 2023년 2월 27일. 2023년 4월 15일에 확인함.
  51. ↑ “Arm A-Profile Architecture Developments 2022 - Architectures and Processors blog - Arm Community blogs - Arm Community” (영어). 《community.arm.com》. 2022년 9월 29일. 2022년 12월 9일에 확인함.
  52. ↑ “Arm A-Profile Architecture Developments 2023 - Architectures and Processors blog - Arm Community blogs - Arm Community” (영어). 《community.arm.com》. 2023년 10월 5일. 2024년 10월 14일에 확인함.
  53. ↑ “Arm A-Profile Architecture Developments 2024 - Architectures and Processors blog - Arm Community blogs - Arm Community” (영어). 《community.arm.com》. 2024년 10월 1일. 2024년 10월 14일에 확인함.
  54. ↑ “Arm A-Profile Architecture developments 2025 - Architectures and Processors blog - Arm Community blogs - Arm Community” (영어). 《community.arm.com》. 2025년 10월 2일. 2025년 10월 15일에 확인함.
  55. ↑ Frumusanu, Andrei (2020년 9월 3일). “ARM Announced Cortex-R82: First 64-bit Real Time Processor”. 《AnandTech》. 2020년 9월 3일에 원본 문서에서 보존된 문서.
  56. ↑ “Arm Architecture Reference Manual Supplement - Armv8, for Armv8-R AArch64 architecture profile”. Arm Ltd.

외부 링크