WIPIVERSE

F16C

F16C는 x86 및 AMD64 명령어 집합 아키텍처(ISA)의 확장 기능으로, 반정밀도(half-precision) 부동소수점 형식과 표준 IEEE 단정밀도(single-precision) 부동소수점 형식 간의 변환을 지원하는 명령어 집합이다. 이전에는 CVT16이라는 비공식 명칭으로도 알려져 있었다.

역사

F16C 명령어 집합은 2009년 5월 1일 AMD에 의해 CVT16이라는 이름으로 발표되었다. 이는 2007년 8월 30일에 제안된 SSE5 명령어 집합 제안의 일부를 개정한 것으로, XOP 및 FMA4 명령어 집합과 함께 보완되었다. 이 개정은 제안된 새 명령어의 이진 코딩을 Intel의 AVX 명령어 확장과 더 호환되도록 만든 것이며, 명령어의 기능 자체는 변경되지 않았다.

이후 최신 문서에서는 F16C라는 명칭이 Intel과 AMD 양사의 x86-64 아키텍처 사양에서 공식적으로 사용되고 있다.

기술적 내용

F16C 명령어 집합은 XMM 레지스터의 4개 부동소수점 값 또는 YMM 레지스터의 8개 부동소수점 값을 변환하는 변형을 포함한다. 주요 명령어는 다음과 같다.

  • VCVTPH2PS: 반정밀도 부동소수점 값을 단정밀도 부동소수점 값으로 변환한다. XMM 레지스터 또는 메모리의 4개 값, 또는 YMM 레지스터의 8개 값을 변환할 수 있다.
  • VCVTPS2PH: 단정밀도 부동소수점 값을 반정밀도 부동소수점 값으로 변환한다. 이 명령어의 8비트 즉시(immediate) 인자는 반올림 모드를 선택하며, 값 0~4는 각각 nearest, down, up, truncate, 그리고 MXCSR.RC에 설정된 모드를 선택한다.

이 명령어들의 지원 여부는 CPUID 명령어(EAX=1) 실행 후 ECX 레지스터의 29번째 비트로 확인할 수 있다.

지원 프로세서

F16C 명령어 집합을 지원하는 주요 프로세서는 다음과 같다.

  • AMD: Piledriver 기반 프로세서(2012년 4분기), Steamroller 기반 프로세서(2014년 1분기), Excavator 기반 프로세서(2015년 2분기) 및 이후 세대
  • Intel: Ivy Bridge 프로세서 및 이후 세대

활용

F16C는 반정밀도 부동소수점 연산이 필요한 그래픽 처리, 게임, 과학 계산 등의 분야에서 활용된다. 특히 일부 게임 소프트웨어는 실행 시 CPU가 F16C 명령어 집합을 지원하는지 확인하며, 지원하지 않는 구형 CPU에서는 실행이 제한될 수 있다. GCC와 같은 컴파일러에서도 x86 아키텍처 대상 컴파일 옵션으로 F16C 지원을 지정할 수 있다.

한편, "F-16C"는 하이픈이 포함된 표기로 미국의 다목적 전투기인 F-16 Fighting Falcon의 단좌형 변형 기종을 가리키는 별개의 개념이다. 그러나 "F16C"라는 표기는 일반적으로 위에서 설명한 x86 명령어 집합 확장을 지칭한다.

둘러보기

더 찾아볼 만한 주제

    전체 문서 보기