AVX-512

AVX-512

AVX-512는 2013년 7월 Intel이 제안한 x86 명령어 세트 아키텍처(ISA)용 256비트 Advanced Vector Extensions SIMD 명령어의 512비트 확장 버전으로,[1] 2016년 Intel Xeon Phix200(Knights Landing)에 처음 구현되었으며 이후 AMD 및 기타 Intel CPU에도 추가되었습니다(아래 목록 참조).AVX-512는 독립적으로 구현될 수 있는 여러 확장으로 구성되어 있습니다.[2]이 정책은 전체 명령 블록을 구현하기 위한 과거 요구사항에서 벗어난 것입니다.모든 AVX-512 구현에는 코어 확장 AVX-512F(AVX-512 Foundation)만 필요합니다.

확장 기능은 대부분의 256비트 명령어를 확장하는 것 외에도 새로운 데이터 변환, 산포 연산 및 순열과 같은 다양한 새로운 작업을 도입합니다.[2]AVX 레지스터의 수가 16개에서 32개로 증가하고 8개의 새로운 "마스크 레지스터"가 추가되어 명령어의 결과를 변수 선택 및 혼합할 수 있습니다.대부분의 AVX-512 지원 프로세서(AVX-512를 사용하는 § CPU 참조)에 포함된 벡터 길이(VL) 확장 기능이 있는 CPU에서는 128비트 및 256비트 벡터 크기에서도 이러한 명령을 사용할 수 있습니다.AVX-512는 인텔이 프로세서에 도입한 최초의 512비트 SIMD 명령어 세트가 아닙니다. 인텔의 Larrabee 프로젝트에서 파생된 1세대 Xeon Phi 코프로세서에 사용된 이전 512비트 SIMD 명령어는 유사하지만 이진 호환성은 없으며 부분적으로만 소스 호환성이 있습니다.[1]

명령어세트

AVX-512 명령어 세트는 각각 고유한 CPUID 특징 비트를 갖는 여러 개의 개별 세트로 구성되어 있지만, 일반적으로 이를 구현하는 프로세서 세대에 의해 그룹화됩니다.

F, CD, ER, PF
Xeon Phix200(나이츠 랜딩), Xeon Gold/Platinum(스카이레이크 SP 'Purley')과 함께 선보였으며, 나머지 2개(ER, PF)는 나이츠 랜딩에 특화되어 있습니다.
  • AVX-512 Foundation(F) – 대부분의 32비트 및 64비트 기반 AVX 명령을 EVEX 코딩 방식으로 확장하여 Knights Landing과 Skylake Xeon이 구현하는 512비트 레지스터, 동작 마스크, 파라미터 브로드캐스트, 내장된 라운딩 및 예외 제어를 지원합니다.
  • AVX-512 충돌 감지 지침(CD) – 효율적인 충돌 감지로 Knights Landing과[1] Skylake X에서 구현된 더 많은 루프 벡터링이 가능하도록 합니다.
  • AVX-512 지수역수 명령(ER) – Knights Landing에서[1] 구현하는 초월적 작업 구현을 돕기 위해 설계된 지수 및 역수 작업
  • AVX-512 PF(Prefetch Instructions) – Knights Landing에서[1] 구현한 새로운 프리페치
VL, DQ, BW
스카이레이크 X와 캐넌레이크를 소개합니다.
  • AVX-512 Vector Length Extension(VL) – 대부분의 AVX-512 작업을 XMM(128비트) 및 YMM(256비트) 레지스터에서도[3] 작동하도록 확장
  • AVX-512 DQ(Double word and Quadword instructions) – 새로운 32비트 및 64비트 AVX-512 명령어[3] 추가
  • AVX-512 BW(Byte and Word Instructions) – AVX-512를 8비트 및 16비트 정수 작업을[3] 지원하도록 확장
IFMA, VBMI
캐넌 레이크를 소개합니다.[4]
  • AVX-512 IFMA(Integer Fused Multiply Add) – 52비트 정밀도를 사용한 정수의 융합 곱셈.
  • AVX-512 VBMI(Vector Byte Manipulation Instructions)는 AVX-512BW에 존재하지 않았던 벡터 바이트 순열 명령을 추가합니다.
4VNNIW, 4FMAPS
나이츠 밀과 함께 소개되었습니다.[5][6]
  • AVX-512 벡터 신경망 명령어 단어 가변 정밀도(4VNNIW) – 딥러닝, 향상된 단어, 가변 정밀도를 위한 벡터 명령어
  • AVX-512 FMAPS(Fused Multiply Accumulation Packed Single Precision) – 딥 러닝, 부동 소수점, 단일 정밀도를 위한 벡터 명령.
VPOPCNTDQ
벡터 모집단 카운트 지침.나이츠 밀과 아이스 레이크를 소개합니다.[7]
VNNI, VBMI2, BITALG
아이스 레이크를 소개합니다.[7]
  • AVX-512 벡터 신경망 명령어(Vector Neural Network Instructions, VNNI) – 딥 러닝을 위한 벡터 명령어.
  • AVX-512 벡터 바이트 조작 명령 2(VBMI2) – 바이트/워드 로드, 저장 및 시프트 연결.
  • AVX-512 비트 알고리즘(BITALG) – 바이트/워드 비트 조작 지침으로 VPOPCNTDQ를 확장합니다.
VP2교차로
타이거 레이크를 소개합니다.
  • AVX-512 Vector Pair Intersection to Pair of Mask Registers (VP2INTERSect)
GFNI, VPCLMULQDQ, VAES
아이스 레이크를 소개합니다.[7]
  • 이것들은 AVX-512 기능 자체가 아닙니다.AVX-512와 함께 EVEX 인코딩 버전의 GFNI, PCLMULQDQ 및 AES 명령을 지원합니다.

인코딩 및 특징

AVX와 AVX2가 사용하는 VEX 접두사는 유연하기는 하지만 Intel이 AVX-512에 추가하고자 했던 기능을 충분히 사용할 수 있는 공간을 확보하지 못했습니다.이로 인해 그들은 이브엑스(EVEX)라는 새로운 접두사를 정의하게 되었습니다.

VEX와 비교하여 EVEX는 다음과 같은 이점을 추가합니다.[6]

  • 512비트 레지스터 32개 허용 레지스터 인코딩 확장
  • 대부분의 AVX-512 명령을 마스킹하기 위한 새로운 opmask 레지스터 8개를 추가합니다.
  • 브로드캐스트를 자동으로 수행하는 새로운 스칼라 메모리 모드를 추가합니다.
  • 각 명령어에 명시적인 반올림 제어를 위한 공간을 추가합니다.
  • 압축된 새 변위 메모리 주소 지정 모드를 추가합니다.

AVX-512의 확장 레지스터, SIMD width bit, opmask 레지스터는 필수이며 모두 OS의 지원이 필요합니다.

SIMD 모드

AVX-512 명령어는 성능 저하 없이 128/256비트 AVX/AVX2 명령어와 혼합되도록 설계되었습니다.그러나 AVX-512VL 확장을 사용하면 128/256비트 레지스터 XMM/YMM에서 AVX-512 명령을 사용할 수 있으므로 대부분의 SSE 및 AVX/AVX2 명령에는 opmask 및 추가 레지스터와 같은 새로운 기능에 액세스할 수 있는 EVEX 접두사로 인코딩된 새로운 AVX-512 버전이 있습니다.AVX-256과 달리 새로운 명령어는 새로운 니모닉이 없고 AVX와 네임스페이스를 공유하므로 VEX와 EVEX 인코딩 버전의 명령어 구분이 소스 코드에서 모호합니다.AVX-512F는 32비트 및 64비트 값에서만 작동하므로 바이트 또는 워드에서 작동하는 SSE 및 AVX/AVX2 명령어는 AVX-512BW 확장(바이트 및 워드 지원)에서만 사용할 수 있습니다.[6]

이름. 확장 집합 레지스터 종류들
레거시 SSE SSE-SSE4.2 xmm0–xmm15 홑겹의 물레SSE2: 바이트, 워드, 더블 워드, 쿼드 워드 및 더블 플로트.
AVX-128(VEX) AVX, AVX2 xmm0–xmm15 바이트, 워드, 더블 워드, 쿼드 워드, 싱글 플로트 및 더블 플로트.
AVX-256 (VEX) AVX, AVX2 ymm0–ymm15 싱글 플로트와 더블 플로트AVX2로부터 바이트, 워드, 더블 워드, 쿼드 워드.
AVX-128(EVEX) AVX-512VL xmm0–xmm31 (k0–k7) 이중 단어, 쿼드 단어, 단일 플로트 및 이중 플로트.AVX512 포함BW: 바이트 및 워드.AVX512-FP16 사용 시: 반플로트.
AVX-256 (EVEX) AVX-512VL ymm0–ymm31 (k0–k7) 이중 단어, 쿼드 단어, 단일 플로트 및 이중 플로트.AVX512 포함BW: 바이트 및 워드.AVX512-FP16 사용 시: 반플로트.
AVX-512 (EVEX) AVX-512F zmm0–zmm31 (k0–k7) 이중 단어, 쿼드 단어, 단일 플로트 및 이중 플로트.AVX512 포함BW: 바이트 및 워드.AVX512-FP16 사용 시: 반플로트.

