고급 벡터 확장

Advanced Vector Extensions.

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

AVX2를 512-bit로 확장한 명령어 세트이다.

3 지원 프로세서

3.1 AVX

인텔

AMD

3.2 AVX2

인텔

AMD

3.3 AVX-512

인텔

4 관련 항목

  1. 기존의 SSE에서는 최대 'A=A+B' 연산밖에 불가능하지만, AVX에서는 'A=B+C'가 가능하다.