SIMD

최근 편집: 2022년 12월 27일 (화) 15:06
인쇄용 판은 더 이상 지원되지 않으며 렌더링 오류가 있을 수 있습니다. 브라우저 북마크를 업데이트해 주시고 기본 브라우저 인쇄 기능을 대신 사용해 주십시오.

SIMD(Single Instruction Multi Data)는 컴퓨터 프로세서 명령어 세트의 일종으로, 일반적인 명령어가 SISD(Single Instruction Single Data)인 것과 달리 여러 개의 데이터를 하나의 명령어로 한 번에 처리할 수 있다.

예시

예를 들면 IA32 및 AMD64의 SSE 명령어 중 _mm_mul_ps는 128비트 데이터(32비트 데이터 네 개) 두 개를 32비트 단위로 각각 곱한다. { 1, 2, 3, 4 } 데이터와 { 5, 6, 7, 8 } 데이터를 _mm_mul_ps 명령어를 이용해 { 1 * 5, 2 * 6, 3 * 7, 4 * 8 }의 연산이 한 명령어로 실행되어 { 5, 12, 21, 32 } 결과가 나온다. SISD 명령어(MUL)를 사용했다면 각 자리의 숫자를 하나씩 곱해야 해서 최소 세 번의 계산 주기가 더 소요된다.

활용처

SIMD 명령어는 벡터행렬 연산에 가장 많이 사용된다. 특히 4차원 벡터, 4 * 4 행렬, 사원수에 자주 사용되며, CPU 연산 주기가 줄어들기 때문에 일반적인 SISD 명령어를 사용하는 것에 비해 미세하게나마 빠른 연산이 가능하다.

벡터나 행렬 이외에도 여러 연산을 한꺼번에 처리해야 할 필요가 있을 때 유용하다. 대량 연산이 많이 필요한 게임, 영상 인코더, 영상 디코더 등에 많이 활용되고 있다.

명령어의 종류

IA32 및 AMD64 프로세서의 SIMD

  • MMX
  • SSE
  • SSE 2
  • SSE 3
  • SSSE 3
  • SSE 4.1
  • SSE 4.2
  • SSE 4a
  • 3DNow!
  • AVX
  • AVX 2
  • FMA 4
  • FMA 3

ARM 프로세서의 SIMD

  • NEON

같이 보기