확장 레지스터

x64 AVX(YMM0–YMM15) 및 x64 SSE(XMM0–XMM15) 레지스터의 확장으로 x64 AVX-512 레지스터 체계
511 256 255 128 127 0
ZMM0 YMM0 XMM0
ZMM1 YMM1 XMM1
ZMM2 YMM2 XMM2
ZMM3 YMM3 XMM3
ZMM4 YMM4 XMM4
ZMM5 YMM5 XMM5
ZMM6 YMM6 XMM6
ZMM7 YMM7 XMM7
ZMM8 YMM8 XMM8
ZMM9 YMM9 XMM9
ZMM10 YMM10 XMM10
ZMM11 YMM11 XMM11
ZMM12 YMM12 XMM12
ZMM13 YMM13 XMM13
ZMM14 YMM14 XMM14
ZMM15 YMM15 XMM15
ZMM16 YMM16 XMM16
ZMM17 YMM17 XMM17
ZMM18 YMM18 XMM18
ZMM19 YMM19 XMM19
ZMM20 YMM20 XMM20
ZMM21 YMM21 XMM21
ZMM22 YMM22 XMM22
ZMM23 YMM23 XMM23
ZMM24 YMM24 XMM24
ZMM25 YMM25 XMM25
ZMM26 YMM26 XMM26
ZMM27 YMM27 XMM27
ZMM28 YMM28 XMM28
ZMM29 YMM29 XMM29
ZMM30 YMM30 XMM30
ZMM31 YMM31 XMM31

SIMD 레지스터 파일의 너비를 256비트에서 512비트로 늘리고, 16개에서 32개의 레지스터 ZMM0-ZMM31로 확장하였습니다.이러한 레지스터는 AVX 확장에서 256비트 YMM 레지스터로, 스트리밍 SIMD 확장에서 128비트 XMM 레지스터로 처리할 수 있으며, 기존 AVX 및 SSE 명령어는 EVEX 인코딩 형식을 사용할 경우 16개의 추가 레지스터 XMM16-XMM31 및 YMM16-YMM31에서 작동하도록 확장할 수 있습니다.

옵마스크 레지스터

대부분의 AVX-512 명령은 8개의 opmask 레지스터(k0–k7) 중 하나를 나타낼 수 있습니다.마스크 레지스터를 opmask로 사용하는 지침의 경우 레지스터 'k0'이 특수합니다. 마스크를 벗은 작업을 나타내기 위해 사용되는 하드코딩된 상수입니다.opmask 레지스터에 쓰거나 산술 또는 논리 연산을 수행하는 다른 연산의 경우 'k0'은 작동하는 유효한 레지스터입니다.대부분의 지침에서 opmask는 대상에 기록되는 값을 제어하는 데 사용됩니다.플래그는 opmask 동작을 제어하는데, opmask 동작은 마스크가 선택하지 않은 모든 것을 0으로 만드는 "zero" 또는 선택하지 않은 모든 것을 그대로 두는 "merge"일 수 있습니다.병합 동작이 혼합 명령과 동일합니다.

opmask 레지스터는 일반적으로 16비트 너비이지만 AVX-512BW 확장을 사용하면 최대 64비트까지 가능합니다.[6]그러나 실제로 사용되는 비트 수는 마스킹된 명령어의 벡터 유형에 따라 달라집니다.32비트 단일 플로팅 또는 이중 워드의 경우 16비트가 512비트 레지스터의 16개 요소를 마스킹하는 데 사용됩니다.더블 플로트 및 쿼드 워드의 경우 최대 8개의 마스크 비트가 사용됩니다.

opmask 레지스터는 AVX-512에서 요소 폭이 당연히 없는 여러 비트 단위의 명령어가 추가된 이유입니다.예를 들어 비트와이즈 AND, OR 또는 128비트 셔플은 이제 이중 단어 및 쿼드 단어 변형 모두에 존재하며 마지막 마스킹에서 유일한 차이점이 있습니다.

새 opmask 지침

opmask 레지스터에는 직접 작동하는 명령의 새로운 미니 확장이 있습니다.나머지 AVX-512 명령어들과는 달리, 이 명령어들은 모두 VEX 인코딩입니다.초기 opmask 명령은 모두 16비트(Word) 버전입니다.AVX-512DQ에서는 8개의 64비트 값을 마스킹해야 하는 요구에 더 잘 맞게 8비트(Byte) 버전이 추가되었으며 AVX-512BW 32비트(Double) 및 64비트(Quad) 버전이 추가되어 최대 64개의 8비트 값을 마스킹할 수 있습니다.KORTEST 및 KTEST 명령은 마스크 레지스터를 기반으로 x86 플래그를 설정할 때 사용할 수 있으므로 비 SIMD x86 분기 및 조건부 명령과 함께 사용할 수 있습니다.

설명 확장 집합 묘사
KAND F 비트와이즈 논리 AND 마스크
KANDN F 마스크가 아닌 비트와이즈 논리적
KMOV F 마스크 레지스터 또는 범용 레지스터에서 이동 및 이동
KUNPCK F 마스크 레지스터에 대한 압축 풀기
KNOT F NOT 마스크 레지스터
KOR F 비트와이즈 논리적 논리합 연산
KORTEST F OR 마스크 및 설정 플래그
KSHIFTL F Shift Left 마스크 레지스터
KSHIFTR F Shift 우측 마스크 레지스터
KXNOR F 비트와이즈 논리 XNOR 마스크
KXOR F 비트와이즈 논리 XOR 마스크
KADD BW/DQ 마스크 두 개 추가
KTEST BW/DQ 비트 단위 비교 및 설정 플래그

AVX-512 Foundation의 새로운 지침

대부분의 AVX-512 명령어는 기존 SSE 또는 AVX 명령어의 EVEX 버전일 뿐입니다.그러나 몇 가지 새로운 명령과 새로운 AVX-512 버전으로 대체된 오래된 명령이 있습니다.새 지침 또는 많이 수정된 지침이 아래에 나열되어 있습니다.또한 AVX-512VL 및 AVX-512BW의 확장 기능도 포함되어 있습니다. 이 확장 기능은 새로운 명령 대신에 이러한 명령의 새로운 버전을 추가하는 것에 불과하기 때문입니다.

마스크를 사용하여 블렌드

SSE4의 혼합 명령어에는 EVEX 프리픽스 버전이 없습니다. 대신 AVX-512에는 마스크 레지스터를 선택기로 사용하는 새로운 혼합 명령어 세트가 있습니다.아래의 마스크 명령에 대한 일반적인 비교와 함께 XOP의 VPCMOV와 유사한 일반적인 3차 연산 또는 cmov를 구현하는 데 사용할 수 있습니다.

블렌딩은 EVEX 인코딩의 필수적인 부분이기 때문에, 이러한 명령은 또한 기본 이동 명령으로 간주될 수 있습니다.영점 혼합 모드를 사용하면 마스킹 명령으로도 사용할 수 있습니다.

설명 확장 집합 묘사
VBLENDMPD F opmask 컨트롤을 사용하여 float64 벡터 혼합
VBLENDMPS F opmask 컨트롤을 사용하여 float32 벡터 혼합
VPBLENDMD F opmask 컨트롤을 사용하여 int32 벡터 혼합
VPBLENDMQ F opmask 컨트롤을 사용하여 int64 벡터 혼합
VPBLENDMB BW opmask 컨트롤을 사용하여 바이트 정수 벡터 혼합
VPBLENDMW BW opmask 컨트롤을 사용하여 단어 정수 벡터 혼합

마스크와 비교

AVX-512F에는 4가지 새로운 비교 지침이 있습니다.XOP의 상대 제품과 마찬가지로 즉시 필드를 사용하여 8가지 비교 중에서 선택합니다.그러나 XOP 영감과는 달리 결과를 마스크 레지스터에 저장하고 처음에는 이중 단어와 쿼드 단어 비교만 지원합니다.AVX-512BW 확장은 바이트 및 워드 버전을 제공합니다.지침에 대해 두 개의 마스크 레지스터를 지정할 수 있습니다. 하나는 기록할 것이고 하나는 정규 마스킹을 선언할 것입니다.[6]

즉각적인 비교 묘사
0 EQ 같음
1 LT 보다 적은
2 LE 작거나 같음
3 거짓의 0으로 설정
4 NEQ 동일하지 않음
5 NLT 크거나 같음
6 NLE 보다 큼
7 진실의 하나로 설정
설명 확장 집합 묘사
VPCMPD,VPCMPUD F 부호/부호 이중 단어를 마스크와 비교
VPCMPQ,VPCMPUQ F 부호/비부호 쿼드워드를 마스크와 비교
VPCMPB,VPCMPUB BW 서명된/부호되지 않은 바이트를 마스크로 비교
VPCMPW,VPCMPUW BW 서명/비부호 단어를 마스크와 비교

논리집합마스크

