SIMD 의 종류와 MMX
여기서는 Intel x86 아키텍쳐의 SIMD 만 설명하겠습니다.
먼저 Pentium 시리즈와 함께 처음 나온 MMX 가 있습니다.
이 집합은 FPU(x87) 에서 사용되는 레지스터를 공유해서 사용합니다.
즉 따로 MMX 용 레지스터가 존재하지는 않습니다.
그리고 MMX 후에 나온 SSE 가 있습니다.
아마 모두 한 번쯤은 들어보셨을 정도로 대표적인 SIMD 입니다.
(이름 자체도 Streaming SIMD Extensions 의 약자입니다.)
xmm 이라는 128비트 레지스터 8개가 추가되어 SIMD 전용 레지스터로 사용됩니다.
[출처] SIMD란 무엇인가? (C언어를 배우자) |작성자 SeHwa
http://cafe.naver.com/cafec/243004
EMMS 를 사용하는 이유는
The EMMS Instruction: Why You Need It
Using EMMS is like emptying a container to accommodate new content. The EMMS instruction clears the MMX™ registers and sets the value of the floating-point tag word to empty.
You should clear the MMX™ registers before issuing a floating-point instruction because floating-point convention specifies that the floating-point stack be cleared after use. Insert the EMMS instruction at the end of all MMX™ code segments to avoid a floating-point overflow exception.
Why You Need EMMS to Reset After an MMX™ Instruction
CAUTION
Failure to empty the multimedia state after using an MMX™ technology instruction and before using a floating-point instruction can result in unexpected execution or poor performance.
https://software.intel.com/en-us/node/524274
'운영체제 & 병렬처리 > TBB & SIMD' 카테고리의 다른 글
SIMD 연산(PADD) 를 이용한 총 합 구하기 (0) | 2018.02.19 |
---|---|
SIMD 로 배열 copy 작성__declspec(align(16)) 과 movdqu, movdqa (0) | 2018.02.13 |
simd 명령어의 의미 (p + operation + type) (0) | 2018.02.13 |
CPU 의 이해2 - E(A~D)X,...,XMM0~7,~15 (Register Bank) (0) | 2018.02.09 |
CPU 구조의 이해(명령어 처리의 이해) (0) | 2018.02.09 |