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에 넣고 돌리는 것이다.
'backup' 카테고리의 다른 글
[SIMD 병렬 프로그래밍]범용 레지스터 (0) | 2013.07.19 |
---|---|
[SIMD 병렬 프로그래밍]MMX, SSE, AVX (0) | 2013.07.19 |
[FX마진거래 HFT]요즘 테스트 진행하고 있는 FX마진 HFT 거래입니다. (2) | 2013.07.18 |
[금융공학]주가는 금융공학에서 가정하는 랜덤워크를 따르지 않는다. (0) | 2013.07.18 |
[심심풀이FX마진거래] 7월 18일 (0) | 2013.07.18 |