마스크를 설정하는 마지막 방법은 논리 세트 마스크를 사용하는 것입니다.이러한 명령은 AND 또는 NAND 중 하나를 수행한 다음, 결과 값이 0 또는 0이 아닌 것을 기준으로 대상 opmask를 설정합니다.비교 지침과 마찬가지로 두 개의 opmask 레지스터(하나는 목적지로, 다른 하나는 일반 opmask)를 사용합니다.

설명 확장 집합 묘사
VPTESTMD,VPTESTMQ F 32비트 또는 64비트 정수에 대한 논리 AND 및 세트 마스크.
VPTESTNMD,VPTESTNMQ F 32비트 또는 64비트 정수에 대한 논리적 NAND 및 세트 마스크.
VPTESTMB,VPTESTMW BW 8비트 또는 16비트 정수에 대한 논리 AND 및 설정 마스크.
VPTESTNMB,VPTESTNMW BW 8비트 또는 16비트 정수에 대한 논리적 NAND 및 세트 마스크.

압축 및 펼치기

압축 및 확장 명령은 동일한 이름의 APL 작업과 일치합니다.다른 AVX-512 명령과 약간 다른 방식으로 opmask를 사용합니다.Compress는 마스크에 표시된 값만 저장하지만, 표시되지 않은 값에 대해서는 공간을 예약하지 않고 생략하여 압축된 값을 저장합니다.Expand(확장)는 마스크에 표시된 만큼의 값을 로드한 다음 선택한 위치로 펼침으로써 반대로 작동합니다.

설명 묘사
VCOMPRESSPD,VCOMPRESSPS 희소 팩킹된 이중/단일 정밀 부동 소수점 값을 고밀도 메모리에 저장
VPCOMPRESSD,VPCOMPRESSQ 희소 팩킹된 이중 워드/쿼드 워드 정수 값을 조밀한 메모리/레지스터에 저장
VEXPANDPD,VEXPANDPS 조밀 메모리에서 희소 팩킹된 이중/단일 정밀 부동 소수점 값 로드
VPEXPANDD,VPEXPANDQ 조밀 메모리/레지스터에서 희소 팩킹된 이중 워드/쿼드 워드 정수 값 로드

퍼뮤트

전체 입력 순열 두 개에 대한 새 순열 명령 세트가 추가되었습니다.이들은 모두 세 개의 인수, 두 개의 소스 레지스터 및 하나의 인덱스를 사용합니다. 결과는 첫 번째 소스 레지스터 또는 인덱스 레지스터를 덮어쓰면 출력됩니다.AVX-512BW는 명령어를 확장하여 16비트(단어) 버전과 AVX-512_VB를 포함합니다.MI 확장자는 명령어의 바이트 버전을 정의합니다.

설명 확장 집합 묘사
VPERMB VBMI 포장된 바이트 요소를 순열합니다.
VPERMW BW 포장된 단어 요소를 순열합니다.
VPERMT2B VBMI 전체 바이트 순열이 첫 번째 소스를 덮어씁니다.
VPERMT2W BW 전체 단어 순열이 첫 번째 소스를 덮어씁니다.
VPERMI2PD,VPERMI2PS F 전체 단일/이중 부동 소수점 순열이 인덱스를 덮어씁니다.
VPERMI2D,VPERMI2Q F 전체 이중 단어/쿼드 단어 순열이 인덱스를 덮어씁니다.
VPERMI2B VBMI 인덱스를 덮어쓰는 전체 바이트 순열입니다.
VPERMI2W BW 전체 단어 순열이 인덱스를 덮어씁니다.
VPERMT2PS,VPERMT2PD F 첫 번째 소스를 덮어쓰는 전체 단일/이중 부동 소수점 순열입니다.
VPERMT2D,VPERMT2Q F 첫 번째 소스를 덮어쓰는 전체 이중 단어/쿼드 단어 순열입니다.
VSHUFF32x4,VSHUFF64x2,VSHUFI32x4,VSHUFI64x2 F 포장된 128비트 줄 네 개를 섞습니다.
VPMULTISHIFTQB VBMI 쿼드워드 소스에서 팩된 정렬되지 않은 바이트를 선택합니다.

비트 와이즈 3진 논리

두 개의 새로운 명령어를 추가하면 논리적으로 세 입력 사이에서 가능한 모든 비트 단위 연산을 구현할 수 있습니다.이들은 입력으로 레지스터 3개와 8비트 즉시 필드를 사용합니다.출력의 각 비트는 입력에서 해당하는 3개의 비트를 조회하여 8비트 즉시의 8개 위치 중 하나를 선택합니다.3비트를 사용하여 8개의 조합만 가능하므로, 가능한 3개의 입력 비트 와이즈 연산을 모두 수행할 수 있습니다.[6]AVX-512F에서 유일한 비트 와이즈 벡터 명령입니다. 두 소스 SSE 및 AVX 비트 와이즈 벡터 명령의 EVEX 버전 AND, ANDN, OR 및 XOR가 AVX-512DQ에 추가되었습니다.

더블 워드 버전과 쿼드 워드 버전의 차이는 opmask의 적용일 뿐입니다.

설명 묘사
VPTERNLOGD,VPTERNLOGQ 비트와이즈 3진 논리
비트와이즈 3진 논리 진리표
A0 A1 A2 더블 AND
(0x80)
이중 OR
(0xFE)
비트와이즈 블렌드
(0xCA)
0 0 0 0 0 0
0 0 1 0 1 1
0 1 0 0 1 0
0 1 1 0 1 1
1 0 0 0 1 0
1 0 1 0 1 0
1 1 0 0 1 1
1 1 1 1 1 1

전환

여러 변환 또는 이동 명령이 추가되었으며, SSE2에서 사용 가능한 변환 명령 집합이 완성됩니다.

설명 확장 집합 묘사

VPMOVQD,VPMOVSQD,VPMOVUSQD,VPMOVQW,VPMOVSQW,VPMOVUSQW,VPMOVQB,VPMOVSQB,VPMOVUSQB,VPMOVDW,VPMOVSDW,VPMOVUSDW,VPMOVDB,VPMOVSDB,VPMOVUSDB

F 쿼드워드 또는 더블워드를 더블워드, 워드 또는 바이트로 다운 변환합니다. 불포화, 포화 또는 포화 부호가 없습니다.SSE 4.1의 부호/제로 확장 명령의 역방향.
VPMOVWB,VPMOVSWB,VPMOVUSWB BW 단어를 바이트로 하향 변환합니다. 불포화, 포화 또는 포화된 부호가 없습니다.
VCVTPS2UDQ,VCVTPD2UDQ,VCVTTPS2UDQ,VCVTTPD2UDQ F 잘라내기 여부, 포장된 단일 또는 이중 정밀 부동 소수점을 포장되지 않은 이중 단어 정수로 변환합니다.
VCVTSS2USI,VCVTSD2USI,VCVTTSS2USI,VCVTTSD2USI F 잘라내기, 스칼라 단일 또는 이중 정밀 부동 소수점을 사용하거나 사용하지 않고 부호 없는 이중 단어 정수로 변환합니다.
VCVTPS2QQ,VCVTPD2QQ,VCVTPS2UQQ,VCVTPD2UQQ,VCVTTPS2QQ,VCVTTPD2QQ,VCVTTPS2UQQ,VCVTTPD2UQQ DQ 잘라내기, 포장된 단일 또는 이중 정밀 부동 소수점을 포장된 부호 또는 비부호 쿼드워드 정수로 변환합니다.
VCVTUDQ2PS,VCVTUDQ2PD F 포장된 부호 없는 이중 단어 정수를 포장된 단일 또는 이중 정밀 부동 소수점으로 변환합니다.
VCVTUSI2PS,VCVTUSI2PD F 스칼라 부호 없는 이중 단어 정수를 단일 또는 이중 정밀 부동 소수점으로 변환합니다.
VCVTUSI2SD,VCVTUSI2SS F 스칼라 부호 없는 정수를 단일 또는 이중 정밀 부동 소수점으로 변환합니다.
VCVTUQQ2PS,VCVTUQQ2PD DQ 포장된 부호 없는 쿼드워드 정수를 포장된 단일 또는 이중 정밀 부동 소수점으로 변환합니다.
VCVTQQ2PD,VCVTQQ2PS F 포장된 쿼드워드 정수를 포장된 단일 또는 이중 정밀 부동 소수점으로 변환합니다.

부동소수점 분해

AVX-512F의 독특한 새로운 기능 중에는 부동 소수점 값을 분해하고 특수 부동 소수점 을 처리하는 명령어가 있습니다.이 방법들은 완전히 새로운 방법이기 때문에 스칼라 버전으로도 존재합니다.

설명 묘사
VGETEXPPD,VGETEXPPS 패킹된 fp 값의 지수를 fp 값으로 변환
VGETEXPSD,VGETEXPSS 스칼라 fp 값의 지수를 fp 값으로 변환
VGETMANTPD,VGETMANTPS float32/float64 벡터에서 정규화된 사마귀 벡터 추출
VGETMANTSD,VGETMANTSS float32/float64 스칼라에서 정규화된 가수의 float32/float64 추출
VFIXUPIMMPD,VFIXUPIMMPS 특수 포장 float32/float64 값 수정
VFIXUPIMMSD,VFIXUPIMMSS 특수 스칼라 float32/float64 값 수정

부동 소수점 연산

