최근 수정 시각 : 2017-12-19 23:39:48

고급 벡터 확장

AVX2에서 넘어옴
Advanced Vector Extensions.
1. 개요2. 특징
2.1. AVX2.2. AVX22.3. AVX-512
3. 지원 프로세서
3.1. AVX3.2. AVX23.3. AVX-512
4. 관련 항목

1. 개요

2008년 4월 인텔 개발자 포럼에서 발표된 x86 SIMD 명령어 세트로 SSE 명령어 세트 시리즈의 후속작이다.
2011년에 출시한 인텔 샌디브릿지 마이크로아키텍처에서 최초로 지원한다.

2. 특징

MMX에서 SSE로 넘어가던 시기에서 최대 4배에 이르는 성능 향상폭을 기록했던 것 처럼, AVX의 지원은 최대 2.5배에 이르는 성능 향상폭을 기록한다.
성능 향상에 대한 상세 설명

샌디브릿지가 엄청난 인기를 끌 수 있었던 비결 중의 하나이기도 하다.
반면에 펜티엄, 셀러론 시리즈에서는 보통 지원하지 않으며, 샌디브릿지 세대에 들어서야 SSE4.x를 지원하게 되었다.

2.1. AVX

SIMD 레지스터 폭이 128비트에서 256비트로 증가되었고, 2 피연산자 구조에서 3 피연산자 구조로 변경[1]되었다. 다만 3 피연산자 연산은 SIMD 명령어에 한정되고, EAX와 같은 범용 레지스터를 지원하지 않는다. 또 SIMD 메모리 피연산자의 정렬 요구도 완화되었으며 새롭게 VEX 코딩 방식이 도입되었다.
그리고 128비트인 SSE를 지원한다는 장점이 있다.

참고로 AVX는 GCC 4.6, 인텔 컴파일러 11.1, Open64 컴파일러 4.5.1, Free Pascal 컴파일러 2.7.1부터 지원하며, 운영체제는 Windows 7 SP1, 리눅스 커널 2.6.30 이상부터 지원한다.

2.2. AVX2

인텔 하스웰 마이크로아키텍처에서 최초로 지원한다.

대부분의 벡터 정수 SSE와 256비트 AVX 명령어가 확장되었고, AVX에서 지원하지 않았던 범용 레지스터에서의 3 피연산자 덧셈/곱셈 연산을 지원하며, FMA3과도 호환된다. 또한 벡터 주소 방식을 지원하고, 벡터 요소의 비 연속 메모리 위치의 로드를 지원하며 벡터 시프트도 가능하게 되었다.

2.3. AVX-512

제온 Phi에서 먼저 도입되었으며, 데스크탑 CPU 중에선 스카이레이크-X에서 최초로 지원한다. 요약하자면 256-bit 단위이던 AVX2가 512-bit로 확장된 명령어 세트이다. 기존 AVX와 달리 프로세서별로 지원 명령어가 파편화되어 있다(...)[2]

프라임95 개발진인 GIMPS 측에 따르면 AVX-512 지원의 경우 이를 제대로 사용하려면 쿼드 채널 메모리가 필요하다고 한다.[3] 현 세대 기준에서는 제대로 지원하는 상용 프로그램이 거의 없다고 봐도 된다. 2017년 12월 기준 Prime95조차도 완벽하게 구동되는 게 아니며,[4] 린팩조차도 AVX-512 지원 자체는 몇년 전부터 해왔지만 제대로 지원하는 건 극히 최근의 일이기 때문.

기존의 AVX-256도 구세대 SSE나 MMX에 비해 엄청난 강도로 인해 많은 오버클러커들을 좌절시켰지만 이 AVX-512는 그보다 더더욱 심각한 수준이라 FM 수준의 오버클럭 안정화를 고수하던 매니아 유저들마저도 회의적으로 만들 정도의 막장스러운 부하 강도를 자랑한다. 물론 그에 비례해서 성능도 오르지만, 어디까지나 제대로 지원이 된다는 전제 하이니.

3. 지원 프로세서

3.1. AVX

인텔
AMD

3.2. AVX2

인텔
AMD

3.3. AVX-512

인텔

4. 관련 항목



[1] 기존의 SSE에서는 최대 'A=A+B' 연산밖에 불가능하지만, AVX에서는 'A=B+C'가 가능하다. 별 것 아닌 것 같아보이겠지만, A = 10 + 5라는 연산을 SSE에서는 A = 10을 먼저 수행하고 그 다음에 A = A+ 5로 총 2회의 연산이 들어가며, AVX에서는 A = 10 + 5로 한번에 연산할 수 있다는 것이다. 상당히 큰 영향이 있을 수밖에 없다.[2] 어느 쪽이든 AVX-512F와 AVX-512CD는 기본적으로 지원하나 그 이상부턴 HEDT/제온 기반 CPU인가 제온 Phi 기반 CPU인가에 따라서 확연하게 갈리게 된다.[3] 512bit나 되는 거대한 레지스터 폭을 가진 연산은 그에 맞는 대역폭을 확보해야 하는데, 현 세대 기준으론 쿼드 채널 이상에서나 그게 가능하기 때문.[4] Trial factoring에 한해서만 AVX-512를 사용한다고 한다. http://www.mersenneforum.org/showthread.php?t=22141