본문 바로가기

backup

[SIMD 병렬 프로그래밍]SIMD 프로그래밍이란?

 SIMD는 Single Instruction Multiple Data의 약자이다.

한번의 지시로 한번에 여러 연산을 동시에 일어나도록 하는 것을 의미한다.

 

일반적으로 하는 프로그래밍은 모두 SISD 즉 Single Instruction Single Data이다.

즉 한번의 지시로 한번의 연산을 하는 것을 의미한다.

 

 

 

펜티엄 이전의 CPU는 SISD만 지원을 하였는데, 현재의 CPU는 SIMD를 지원한다. 인털 C++ 컴파일러를 쓰기는 하는데, 인텔 CPU만 되는 것은 아니다.

 

이런 연산이 가능한 이유는 CPU가 한번에 처리할 수 Data양이 늘었기 때문이다. 128bit를 하나의 package로 처리를 하는 CPU라면은 byte연산의 경우 16개 데이타를 하나의 package로 묶어서 한번에 처리가 가능을 하게 되는데, byte연산의 경우 일반적인 c코드의 연산에서보다 4~6배 정도 빨라지고, int연산의 경우 10~30% 정도의 성능 향상이 있다고 한다.

 

 

 

즉 위의 그림 처럼 하나 Data를 cpu에 넣고 돌리는 것이 아니라, 한번에 여러개의 Data를 Cpu에 넣고 돌리는 것이다.