-
CPU에서 제공하는 명령어셋이며, 동일한 형태 및 구조의 여러 데이터를 한번에 처리하는 병렬처리기법
- Intel, AMD
- MMX, SSE, SSE2, AVX, AVX2, AVX512F
- ARM
-
벡터, 행렬 데이터 구조에 적합해서 관련 연산을 수행하는 다양한 곳에서 최적화를 위해 사용됨.
-
SIMD 명령어를 쓰기 위해서는 벡터 레지스터에 배치 가능하도록 메모리에 Align 되어있어야 하므로, 전용 수학라이브러리를 사용하는 경우가 많음
- 아래와 같은 형태로 메모리에 Align이 되어야 한다.
- 배열과의 차이점은 아래 코드 같은 경우 메모리 시작지점을 Align하는것은 물론이고 각각의 원소하나의 크기를 align한 크기로 맞춘다.
- 반면 배열의 경우에는 원소의 메모리 배치가 Align 크기에 상관없이 배치됨.
__declspec(align(32)) short a[4];
- 이경우에 Align 된 데이터 셋으로 변환하고 되돌리는 과정이 필요해서 복잡성이 있음.
- ex) XNAMath