SVE2. ARM9.

3130 단어
새로운 Armv9 10년을 살펴보십시오.


개발자와 사용자가 직접 확인할 수 있는 새로운 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 이 게시물은 내 소프트웨어 이식성 및 최적화 수업을 위해 작성되었습니다.

좋은 웹페이지 즐겨찾기