이것은 새로운 부동 소수점 방법의 두 번째 세트로, 역수의 새로운 스케일링 및 근사 계산과 제곱근의 역수를 포함합니다.대략적인 상호 명령은 최대 2의−14 상대적인 오차를 가질 것을 보장합니다.[6]

설명 묘사
VRCP14PD,VRCP14PS 포장된 플로트32/플로트64 값의 대략적인 역수
VRCP14SD,VRCP14SS 스칼라 플로트32/플로트64 값의 근사 역수 계산
VRNDSCALEPS,VRNDSCALEPD 지정된 분수 비트 수를 포함하도록 라운드 팩된 float32/float64 값
VRNDSCALESS,VRNDSCALESD 지정된 수의 분수 비트를 포함하도록 라운드 스칼라 float32/float64 값
VRSQRT14PD,VRSQRT14PS 포장된 플로트 32/플로트 64 값의 제곱근의 근사 역수 계산
VRSQRT14SD,VRSQRT14SS 스칼라 float32/float64 값의 제곱근의 근사 역수 계산
VSCALEFPS,VSCALEFPD float32/float64 값을 float32/float64 값으로 확장
VSCALEFSS,VSCALEFSD Float32/float64 값으로 스칼라 Float32/float64 값 확장

방송

설명 확장 집합 묘사
VBROADCASTSS,VBROADCASTSD F, VL 브로드캐스트 싱글/더블 부동 소수점 값
VPBROADCASTB,VPBROADCASTW,VPBROADCASTD,VPBROADCASTQ F, VL, DQ, BW 바이트/워드/더블워드/쿼드워드 정수 값 브로드캐스트
VBROADCASTI32X2,VBROADCASTI64X2,VBROADCASTI32X4,VBROADCASTI32X8,VBROADCASTI64X4 F, VL, DQ, BW 두 개 또는 네 개의 더블 워드/쿼드 워드 정수 값 브로드캐스트

여러가지 종류의

설명 확장 집합 묘사
VALIGND,VALIGNQ F, VL 더블 워드 또는 쿼드 워드 벡터 정렬
VDBPSADBW BW 부호 없는 바이트에서 SAD(Souble block packed sum-absolute-differences)를 사용합니다.
VPABSQ F 포장된 절대값 쿼드워드
VPMAXSQ,VPMAXUQ F 포장된 부호/비부호 쿼드워드의 최대 수
VPMINSQ,VPMINUQ F 포장된 부호/비부호 쿼드어의 최소값
VPROLD,VPROLVD,VPROLQ,VPROLVQ,VPRORD,VPRORVD,VPRORQ,VPRORVQ F 비트를 왼쪽 또는 오른쪽으로 회전
VPSCATTERDD,VPSCATTERDQ,VPSCATTERQD,VPSCATTERQQ F 서명된 이중 단어 및 쿼드 단어 색인으로 포장된 이중 단어/쿼드 단어 산포
VSCATTERDPS,VSCATTERDPD,VSCATTERQPS,VSCATTERQPD F 이중 단어 및 쿼드 단어 인덱스가 부호화된 float32/float64 산포

집합별 새 명령어

충돌 탐지

AVX-512 충돌 감지(AVX-512CD)의 지침은 일반적으로 안전하게 벡터화할 수 없었던 루프 내 요소의 충돌 없는 하위 집합을 효율적으로 계산할 수 있도록 설계되었습니다.[8]

설명 이름. 묘사
VPCONFLICTD,VPCONFLICTQ 패킹된 이중 또는 쿼드워드 값 벡터 내에서 충돌 탐지 첫 번째 소스의 각 요소를 두 번째 소스의 동일한 위치 또는 이전 위치의 모든 요소와 비교하고 결과의 비트 벡터를 구성합니다.
VPLZCNTD,VPLZCNTQ 패킹된 이중 또는 쿼드워드 값에 대한 선행 0비트 수 계산 벡터라이즈드LZCNT설명
VPBROADCASTMB2Q,VPBROADCASTMW2D 벡터 레지스터에 브로드캐스트 마스크 8비트 마스크에서 쿼드워드 벡터 또는 16비트 마스크에서 더블워드 벡터

지수와 역수

AVX-512 지수 및 역수(AVX-512ER) 명령에는 AVX-512 기반의 명령보다 정확한 근사 역수 명령이 포함되어 있습니다. 상대 오차는 최대 2입니다−28.또한 이 함수에는 최대 2의−23 상대 오차를 갖는 두 개의 새 지수 함수가 포함되어 있습니다.[6]

설명 묘사
VEXP2PD,VEXP2PS 패킹된 단일 또는 이중 정밀 부동 소수점 값의 근사 지수 2^x 계산
VRCP28PD,VRCP28PS 패킹된 단일 또는 이중 정밀 부동 소수점 값의 근사 역수 계산
VRCP28SD,VRCP28SS 스칼라 단일 또는 이중 정밀 부동 소수점 값의 근사 역수 계산
VRSQRT28PD,VRSQRT28PS 패킹된 단일 또는 이중 정밀 부동 소수점 값의 제곱근 근사 역수 계산
VRSQRT28SD,VRSQRT28SS 스칼라 단일 또는 이중 정밀 부동 소수점 값의 제곱근 근사 역수 계산

프리페치

AVX-512 프리페치(AVX-512PF) 명령에는 AVX2 및 AVX-512에 도입된 새로운 스캐터 및 수집 기능에 대한 새로운 프리페치 작업이 포함되어 있습니다.T0prefetch는 레벨 1 캐시에 prefetch를 의미합니다.T1레벨 2 캐시에 프리페칭(prefetching)한다는 의미입니다.

설명 묘사
VGATHERPF0DPS,VGATHERPF0QPS,VGATHERPF0DPD,VGATHERPF0QPD 부호화된 dword/qword 인덱스를 사용하여 opmask k1 및 T0 힌트를 사용하여 단일/이중 정밀도 데이터를 포함하는 희소 바이트 메모리 위치를 프리페치합니다.
VGATHERPF1DPS,VGATHERPF1QPS,VGATHERPF1DPD,VGATHERPF1QPD 부호화된 dword/qword 인덱스를 사용하여 opmask k1 및 T1 힌트를 사용하여 단일/이중 정밀도 데이터를 포함하는 희소 바이트 메모리 위치를 프리페치합니다.
VSCATTERPF0DPS,VSCATTERPF0QPS,VSCATTERPF0DPD,VSCATTERPF0QPD 부호화된 dword/qword 인덱스를 사용하여 쓰기 의도가 있는 쓰기 마스크 k1 및 T0 힌트를 사용하여 단일/이중 정밀도 데이터를 포함하는 희소 바이트 메모리 위치를 프리페칭합니다.
VSCATTERPF1DPS,VSCATTERPF1QPS,VSCATTERPF1DPD,VSCATTERPF1QPD 부호화된 dword/qword 인덱스를 사용하여 쓰기 의도가 있는 쓰기 마스크 k1 및 T1 힌트를 사용하여 단일/이중 정밀도 데이터를 포함하는 희소 바이트 메모리 위치를 프리페치합니다.

4FMAPS 및 4VNNIW

두 명령 집합은 여러 번의 반복 처리를 수행합니다.그것들은 일반적으로 제온파이 제품에서만 발견됩니다.

설명 확장 집합 묘사
V4FMADDPS,V4FMADDSS 4FMAPS 패킹/스케일러 단일 정밀 부동 소수점 융합 다중 덧셈(4회 반복)
V4FNMADDPS,V4FNMADDSS 4FMAPS 패킹/스케일러 단일 정밀 부동점 융착 다중 덧셈 및 네거티브(4회 반복)
VP4DPWSSD 4VNNIW 이중 단어 누적(4회 반복) 부호어 도트 상품
VP4DPWSSDS 4VNNIW 단어 누적과 채도가 이중인 부호어 도트 상품(4회 반복)

BW, DQ 및 VBMI

AVX-512DQ는 새로운 더블 워드 및 쿼드 워드 명령어를 추가했습니다.AVX-512BW는 동일한 명령어의 바이트 및 워드 버전을 추가하고 AVX-512F의 더블 워드/쿼드 워드 명령어의 바이트 및 워드 버전을 추가합니다.AVX-512BW로 워드 폼만 얻는 몇몇 명령어는 AVX-512_VB로 바이트 폼을 획득합니다.MI 확장자(VPERMB,VPERMI2B,VPERMT2B,VPMULTISHIFTQB).

마스크 명령 집합에 두 가지 새로운 명령이 추가되었습니다.KADD그리고.KTEST(B와 W는 AVX-512DQ, D와 Q는 AVX-512BW로 형성됩니다.)단어 형태만 있던 나머지 마스크 명령어들은 AVX-512DQ로 바이트 형태를, AVX-512BW로 더블 워드/쿼드 워드 형태를 얻었습니다.KUNPCKBW로 확장되었습니다.KUNPCKWD그리고.KUNPCKDQAVX-512BW로 전송합니다.

AVX-512DQ에서 추가된 명령어 중에는 AVX-512F 버전이 포함되지 않은 몇 개의 SSE 및 AVX 명령어가 있으며, 그 중에는 두 개의 입력 비트와이즈 명령어와 추출/삽입 정수 명령어가 모두 포함됩니다.

