Hacker News하드웨어 · 시스템

인텔 매뉴얼에만 있는 유령 명령어 vfmaddrnd231pd

원제 Who is vfmaddrnd231pd?

133 포인트댓글 13
Key Point

인텔 매뉴얼에 실존하는 명령어로 기록되어 있지만 실제 CPU에서는 작동하지 않고 도구도 지원하지 않는 미스터리 상황을 통해 소프트웨어 문서화의 허점을 드러낸다.

핵심 요약

  • vfmaddrnd231pd는 FMA 명령어 세트에 속한 것으로 문서화된 x86 부동소수점 명령어로, 명령어별로 반올림 모드를 제어할 수 있다는 점이 일반적인 전역 반올림 모드와 다르다.
  • 이 명령어는 FMA로 더하기·뺄셈·곱셈을 에뮬레이트할 수 있어, AVX-512 없이도 제어 가능한 반올림을 구현해 반올림에 의존하는 알고리즘의 성능을 크게 높일 수 있어야 한다.
  • 그러나 GNU 어셈블러가 이 명령어를 인식하지 못하고, Intel C/C++ 컴파일러 인트린식 _mm_fmaddround_pd와 _mm256_fmaddround_pd가 Clang과 ICC 모두에서 빠져 있다.
  • 수동으로 인텔 소프트웨어 개발 매뉴얼(SDM) 옵코드 목록에서 명령어를 조립하려 하면 DDS라는 미정의 접두어가 나타나며, Haswell 같은 FMA 지원 CPU에서 실제로 실행하면 #UD(미정의 명령어) 예외가 발생한다.
  • vfmaddrnd231pd 외에 pd/ps/sd/ss 변형이나 132/213/231 변형이 없다는 점도 다른 FMA 명령어와 달라 의심스럽다.
  • 2024년 SDM 버전에는 이 명령어가 있지만 2026년 버전에서는 완전히 사라졌다.
  • 이는 타이핑 오류처럼 보이지 않으며, 문서에 고유한 테이블과 의사코드가 포함되어 있기 때문에 인텔이 vfmaddrnd* 명령어 세트를 추가하려다가 마지막 순간에 문제를 발견해 CPU에서 제거했지만 SDM을 제대로 수정하지 못했을 가능성이 높다.
AI 요약 안내

AI가 한국어로 정리한 내용입니다. 정확한 정보는 원문을 확인해 주세요.

요약 원칙 ↗