본문 바로가기
프로그래밍/컴퓨터

[CS] SIMD(Single Instruction Multiple Data)

by Sik.K 2023. 6. 19.

SIMD 한국어로 번역하면 단일 명령 다중 데이터를 의미한다. 하나의 명령으로 여러 데이터를 동시에 처리하는 병렬 컴퓨팅의 일종으로 CPU의 종류에 따라 한 번에 64비트(MMX), 128비트(SSE), 256비트(AVX)의 데이터를 동시에 처리가 가능하다.

 

위 메모리들은 기본적으로 메모리 정렬이 되어 있어야 하며, SIMD 명령어를 통해 데이터를 처리할 수 있다.

 


MMX

 

1997년에 공개된 인텔의 SIMD형 확장 명령어 세트로 총 56개의 명령어를 포함한다.

 

x87FPU 레지스터를 이용하여 하나의 명령으로 동시에 여러 정수 연산을 처리한다. 한 번에 64비트씩 처리가 가능하고 기존 범용 레지스터보다 훨씬 더 효율적으로 연산을 처리하지만, 프로그램에서 MMX를 사용하도록 프로그램 되어 있지 않으면 MMX에 의한 성능 향상의 혜택을 받을 수 없다.

 

SSE 명령어 세트가 추가된 이후에는 MMX가 불필요해져 주로 이전 프로그램의 호환성을 목적으로 구현, 제공되고 있다.

 

 

SSE

 

MMX는 두 가지 문제점인 실수연산과 SIMD 데이터를 동시에 활용하지 못하는 점과 정수에서만 동작한다는 점을 가지고 있다.

 

이후 AMD에서 실수연산 문제를 해결하고 이를 인텔과 합작하여 새롭게 개발한 명령어 세트가 바로 SSE다.

 

70개의 새로운 명령어가 추가되고 128비트의 연산을 한 번에 처리하는 추가 레지스터 8개로 구성된다.

 

 

AVX

 

Advanced Vector Extensions의 약자로 2008년 4월에 발표되었다. SIMD 레지스터의 폭이 256비트로 확장되어 SSE보다 최대 2배에 달하는 부동소수점 연산 처리 능력을 갖췄다.

 

출처 - Super computers (slideshare.net)

 

'프로그래밍 > 컴퓨터' 카테고리의 다른 글

[CS] 컴퓨트 셰이더  (0) 2023.07.11
[CS] GPGPU  (0) 2023.07.11
[CS] 메모리 단편화 & 메모리 풀  (0) 2023.05.04
[CS] 캐시 메모리  (0) 2023.04.20
[CS] 메모리 계층 구조(Memory Hierarchy)  (0) 2023.04.19

댓글