완전히 새로운 지침이 아래에 설명되어 있습니다.

부동 소수점 명령어

세 가지 새로운 부동 소수점 연산이 도입되었습니다.AVX-512를 처음 사용하는 것이 아니기 때문에 팩킹/SIMD 및 스칼라 버전을 모두 사용할 수 있습니다.

VFPCLASS명령어들은 부동 소수점 값이 8개의 특별한 부동 소수점 값들 중 하나인지를 테스트합니다. 출력 마스크 레지스터의 비트를 트리거할 8개의 값들 중 어떤 값이 즉시 필드에 의해 제어됩니다.VRANGE명령어는 즉시 필드의 값에 따라 최소 또는 최대 연산을 수행하며, 이는 연산이 절대적으로 수행되는지 여부와 부호가 처리되는 방법을 개별적으로 제어할 수도 있습니다.VREDUCE명령어는 단일 소스에서 작동하며, 소스 값의 정수 부분에 해당 분수의 즉시 필드에 지정된 비트 수를 뺀 값입니다.

설명 확장 집합 묘사
VFPCLASSPS,VFPCLASSPD DQ 포장된 단일 정밀도 및 이중 정밀도 부동 소수점 값의 검정 유형.
VFPCLASSSS,VFPCLASSSD DQ 스칼라 단일 및 이중 정밀 부동 소수점 값의 검정 유형입니다.
VRANGEPS,VRANGEPD DQ 포장된 부동 소수점 값에 대한 범위 제한 계산.
VRANGESS,VRANGESD DQ 스칼라 부동 소수점 값에 대한 범위 제한 계산.
VREDUCEPS,VREDUCEPD DQ 포장된 부동 소수점 값에 대해 축소 변환을 수행합니다.
VREDUCESS,VREDUCESD DQ 스칼라 부동 소수점 값에 대해 축소 변환을 수행합니다.

기타 지시사항

설명 확장 집합 묘사
VPMOVM2D,VPMOVM2Q DQ 마스크 레지스터를 더블 또는 쿼드 워드 벡터 레지스터로 변환합니다.
VPMOVM2B,VPMOVM2W BW 마스크 레지스터를 바이트 또는 워드 벡터 레지스터로 변환합니다.
VPMOVD2M,VPMOVQ2M DQ 더블 또는 쿼드 워드 벡터 레지스터를 마스크 레지스터로 변환합니다.
VPMOVB2M,VPMOVW2M BW 바이트 또는 워드 벡터 레지스터를 마스크 레지스터로 변환합니다.
VPMULLQ DQ 포장된 쿼드워드를 곱하면 낮은 결과를 저장됩니다.VPMULLD의 쿼드워드 버전입니다.

VBMI2

바이트 및 워드 변형을 사용하여 VP COMPRESS 및 VPE 확장시프트 지침은 새것입니다.

설명 묘사
VPCOMPRESSB,VPCOMPRESSW 희소 팩킹된 바이트/워드 정수 값을 조밀 메모리/레지스터에 저장
VPEXPANDB,VPEXPANDW 조밀 메모리/레지스터에서 희소 팩킹된 바이트/워드 정수 값 로드
VPSHLD 포장된 데이터를 연결하고 논리적 왼쪽으로 이동
VPSHLDV 연결 및 가변 시프트 팩에 포함된 데이터 왼쪽 논리적
VPSHRD 포장된 데이터를 올바른 논리적으로 연결하고 이동
VPSHRDV 연결 및 가변 시프트 팩에 포함된 데이터를 올바른 논리

VNNI

VNNI는 벡터 신경망 명령을 의미합니다.[9]AVX512-VNNI는 아래에 설명된 EVEX 부호화 명령을 추가합니다.AVX-512F의 경우 이러한 명령어는 512비트 벡터에서 작동할 수 있으며 AVX-512VL은 128비트 및 256비트 벡터에 대한 지원을 추가로 제공합니다.

나중의 AVX-VNNI 확장은 128비트 또는 256비트 벡터에서만 작동할 수 있는 이러한 명령어의 VEX 인코딩을 추가합니다.AVX-VNNI는 AVX-512 제품군의 일부가 아니며 AVX-512F가 필요하지 않으며 독립적으로 구현할 수 있습니다.

설명 묘사
VPDPBUSD 서명되지 않은 바이트와 서명된 바이트 곱하기 및 추가
VPDPBUSDS 서명되지 않은 바이트와 서명된 바이트를 포화 상태로 곱하여 추가
VPDPWSSD 부호 있는 단어 정수 곱하기 및 덧셈
VPDPWSSDS 단어 정수에 채도를 곱하고 더하기

IFMA

정수 융합 다중 덧셈 명령.AVX512-IFMA는 아래에 설명된 EVEX 부호화 명령을 추가합니다.

별도의 AVX-IFMA 명령어 세트 확장은 이러한 명령어의 VEX 인코딩을 정의합니다.이 확장 기능은 AVX-512 제품군에 포함되지 않으며 독립적으로 구현할 수 있습니다.

설명 확장 집합 묘사
VPMADD52LUQ IFMA 서명되지 않은 52비트 정수를 팩으로 곱하고 낮은 52비트 제품을 64비트 누적기에 추가합니다.
VPMADD52HUQ IFMA 부호가 없는 52비트 정수를 패키지로 곱하고 높은 52비트 제품을 64비트 누적기에 추가합니다.

VPOPCNTDQ 및 BITALG

설명 확장 집합 묘사
VPOPCNTD,VPOPCNTQ VPOPCNTDQ 더블 워드/쿼드 워드에서 1로 설정된 비트 수를 반환합니다.
VPOPCNTB,VPOPCNTW BITALG 비트 수를 바이트/워드 단위로 1로 설정합니다.
VPSHUFBITQMB BITALG 바이트 인덱스를 사용하여 쿼드워드 요소의 비트를 마스크로 셔플

VP2교차로

설명 확장 집합 묘사
VP2INTERSECTD,VP2INTERSECTQ VP2교차로 마스크 레지스터 쌍에 대한 이중 워드/쿼드 워드 간 교집합 계산

GFNI

갈루아 필드 새 명령어는 AES, 카멜리아, SM4 에서 사용되는 Rijndael 스타일의 S-박스를 구현하는 데 사용할 수 있기 때문에 [10]암호화에 유용합니다.[11]이 명령어는 네트워킹 및 신호 처리에서 비트 조작에도 사용될 수 있습니다.[10]

GFNI는 독립 실행형 명령어 세트 확장으로 AVX 또는 AVX-512와 별도로 활성화할 수 있습니다.AVX 및 AVX-512F 지원이 CPU에 의해 지시되는지 여부에 따라, GFNI 지원은 128비트, 256비트 또는 512비트 벡터에서 작동하는 레거시(SSE), VEX 또는 EVEX 부호화 명령어를 활성화합니다.

설명 묘사
VGF2P8AFFINEINVQB 갈루아 장 아핀 변환 역수
VGF2P8AFFINEQB 갈루아 장 아핀 변환
VGF2P8MULB 갈루아 장 곱하기 바이트

VPCLMULQDQ

AVX-512F를 사용하는 VPCLMULQDQ는 PCLMULQDQ 명령의 EVEX 인코딩된 512비트 버전을 추가합니다.AVX-512VL을 사용하면 EVEX 인코딩 256비트 및 128비트 버전이 추가됩니다.VPCLMULQDQ 단독(즉, AVX512가 아닌 CPU의 경우)은 VEX 인코딩 256비트 버전만 추가합니다. (VEX 인코딩 128비트 버전의 가용성은 PCLMULQDQ와 AVX라는 서로 다른 CPUID 비트로 표시됩니다.)128비트 이상의 명령어 변형은 입력 레지스터의 각 128비트 부분에서 동일한 연산을 수행하지만, 다른 128비트 필드에서 쿼드워드를 선택하도록 확장하지는 않습니다(imm8 피연산자의 의미는 동일: 128비트 필드의 낮음 또는 높음 쿼드워드를 선택함).

설명 묘사
VPCLMULQDQ 반송파가 없는 곱셈 쿼드워드

VAE

VEX와 EVEX가 인코딩한 AES 명령어.명령어의 128비트보다 더 넓은 변형은 입력 레지스터의 각 128비트 부분에서 동일한 동작을 수행합니다.VEX 버전은 AVX-512 지원 없이 사용할 수 있습니다.

설명 묘사
VAESDEC AES 암호 해독 흐름 한 라운드 수행
VAESDECLAST AES 암호 해독 흐름의 마지막 라운드 수행
VAESENC AES 암호화 흐름 한 라운드 수행
VAESENCLAST AES 암호화 흐름의 마지막 라운드 수행

BF16

Bfloat16 번호에서 작동하는 AI 가속 지침.

설명 묘사
VCVTNE2PS2BF16 두 개의 벡터를 하나의 밀집된 단일 정밀도수로 변환 16개의 밀집된 Bfloat 숫자로 변환
VCVTNEPS2BF16 하나의 밀집된 단일 정밀도 수 벡터를 하나의 밀집된 Bfloat16 수 벡터로 변환
VDPBF16PS 두 Bfloat16 쌍의 점곱을 계산하고 그 결과를 하나의 패킹된 단일 정밀도 수로 누적합니다.

