2017-12-05 40 views
0

SSE 내장 함수를 사용하여 코드를 최적화하려고합니다. 문서를 살펴본 후 부동 소수점 변수에 대해 SSE에 __m128 데이터 유형이 있으며 4 개의 부동 소수점을 저장할 수 있음을 알았습니다. SSE2에는 부동 소수점 숫자 2 개만 저장할 수있는 __m128d이 있습니까? 이 변수들의 차이점은 무엇입니까? SSE2가 SSE보다 빠르지 않습니까?SSE 2 이상 - 부동 소수점 데이터 형식에 부동 소수점 숫자 2 개만 저장하는 이유

+2

> 더 자세한 정보는 아니, 대신 단 정밀도 부동 소수점의 정수 및 배정 밀도 부동 소수점에 대한 지침을 제공하기로했다 *. SSE 태그 위키 (https://stackoverflow.com/tags/sse/info)를 참조하십시오. 아마 당신은 256b 레지스터를 제공하는 AVX를 찾고있을 것입니다 : 8 float 또는 4 double. –

+0

오. 나는 그 (것)들을 전부 다른 지시 세트이기 위하여 혼동했다! 알았다. 감사. – Blue

+1

서로 다른 명령어 세트입니다. Pentium III는 SSE 만 지원하므로 integer 나 double이 아닌 스칼라 또는 팩 된 단 정밀도에 XMM 레지스터 만 사용할 수있었습니다. SSE2는 나중에 추가되었습니다. –

답변

6

SSE 명령어는 128 비트 레지스터를 사용합니다.

float은 4 바이트 = 32 비트 -> 따라서 4 플로트 (4 * 32 = 128)를 저장할 수 있으며, 이들은 __m128입니다.

double은 8 바이트 = 64 비트 -> 따라서 2 개의 복식 (2 * 64 = 128)을 저장할 수 있습니다. 이들은 __m128d입니다.

? - *이 SSE2 빠른 SSE보다 아닌가요 https://felix.abecassis.me/2011/09/cpp-getting-started-with-sse/