SVE2. ARM9.
개발자와 사용자가 직접 확인할 수 있는 새로운 Armv9 호환 CPU의 가장 중요한 새 기능은 NEON의 후속 제품인 SVE2의 기준선입니다.
Armv9 SVE2(Scalable Vector Extensions 버전 2)는 AArch64 시스템을 위한 가변 너비 SIMD 자격 증명을 제공합니다.
첫 번째 구현에서 SVE(Scalable Vector Extensions)는 2016년에 발표되었고 Fujitsu의 A64FX CPU 코어에서 처음으로 구현되어 현재 일본의 세계 1위 슈퍼컴퓨터 Fukagu를 구동하고 있습니다. SVE의 문제는 새로운 가변 벡터 길이 SIMD 명령어 세트의 이 첫 번째 반복이 범위가 다소 제한되고 HPC 워크로드를 더 목표로 하여 NEON에서 다루는 더 다양한 명령어가 많이 누락되었다는 것입니다.
SVE2는 2019년 4월에 발표되었으며 현재 NEON을 사용하는 보다 다양한 DSP와 같은 워크로드를 제공하는 데 필요한 명령으로 확장 가능한 새로운 SIMD 명령 세트를 보완하여 이 문제를 해결하려고 했습니다.
다양한 최신 SIMD 기능을 추가한 것 외에 SVE 및 SVE2의 이점은 128b에서 2048b에 이르는 가변 벡터 크기로 실제 하드웨어가 실행되는 것과 관계없이 벡터의 가변 128b 세분성을 허용합니다. 순전히 벡터 처리 및 프로그래밍의 관점에서 소프트웨어 개발자는 자신의 코드를 한 번만 컴파일하면 됩니다. 미래에 CPU가 네이티브 512b SIMD 실행 파이프라인과 함께 나온다면 코드는 이미 장치의 전체 너비를 활용할 수 있을 것입니다. 마찬가지로 동일한 원칙이 더 낮은 하드웨어 실행 폭 기능으로 보다 보수적인 설계에서 실행될 수 있습니다. Arm은 IoT에서 모바일, 데이터 센터에 이르기까지 CPU를 설계할 때 필수입니다. 또한 Arm 아키텍처의 32b 인코딩 공간 내에 유지하면서 이 모든 작업을 수행합니다. 반대로 x86과 같은 대체 구현은 벡터 크기에 따라 새로운 확장 및 명령을 추가해야 합니다.
SVE2 코드 구축
SVE2 명령어가 포함된 코드를 빌드하려면 SVE2 명령어도 이해하는 Armv8a 프로세서용 코드를 생성하도록 컴파일러 또는 어셈블러에 지시해야 합니다. 이것은 -march= 옵션("머신 아키텍처"로 읽음)을 사용하여 수행됩니다. 이 대상의 아키텍처 사양은 현재 "armv8-a+sve2"입니다.
gcc -march=armv8-a+sve2 ...
GCC 버전 11에서 자동 벡터화기를 호출하는 것을 기억하십시오. -O3를 사용하면 도움이 됩니다.
gcc -O3 -march=armv8-a+sve2 ...
SVE2 내장 헤더 파일 사용
C 프로그램에서 SVE2 내장 함수를 사용하려면 헤더 파일 arm_sve.h를 포함합니다.
#include <arm_sve2.h>
SVE2 코드 실행
Armv8 시스템에서 SVE2 코드를 실행하려면 QEMU 사용자 모드 시스템을 사용할 수 있습니다. 이렇게 하면 하드웨어에서 직접 Armv8a 명령을 실행하는 동안 SVE2 명령을 트랩하고 소프트웨어에서 에뮬레이션합니다.
qemu-aarch64 ./binary
이 블로그 게시물은 진행 중입니다.
자원
https://www.arm.com/campaigns/arm-vision
https://www.anandtech.com/show/16584/arm-announces-armv9-architecture
https://developer.arm.com/documentation/ddi0602/2021-12/
결론
⚠️ 컴퓨터 아키텍처 블로그 게시물: 링크
연결
🖇 팔로우GitHub
🖇 팔로우
_p.s 이 게시물은 내 소프트웨어 이식성 및 최적화 수업을 위해 작성되었습니다.
Reference
이 문제에 관하여(SVE2. ARM9.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/serputov/sve2-arm9-4o79텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)