FP16

이전의 F16C 명령어 세트의 확장으로, 이진 부동 소수점 숫자(FP16, float16 또는 반정밀 부동 소수점 숫자라고도 함)에 대한 포괄적인 지원을 추가합니다.새로운 명령어는 이전에 단일 및 이중 정밀 부동 소수점 번호에 사용할 수 있었던 대부분의 연산을 구현하고 새로운 복합 숫자 명령어 및 변환 명령어를 도입합니다.스칼라 및 팩킹 작업이 지원됩니다.

단일 및 이중 정밀도 포맷 명령과 달리, 반정밀 피연산자들은 조건적으로 0(FTZ)으로 플러시되지도 않고, 조건적으로 0(DAZ)으로 취급되지도 않습니다.MXCSR설정.정상 이하의 값은 FP16 숫자의 전체 동적 범위를 사용하기 쉽도록 하드웨어에 의해 최대 속도로 처리됩니다.FP32 및 FP64 번호를 생성하는 지침은 여전히 다음을 존중합니다.MXCSR.FTZ[12]

산술 명령어

설명 묘사
VADDPH,VADDSH 포장된/스케일러 FP16 번호를 추가합니다.
VSUBPH,VSUBSH 포장된/스칼라 FP16 숫자를 풉니다.
VMULPH,VMULSH 포장된/스케일러 FP16 숫자를 곱합니다.
VDIVPH,VDIVSH 포장된/스케일러 FP16 번호를 나눕니다.
VSQRTPH,VSQRTSH 패킹/스케일러 FP16 숫자의 제곱근을 계산합니다.
VFMADD{132, 213, 231}PH,VFMADD{132, 213, 231}SH 포장된/스케일러 FP16 숫자를 곱하기 추가합니다.
VFNMADD{132, 213, 231}PH,VFNMADD{132, 213, 231}SH 다중 덧셈 FP16 번호가 무효화되었습니다.
VFMSUB{132, 213, 231}PH,VFMSUB{132, 213, 231}SH 곱셈 뺄셈 FP16 번호.
VFNMSUB{132, 213, 231}PH,VFNMSUB{132, 213, 231}SH 배수-감산 포장/스케일러 FP16 번호가 음수입니다.
VFMADDSUB{132, 213, 231}PH 곱셈 덧셈(홀수 벡터 원소) 또는 곱셈 뺄셈(짝수 벡터 원소)이 FP16 숫자로 채워집니다.
VFMSUBADD{132, 213, 231}PH 곱셈 뺄셈(홀수 벡터 요소) 또는 곱셈 덧셈(짝수 벡터 요소)이 FP16 숫자로 채워집니다.
VREDUCEPH,VREDUCESH 패킹된/스케일러 FP16 번호의 축소 변환을 수행합니다.
VRNDSCALEPH,VRNDSCALESH 팩킹/스케일러 FP16 숫자를 지정된 분수 비트 수로 반올림합니다.
VSCALEFPH,VSCALEFSH 패킹된/스케일러 FP16 숫자에 2의 거듭제곱을 곱하여 배율을 조정합니다.

복잡한 산술 명령어

설명 묘사
VFMULCPH,VFMULCSH 포장된/스칼라 복소수 FP16 숫자를 곱합니다.
VFCMULCPH,VFCMULCSH 포장된/스칼라 복소수 FP16 숫자를 곱합니다.연산의 복잡한 컨쥬게이트 형식입니다.
VFMADDCPH,VFMADDCSH 팩킹/스케일러 복소수 FP16 숫자를 곱하기.
VFCMADDCPH,VFCMADDCSH 팩킹/스케일러 복소수 FP16 숫자를 곱하기.연산의 복잡한 컨쥬게이트 형식입니다.

대략적인 상호 지침

설명 묘사
VRCPPH,VRCPSH 포장된/스칼라 FP16 숫자의 대략적인 역수를 계산합니다.근사치의 최대 상대 오차는 2−11+2보다−14 작습니다.
VRSQRTPH,VRSQRTSH 포장된/스칼라 FP16 숫자의 대략적인 역수 제곱근을 계산합니다.근사치의 최대 상대 오차는 2보다−14 작습니다.

비교설명서

설명 묘사
VCMPPH,VCMPSH 포장된/스칼라 FP16 수치를 비교하여 마스크 레지스터에 저장합니다.
VCOMISH 스칼라 FP16 수치를 비교하여 결과를 플래그 레지스터에 저장합니다.소스 피연산자가 QNaN 또는 SNaN인 경우 예외 신호를 보냅니다.
VUCOMISH 스칼라 FP16 수치를 비교하여 결과를 플래그 레지스터에 저장합니다.소스 피연산자가 SNaN인 경우에만 예외 신호를 보냅니다.
VMAXPH,VMAXSH 소스 팩킹/스칼라 FP16 번호의 각 수직 쌍의 최대값을 선택합니다.
VMINPH,VMINSH 소스 팩킹/스칼라 FP16 번호의 각 수직 쌍의 최소값을 선택합니다.
VFPCLASSPH,VFPCLASSSH 특수 범주(NaN, 무한대, 음의 0 등)에 대해 팩킹/스케일러 FP16 번호를 테스트하고 그 결과를 마스크 레지스터에 저장합니다.

변환 지시사항

설명 묘사
VCVTW2PH 포장된 부호가 있는 16비트 정수를 FP16 숫자로 변환합니다.
VCVTUW2PH 포장된 부호 없는 16비트 정수를 FP16 숫자로 변환합니다.
VCVTDQ2PH packed signed 32비트 정수를 FP16 숫자로 변환합니다.
VCVTUDQ2PH 포장된 부호 없는 32비트 정수를 FP16 숫자로 변환합니다.
VCVTQQ2PH 포장된 서명된 64비트 정수를 FP16 숫자로 변환합니다.
VCVTUQQ2PH 포장된 부호 없는 64비트 정수를 FP16 숫자로 변환합니다.
VCVTPS2PHX 포장된 FP32 번호를 FP16 번호로 변환합니다.와는 달리VCVTPS2PHF16C 부터,VCVTPS2PHX는 브로드캐스트도 지원하는 다른 인코딩을 가지고 있습니다.
VCVTPD2PH 포장된 FP64 숫자를 FP16 숫자로 변환합니다.
VCVTSI2SH 스칼라 부호가 있는 32비트 또는 64비트 정수를 FP16 숫자로 변환합니다.
VCVTUSI2SH 스칼라 부호 없는 32비트 또는 64비트 정수를 FP16 숫자로 변환합니다.
VCVTSS2SH 스칼라 FP32 번호를 FP16 번호로 변환합니다.
VCVTSD2SH 스칼라 FP64 번호를 FP16 번호로 변환합니다.
VCVTPH2W,VCVTTPH2W 포장된 FP16 숫자를 부호가 있는 16비트 정수로 변환합니다.VCVTPH2W에 따라 값을 반올림합니다.MXCSR등록하세요.VCVTTPH2W0을 향해 가는 회진
VCVTPH2UW,VCVTTPH2UW 포장된 FP16 숫자를 부호 없는 16비트 정수로 변환합니다.VCVTPH2UW에 따라 값을 반올림합니다.MXCSR등록하세요.VCVTTPH2UW0을 향해 가는 회진
VCVTPH2DQ,VCVTTPH2DQ 포장된 FP16 숫자를 부호가 있는 32비트 정수로 변환합니다.VCVTPH2DQ에 따라 값을 반올림합니다.MXCSR등록하세요.VCVTTPH2DQ0을 향해 가는 회진
VCVTPH2UDQ,VCVTTPH2UDQ 포장된 FP16 숫자를 부호 없는 32비트 정수로 변환합니다.VCVTPH2UDQ에 따라 값을 반올림합니다.MXCSR등록하세요.VCVTTPH2UDQ0을 향해 가는 회진
VCVTPH2QQ,VCVTTPH2QQ 포장된 FP16 숫자를 서명된 64비트 정수로 변환합니다.VCVTPH2QQ에 따라 값을 반올림합니다.MXCSR등록하세요.VCVTTPH2QQ0을 향해 가는 회진
VCVTPH2UQQ,VCVTTPH2UQQ 포장된 FP16 숫자를 부호 없는 64비트 정수로 변환합니다.VCVTPH2UQQ에 따라 값을 반올림합니다.MXCSR등록하세요.VCVTTPH2UQQ0을 향해 가는 회진
VCVTPH2PSX 포장된 FP16 번호를 FP32 번호로 변환합니다.와는 달리VCVTPH2PSF16C 부터,VCVTPH2PSX는 브로드캐스트도 지원하는 다른 인코딩을 가지고 있습니다.
VCVTPH2PD 포장된 FP16 숫자를 FP64 숫자로 변환합니다.
VCVTSH2SI,VCVTTSH2SI 스칼라 FP16 숫자를 부호 있는 32비트 또는 64비트 정수로 변환합니다.VCVTSH2SI에 따라 값을 반올림합니다.MXCSR등록하세요.VCVTTSH2SI0을 향해 가는 회진
VCVTSH2USI,VCVTTSH2USI 스칼라 FP16 숫자를 부호 없는 32비트 또는 64비트 정수로 변환합니다.VCVTSH2USI에 따라 값을 반올림합니다.MXCSR등록하세요.VCVTTSH2USI0을 향해 가는 회진
VCVTSH2SS 스칼라 FP16 번호를 FP32 번호로 변환합니다.
VCVTSH2SD 스칼라 FP16 번호를 FP64 번호로 변환합니다.

