인텔(Intel)의 소프트웨어 개발자 매뉴얼(SDM)에 'vfmaddrnd231pd'라는 이름의 부동소수점 연산 명령어가 문서화되어 있지만, 실제로는 어떤 개발 도구나 CPU에서도 이 명령어를 찾아볼 수 없어 의문이 제기되고 있습니다. 이 명령어는 연산별 반올림 제어를 지원하는 융합 곱셈-덧셈(FMA) 기능으로, 전역 반올림 설정을 변경하는 느린 과정 없이 개별 연산의 반올림 모드를 지정할 수 있어 특정 알고리듬의 성능을 크게 향상시킬 잠재력이 있었습니다.
SDM에 따르면 'vfmaddrnd231pd'는 이름에 'rnd'가 붙어 반올림 제어가 가능한 패킹된 배정밀도 부동소수점 융합 곱셈-덧셈 명령어(packed double-precision floating-point fused multiply-add with rounding control)로 정의됩니다. 즉시값 바이트의 비트 필드를 통해 반올림, 비정규수 0 처리(DAZ), 비정규수 0으로 플러시(FTZ), 예외 억제 등을 제어할 수 있다고 설명되어 있습니다. 그러나 GNU 어셈블러(assembler)는 이 명령어를 인식하지 못하며, 관련 인트린식(intrinsic) 함수인 '_mm_fmaddround_pd'와 '_mm256_fmaddround_pd' 또한 클랭(Clang)이나 인텔 C/C++ 컴파일러(ICC) 모두에 존재하지 않습니다. 심지어 SDM에 명시된 연산 코드(opcode)를 직접 인코딩하여 FMA를 지원하는 하스웰(Haswell) CPU에서 실행했을 때도 #UD(정의되지 않은 명령어) 예외가 발생했습니다. 더욱이 2024년판 SDM에는 있었던 이 명령어가 2026년판에서는 삭제된 것으로 확인되어, 인텔이 이 명령어를 추가하려다 철회하고 문서를 제대로 수정하지 않았을 가능성이 제기되고 있습니다.
이러한 '유령 명령어'의 존재는 현대 컴퓨팅 시스템의 복잡성과 문서화의 중요성을 다시금 일깨워줍니다. 명령어 집합 아키텍처(ISA)는 칩 설계자와 컴파일러 개발자, 그리고 저수준 프로그래머에게 핵심적인 가이드라인이 되는데, 문서와 실제 구현 간의 불일치는 혼란과 비효율을 초래할 수 있습니다. 특히 명령어 단위의 반올림 제어는 금융 계산이나 과학 시뮬레이션 등 정밀한 부동소수점 연산이 필수적인 분야에서 중요한 성능 최적화 기법이 될 수 있었기에, 이 명령어가 실제로 존재했다면 관련 분야에 큰 영향을 미쳤을 것입니다. 이 사건은 인텔이 왜 이 명령어를 철회했는지, 그리고 문서 업데이트가 왜 누락되었는지에 대한 명확한 설명이 필요함을 보여줍니다.