Intel APX의 일부 요소가 Nova Lake / Diamond Rapids에서 이점이 없는 것으로 나타남
요약
Intel의 컴파일러 엔지니어가 Nova Lake 및 Diamond Rapids 아키텍처에서 Intel APX의 특정 기능들이 성능 이점을 제공하지 않는다는 점을 발견하고 GCC 패치를 업스트림했습니다. 이에 따라 NDD 메모리 형식과 SETcc.ZU 인코딩 생성을 해당 프로세서 타겟에서 비활성화하는 튜닝이 적용되었습니다.
핵심 포인트
- Intel APX의 NDD 메모리 형식이 Nova Lake에서 성능 이점이 없음
- SETcc.ZU 인코딩이 Diamond Rapids/Nova Lake에서 효율적이지 않음
- GCC 컴파일러에 해당 기능을 억제하는 튜닝 패치 병합
- 차세대 x86 명령어 세트의 초기 최적화 과정에서의 시행착오 확인
Intel APX의 일부 요소가 Nova Lake / Diamond Rapids에서 이점이 없는 것으로 나타남

Intel의 컴파일러 엔지니어 Hongyu Wang은 오늘 이 저명한 오픈 소스 컴파일러(open-source compiler)의 기존 Nova Lake 및 Diamond Rapids 타겟에 대한 추가 튜닝을 위해 두 개의 패치를 업스트림(upstream)했습니다. 흥미롭게도, 이 튜닝은 성능 면에서 성과가 나지 않는 부분에 대해 새로운 APX 기능의 일부 속성을 피하기 위한 것입니다. APX는 이러한 차세대 프로세서와 함께 데뷔하는 x86 명령어 세트(instruction set)의 대대적인 업그레이드입니다. 범용 레지스터(general purpose registers)의 수를 두 배로 늘리는 것과 일부 새로운 명령어와 같은 영역은 확실한 승리가 되겠지만, 오늘날의 컴파일러 튜닝을 고려할 때 초기 출시가 완벽한 성공(slam dunk)은 아닌 것으로 보입니다.
이 패치는 결과적으로 Nova Lake에 대한 Intel APX의 메모리 형식 NDD를 비활성화합니다:
"벤치마크 결과 NDD 명령어의 메모리 형식은 Nova Lake에서 유익하지 않은 것으로 나타났습니다. preferred_for_speed 속성을 통해 메모리 소스 피연산자(memory source operands)를 가진 NDD 대안의 우선순위를 낮추기 위해 X86_TUNE_ENABLE_NDD_MEM 튜닝(기본값 off)을 추가합니다. rm 제약 조건(constraint)을 가진 단일 대안이 있는 순수 NDD 패턴의 경우, r,m 대안으로 분리하고 메모리 대안에 preferred_for_speed를 적용합니다. NDD 대안이 있는 레거시(legacy) 패턴의 경우에도 NDD rm 제약 조건을 별도의 r 및 m 대안으로 분리하여 우선순위가 낮아지는 대상이 메모리 형식에만 국한되도록 합니다."
New Data Destination (NDD)은 일부 2-피연산자(two-operand) 정수 명령어를 3-피연산자(three-operand)로 업그레이드하기 위한 Intel APX의 새로운 기능입니다. 하지만 언급된 바와 같이, NDD 명령어의 메모리 형식은 "Nova Lake에서 유익하지 않으며", 따라서 기본적으로 비활성화됩니다.
오늘 GCC Git에 병합된 또 다른 Intel 튜닝 패치는 Nova Lake 및 Diamond Rapids에서 SETcc.ZU 생성을 비활성화합니다. SETcc.ZU 인코딩은 기존의 SETcc 명령어와 비교하여 Intel APX에 의해 강화된 명령어입니다. SETcc.ZU는 SETcc를 실행한 뒤 MOVZX를 실행하는 것보다 더 효율적으로 작동하도록 설계되었습니다. 하지만 이번 패치를 통해 SETcc.ZU가 Nova Lake 및 Diamond Rapids에서는 이점을 제공하지 않는다는 사실이 밝혀졌습니다:
"NovaLake/DiamondRapids에서의 마이크로벤치마크(Microbenchmark) 성능 결과, 이 코어들에서는 SETcc.ZU 인코딩을 통한 이점이 없는 것으로 나타났습니다. 다른 APX 지원 타겟들에 대해서는 활성화 상태를 유지하면서, DMR/NVL에 대해서만 setzucc 생성을 억제하기 위해 X86_TUNE_DISABLE_SETZUCC를 추가합니다."
이상이 오늘 GCC 컴파일러를 위해 병합된 Intel 튜닝 패치들입니다. Nova Lake를 대비하여 GCC와 LLVM/Clang 모두를 위한 추가적인 튜닝 작업이 오늘 또는 향후 며칠 내에 더 나올지 지켜보는 것은 흥미로운 일이 될 것입니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Phoronix의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기