분해지시서

설명 묘사
VGETEXPPH,VGETEXPSH 패킹/스케일러 FP16 번호의 지수 성분을 FP16 번호로 추출합니다.
VGETMANTPH,VGETMANTSH 포장/스케일러 FP16 번호의 가수 성분을 FP16 번호로 추출합니다.

명령 이동

설명 묘사
VMOVSH 메모리 또는 벡터 레지스터 간에 스칼라 FP16 번호를 이동합니다.
VMOVW 메모리 또는 범용 레지스터로 스칼라 FP16 번호를 이동합니다.

EVEX 인코딩 버전의 레거시 지침

그룹. 레거시 인코딩 지침들 AVX-512
확장자
SSE
SSE2
MMX
AVX
SSE3
SSE4
AVX2
FMA
F VL BW DQ
VADD 네. 네. 아니요. VADDPD,VADDPS,VADDSD,VADDSS Y Y N N
VAND VANDPD,VANDPS,VANDNPD,VANDNPS N Y
VCMP VCMPPD,VCMPPS,VCMPSD,VCMPSS Y N N
VCOM VCOMISD,VCOMISS
VDIV VDIVPD,VDIVPS,VDIVSD,VDIVSS Y
VCVT VCVTDQ2PD,VCVTDQ2PS,VCVTPD2DQ,VCVTPD2PS,VCVTPH2PS,VCVTPS2PH,VCVTPS2DQ,VCVTPS2PD,VCVTSD2SI,VCVTSD2SS,VCVTSI2SD,VCVTSI2SS,VCVTSS2SD,VCVTSS2SI,VCVTTPD2DQ,VCVTTPS2DQ,VCVTTSD2SI,VCVTTSS2SI
VMAX VMAXPD,VMAXPS,VMAXSD,VMAXSS
VMIN VMINPD,VMINPS,VMINSD,VMINSS N
VMOV VMOVAPD,VMOVAPS,VMOVD,VMOVQ,VMOVDDUP,VMOVHLPS,VMOVHPD,VMOVHPS,VMOVLHPS,VMOVLPD,VMOVLPS,VMOVNTDQA,VMOVNTDQ,VMOVNTPD,VMOVNTPS,VMOVSD,VMOVSHDUP,VMOVSLDUP,VMOVSS,VMOVUPD,VMOVUPS,VMOVDQA32,VMOVDQA64,VMOVDQU8,VMOVDQU16,VMOVDQU32,VMOVDQU64 Y Y
VMUL VMULPD,VMULPS,VMULSD,VMULSS N
VOR VORPD,VORPS N Y
VSQRT VSQRTPD,VSQRTPS,VSQRTSD,VSQRTSS Y N
VSUB VSUBPD,VSUBPS,VSUBSD,VSUBSS
부코미 VUCOMISD,VUCOMISS N
VUNPCK VUNPCKHPD,VUNPCKHPS,VUNPCKLPD,VUNPCKLPS Y
VXOR VXORPD,VXORPS N Y
VEXTRACTPS 아니요. 네. 아니요. VEXTRACTPS Y N N
VINSERTPS VINSERTPS
VPEXTR VPEXTRB,VPEXTRW,VPEXTRD,VPEXTRQ N Y Y
VPINSR VPINSRB,VPINSRW,VPINSRD,VPINSRQ
VPACK 네. 네. 네. VPACKSSWB,VPACKSSDW,VPACKUSDW,VPACKUSWB Y N
VPADD VPADDB,VPADDW,VPADDD,VPADDQ,VPADDSB,VPADDSW,VPADDUSB,VPADDUSW Y
VPAND VPANDD,VPANDQ,VPANDND,VPANDNQ N
VPAVG VPAVGB,VPAVGW N Y
VPCMP VPCMPEQB,VPCMPEQW,VPCMPEQD,VPCMPEQQ,VPCMPGTB,VPCMPGTW,VPCMPGTD,VPCMPGTQ Y
VPMAX VPMAXSB,VPMAXSW,VPMAXSD,VPMAXSQ,VPMAXUB,VPMAXUW,VPMAXUD,VPMAXUQ
VPMIN VPMINSB,VPMINSW,VPMINSD,VPMINSQ,VPMINUB,VPMINUW,VPMINUD,VPMINUQ
VPMOV VPMOVSXBW,VPMOVSXBD,VPMOVSXBQ,VPMOVSXWD,VPMOVSXWQ,VPMOVSXDQ,VPMOVZXBW,VPMOVZXBD,VPMOVZXBQ,VPMOVZXWD,VPMOVZXWQ,VPMOVZXDQ
VPMUL VPMULDQ,VPMULUDQ,VPMULHRSW,VPMULHUW,VPMULHW,VPMULLD,VPMULLQ,VPMULLW
VPOR VPORD,VPORQ N
VPSSUB VPSUBB,VPSUBW,VPSUBD,VPSUBQ,VPSUBSB,VPSUBSW,VPSUBUSB,VPSUBUSW Y
VPUNPCK VPUNPCKHBW,VPUNPCKHWD,VPUNPCKHDQ,VPUNPCKHQDQ,VPUNPCKLBW,VPUNPCKLWD,VPUNPCKLDQ,VPUNPCKLQDQ
VPXOR VPXORD,VPXORQ N
VPSADBW VPSADBW N Y
VPSHUF VPSHUFB,VPSHUFHW,VPSHUFLW,VPSHUFD,VPSLLDQ,VPSLLW,VPSLLD,VPSLLQ,VPSRAW,VPSRAD,VPSRAQ,VPSRLDQ,VPSRLW,VPSRLD,VPSRLQ,VPSLLVW,VPSLLVD,VPSLLVQ,VPSRLVW,VPSRLVD,VPSRLVQ,VPSHUFPD,VPSHUFPS Y
VEXTRACT 아니요. 네. 네. VEXTRACTF32X4,VEXTRACTF64X2,VEXTRACTF32X8,VEXTRACTF64X4,VEXTRACTI32X4,VEXTRACTI64X2,VEXTRACTI32X8,VEXTRACTI64X4 N Y
VINSERT VINSERTF32x4,VINSERTF64X2,VINSERTF32X8, VINSERTF64x4,VINSERTI32X4,VINSERTI64X2,VINSERTI32X8,VINSERTI64X4
VPABS VPABSB,VPABSW,VPABSD,VPABSQ Y N
VPALIGRINR VPALIGNR N
VPERM VPERMD,VPERMILPD,VPERMILPS,VPERMPD,VPERMPS,VPERMQ Y N
VMADD VPMADDUBSW VPMADDWD N Y
VMADD 아니요. 아니요. 네. VFMADD132PD,VFMADD213PD,VFMADD231PD,VFMADD132PS,VFMADD213PS,VFMADD231PS,VFMADD132SD,VFMADD213SD,VFMADD231SD,VFMADD132SS,VFMADD213SS,VFMADD231SS Y N
VFMADSUB VFMADDSUB132PD,VFMADDSUB213PD,VFMADDSUB231PD,VFMADDSUB132PS,VFMADDSUB213PS,VFMADDSUB231PS
VFMSUBADD VFMSUBADD132PD,VFMSUBADD213PD,VFMSUBADD231PD,VFMSUBADD132PS,VFMSUBADD213PS,VFMSUBADD231PS
VFMSUB VFMSUB132PD,VFMSUB213PD,VFMSUB231PD,VFMSUB132PS,VFMSUB213PS,VFMSUB231PS,VFMSUB132SD,VFMSUB213SD,VFMSUB231SD,VFMSUB132SS,VFMSUB213SS,VFMSUB231SS
VFNMADD VFNMADD132PD,VFNMADD213PD,VFNMADD231PD,VFNMADD132PS,VFNMADD213PS,VFNMADD231PS,VFNMADD132SD,VFNMADD213SD,VFNMADD231SD,VFNMADD132SS,VFNMADD213SS,VFNMADD231SS
VFNMSUB VFNMSUB132PD,VFNMSUB213PD,VFNMSUB231PD,VFNMSUB132PS,VFNMSUB213PS,VFNMSUB231PS,VFNMSUB132SD,VFNMSUB213SD,VFNMSUB231SD,VFNMSUB132SS,VFNMSUB213SS,VFNMSUB231SS
VGATHER VGATHERDPS,VGATHERDPD,VGATHERQPS,VGATHERQPD
VPGATHER VPGATHERDD,VPGATHERDQ,VPGATHERQD,VPGATHERQQ
VPSRAV VPSRAVW,VPSRAVD,VPSRAVQ Y

AVX-512가 있는 CPU

