Why should I know this?

[AArch64] DC ZVA - 데이터 로드 속도 향상 tweak 본문

Technic

[AArch64] DC ZVA - 데이터 로드 속도 향상 tweak

die4taoam 2024. 7. 3. 16:33

https://developer.arm.com/documentation/ddi0595/2020-12/AArch64-Instructions/DC-ZVA--Data-Cache-Zero-by-VA

 

Documentation – Arm Developer

 

developer.arm.com

 

DC ZVA, Data Cache Zero by VA

DC ZVA는 지정된 가상 주소를 캐쉬에 채우지 않는 동작 수행을 지정하는 특수 Instruction이다.

"DC ZVA"로 구글에 검색하면 숱한 관련 내용이 나오니 더 기술하하는 것은 생략하고 다음 일부를 발췌해왔다.

"DC ZVA"는 효과적이며 메모리 시스템을 쓰기 스트리밍 모드로 전환하여 멤셋과 같은 시나리오에서 L1 캐시를 라인 채우지 않도록 합니다. 작년에 .NET은 프레임 제로 초기화에 "DC ZVA"를 사용하는 작업을 병합하여 좋은 결과를 얻었습니다. 저는 memset 구현이 Arm64 최적화 가이드에서 제안한 것과 비슷하기를 바랐습니다.

 

실제로 DC ZVA는 glibc 뿐 아니라 구글의 Android bionic에서도 활용하고 있다.

다음 링크들을 참고

 

Assembly 로 구현된 코드는 다음에서 참고할 수 있다.

 

https://github.com/bminor/glibc/blob/dce754b1553b86fc6352636f1fa490a85b7cf0ff/sysdeps/aarch64/memset.S#L113

 

glibc/sysdeps/aarch64/memset.S at dce754b1553b86fc6352636f1fa490a85b7cf0ff · bminor/glibc

Unofficial mirror of sourceware glibc repository. Updated daily. - bminor/glibc

github.com

 

Inline Assembly 로 구현된 코드는 다음에서 참고할 수 있다.

https://cs.android.com/android/platform/superproject/main/+/main:external/llvm-libc/src/string/memory_utils/op_aarch64.h;drc=afe527ab9651fa77716706a96ddba233e078de55;l=41?hl=ko

 

https://cs.android.com/android/platform/superproject/main/+/main:external/llvm-libc/src/string/memory_utils/op_aarch64.h;drc=afe527ab9651fa77716706a96ddba233e078de55;l=41?hl=ko

 

cs.android.com

 

Comments