부분 집합 F 시디 음.정말 PF 4FMAPS 4VNNIW VPOPCNTDQ VL DQ BW IFMA VBMI VNNI BF16 VBMI2 BITALG VPCLMULQDQ GFNI VAE VP2교차로 FP16
나이츠 랜딩 (제선픽스200, 2016) 네. 네. 아니요.
나이츠 밀 (Xeon Phix205, 2017) 네. 아니요.
스카이레이크-SP, 스카이레이크-X (2017) 아니요. 아니요. 네. 아니요.
대포호 (2018) 네. 아니요.
캐스케이드 호수 (2019) 아니요. 네. 아니요.
쿠퍼 호수 (2020) 네. 아니요.
얼음호수 (2019) 네. 아니요. 네. 아니요.
타이거 레이크 (2020) 네. 아니요.
로켓레이크 (2021) 아니요.
앨더레이크 (2021) 부분적Note 1 부분적Note 1
젠4 (2022) 네. 네. 아니요.
사파이어 래피즈 (2023) 아니요. 네.

^주 1: 인텔은 올더 레이크 마이크로프로세서에 대한 AVX-512 계열의 명령을 공식적으로 지원하지 않습니다.Intel은 고객이 AVX-512를 활성화하는 것을 방지하기 위해 Alder Lake 마이크로프로세서의 최근 스텝핑에서 실리콘으로 AVX-512를 비활성화했습니다.[32]이전의 Alder Lake 제품군 CPU에서는 BIOS와 마이크로코드 리비전의 일부 레거시 조합에서 AVX-512용 실리콘을 포함하지 않는 모든 효율성 코어를 비활성화할 때 AVX-512 제품군 명령을 실행할 수 있었습니다.[33][34][22]

성능

Intel Vectorization Advisor(2017 버전부터)는 기본 AVX-512 성능 및 벡터 코드 품질 분석을 지원합니다("Core", Xeon 및 Intel Xeon Phi 프로세서용).기존의 핫스팟 프로파일, 어드바이저 권장사항 및 Intel 컴파일러 벡터화 진단의 "무정한" 통합과 더불어 어드바이저 서베이 분석은 AVX-512 ISA 메트릭과 새로운 AVX-512 고유의 "특성(예: 스캐터, 압축/확장, 마스크 활용)을 제공합니다.[35][36]

일부 프로세서(대부분 Ice Lake Intel 이전)에서는 AVX-512 명령어로 인해 이전 프로세서보다 더 큰 주파수 조절이 발생하여 혼합 워크로드에 대한 페널티가 발생할 수 있습니다.추가 다운클럭은 벡터의 512비트 폭에 의해 트리거되며 실행되는 명령어의 특성에 따라 달라지며 AVX-512(AVX-512VL)의 128비트 또는 256비트 부분을 사용하면 트리거되지 않습니다.따라서 gccclang은 기본적으로 Intel 타겟에 256비트 벡터를 사용하는 것을 선호합니다.[37][38][39]

참고 항목

참고문헌

  • Kusswurm, Daniel (2022). Modern parallel programming with C++ and Assembly language : X86 SIMD development using AVX, AVX2, and AVX-512. [United States]. ISBN 978-1-4842-7918-2. OCLC 1304243196.{{cite book}}: CS1 유지 관리: 위치 누락 게시자(링크)
  1. ^ a b c d e f James Reinders (23 July 2013). "AVX-512 Instructions". Intel. Retrieved 20 August 2013.
  2. ^ a b 쿠스웜 2022, 223쪽.
  3. ^ a b c James Reinders (17 July 2014). "Additional AVX-512 instructions". Intel. Retrieved 3 August 2014.
  4. ^ Anton Shilov. "Intel 'Skylake' processors for PCs will not support AVX-512 instructions". Kitguru.net. Retrieved 2015-03-17.
  5. ^ "Intel will add deep-learning instructions to its processors". 14 October 2016.
  6. ^ a b c d e f g h "Intel Architecture Instruction Set Extensions Programming Reference" (PDF). Intel. Retrieved 2014-01-29.
  7. ^ a b c d e f "Intel Architecture Instruction Set Extensions and Future Features Programming Reference". Intel. Retrieved 2017-10-16.
  8. ^ "AVX-512 Architecture/Demikhovsky Poster" (PDF). Intel. Retrieved 25 February 2014.
  9. ^ "Intel® Deep Learning Boost" (PDF). Intel. Retrieved 2021-10-11.
  10. ^ a b "Galois Field New Instructions (GFNI) Technology Guide". networkbuilders.intel.com.
  11. ^ Kivilinna, Jussi (19 April 2023). "camellia-simd-aesni". GitHub. Newer x86-64 processors also support Galois Field New Instructions (GFNI) which allow implementing Camellia s-box more straightforward manner and yield even better performance.
  12. ^ "Intel® AVX512-FP16 Architecture Specification, June 2021, Revision 1.0, Ref. 347407-001US" (PDF). Intel. 2021-06-30. Retrieved 2021-07-04.
  13. ^ "Intel Xeon Phi Processor product brief". Intel. Retrieved 12 October 2016.
  14. ^ "Intel unveils X-series platform: Up to 18 cores and 36 threads, from $242 to $2,000". Ars Technica. Retrieved 2017-05-30.
  15. ^ "Intel Advanced Vector Extensions 2015/2016: Support in GNU Compiler Collection" (PDF). Gcc.gnu.org. Retrieved 2016-10-20.
  16. ^ Patrizio, Andy (21 September 2015). "Intel's Xeon roadmap for 2016 leaks". Itworld.org. Retrieved 2016-10-20.
  17. ^ "Intel Core i9-11900K Review - World's Fastest Gaming Processor?". www.techpowerup.com.
  18. ^ ""Add rocketlake to gcc" commit". gcc.gnu.org.
  19. ^ "Intel Celeron 6305 Processor (4M Cache, 1.80 GHz, with IPU) Product Specifications". ark.intel.com. Archived from the original on 2020-10-18. Retrieved 2020-11-10.
  20. ^ Laptop Murah Kinerja Boleh Diadu HP 14S DQ2518TU, retrieved 2021-08-08
  21. ^ "Using the GNU Compiler Collection (GCC): x86 Options". GNU. Retrieved 2019-10-14.
  22. ^ a b Cutress, Ian; Frumusanu, Andrei. "The Intel 12th Gen Core i9-12900K Review: Hybrid Performance Brings Hybrid Complexity". www.anandtech.com. Retrieved 5 November 2021.
  23. ^ Larabel, Michael. "Intel Core i9 12900K "Alder Lake" AVX-512 On Linux". www.phoronix.com. Retrieved 2021-11-08.
  24. ^ Larabel, Michael. "AVX-512 Performance Comparison: AMD Genoa vs. Intel Sapphire Rapids & Ice Lake". www.phoronix.com. Retrieved 2023-01-19.
  25. ^ "The industry's first high-performance x86 SOC with server-class CPUs and integrated AI coprocessor technology". 2 August 2022. Archived from the original on December 12, 2019.{{cite web}}: CS1 maint : URL(링크) 부적합
  26. ^ "x86, x64 Instruction Latency, Memory Latency and CPUID dumps (instlatx64)". users.atw.hu.
  27. ^ "AMD Zen 4 Based Ryzen CPUs May Feature Up to 24 Cores, Support for AVX512 Vectors". Hardware Times. 2021-05-23. Retrieved 2021-09-02.
  28. ^ Hagedoorn, Hilbert. "AMD working on a prodigious 96-core EPYC processor". Guru3D.com. Retrieved 2021-05-25.
  29. ^ clamchowder (2021-08-23). "Details on the Gigabyte Leak". Chips And Cheese. Retrieved 2022-06-10.
  30. ^ W1zzard. "AMD Answers Our Zen 4 Tech Questions, with Robert Hallock". TechPowerUp. Retrieved 2022-05-29.
  31. ^ Larabel, Michael (2022-09-26). "AMD Zen 4 AVX-512 Performance Analysis On The Ryzen 9 7950X". www.phoronix.com.
  32. ^ Alcorn, Paul (2022-03-02). "Intel Nukes Alder Lake's AVX-512 Support, Now Fuses It Off in Silicon". Tom's Hardware. Retrieved 2022-03-07.
  33. ^ Cutress, Ian; Frumusanu, Andrei (2021-08-19). "Intel Architecture Day 2021: Alder Lake, Golden Cove, and Gracemont Detailed". AnandTech. Retrieved 2021-08-25.
  34. ^ Alcorn, Paul (2021-08-19). "Intel Architecture Day 2021: Alder Lake Chips, Golden Cove and Gracemont Cores". Tom's Hardware. Retrieved 2021-08-21.
  35. ^ "Intel Advisor XE 2016 Update 3 What's new - Intel Software". Software.intel.com. Retrieved 2016-10-20.
  36. ^ "Intel Advisor - Intel Software". Software.intel.com. Retrieved 2016-10-20.
  37. ^ Cordes, Peter. "SIMD instructions lowering CPU frequency". Stack Overflow.
  38. ^ Cordes, Peter. "why does gcc auto-vectorization for tigerlake use ymm not zmm registers". Stack Overflow.
  39. ^ "LLVM 10.0.0 Release Notes".