SSE3
SSE3SSE3, Streaming SIMD Extensions 3(Intel 코드명 Precott New Instructions (PNI))은 IA-32(x86) 아키텍처용 SSE 명령 세트의 세 번째 반복입니다.인텔은 2004년 초에 Pentium 4 CPU의 Prescott 리비전을 통해 SSE3를 발표했습니다.2005년 4월에 AMD는 SSE3의 서브셋을 Athlon 64 CPU의 리비전E(베니스 및 샌디에이고)에 도입했습니다.x86 플랫폼의 이전 SIMD 명령 세트는 오래된 것부터 최신 것까지 MMX, 3DNow!(AMD가 개발했지만 Intel 프로세서가 지원하지 않음), SSE 및 SSE2입니다.
SSE3에는 SSE2에 대한 13개의 새로운 명령이 포함되어 있습니다.
변화들
가장 주목할 만한 변화는 레지스터에서 수평으로 작동하는 기능인데, 이는 이전의 모든 SSE 명령이 거의 수직으로 작동했던 것과는 다릅니다.보다 구체적으로, 단일 레지스터에 저장된 여러 값을 더하고 빼는 명령이 추가되었습니다.이러한 지침을 사용하여 여러 DSP 및 3D 작업의 구현을 가속화할 수 있습니다.또한 글로벌 반올림 모드를 변경하지 않고 부동소수점 값을 정수로 변환하는 새로운 명령도 있으므로 비용이 많이 드는 파이프라인의 정지를 피할 수 있습니다.마지막으로 LDDQU가 추가됩니다.LDDQU는 캐시라인 경계를 넘는 부하에 대해 NetBurst 기반 플랫폼에서 성능이 향상됩니다.
SSE3 탑재 CPU
- AMD:
- 인텔:
- 셀레론 D
- Celeron (코어 마이크로아키텍처부터)
- Pentium 4 (Prescott 이후)
- 펜티엄 D
- Pentium Extreme Edition (단, Pentium 4 Extreme Edition은 제외)
- Pentium 듀얼코어
- Pentium (코어 마이크로아키텍처부터)
- 핵심
- Xeon (노코나 이후)
- 아톰
- VIA/Centaur:
- Transmeta Efficeon TM88xx(모델번호 TM86xx가 아님)
새로운 순서
일반적인 순서
산술
- ADDSUBPD - (추가-감산-패킹-더블)
- 입력: { A0, A1 }, { B0, B1 }
- 출력: { A0 - B0, A1 + B1 }
- ADDSUBPS - (추가-적립-패킹-싱글)
- 입력: {A0, A1, A2, A3}, {B0, B1, B2, B3}
- 출력: { A0 - B0, A1 + B1, A2 - B2, A3 + B3 }
AOS(Array Of Structures)
- HADDPD - (수평 애드 팩 더블)
- 입력: { A0, A1 }, { B0, B1 }
- 출력: { A0 + A1, B0 + B1 }
- HADDPS(수평 애드 팩싱글)
- 입력: {A0, A1, A2, A3}, {B0, B1, B2, B3}
- 출력: { A0 + A1, A2 + A3, B0 + B1, B2 + B3 }
- HSUBPD - (수평-적립-패킹-더블)
- 입력: { A0, A1 }, { B0, B1 }
- 출력: { A0 - A1, B0 - B1 }
- HSUBPS - (수평-적립-패킹-싱글)
- 입력: {A0, A1, A2, A3}, {B0, B1, B2, B3}
- 출력: { A0 - A1, A2 - A3, B0 - B1, B2 - B3 }
- LDDQU - 위에서 설명한 바와 같이 이것은 잘못 정렬된 대체 정수 벡터 로드입니다.비디오 압축 작업에 도움이 될 수 있습니다.
- MOVDDUP, MOVSDUP, MOVSLDUP: 이들은 복잡한 수치 및 소리 등의 파형 계산에 유용합니다.
- FITP - 이전 x87 FITP 명령과 비슷하지만 부동소수점 제어 레지스터의 반올림 모드 설정을 무시하고 대신 "chop"(트렁크) 모드를 사용합니다.float-to-int 변환이 표준으로 동작 절단을 필요로 하는 C와 같은 언어로 제어 레지스터를 로드 및 새로고침할 필요가 없습니다.
기타 절차
- 모니터, MWAIT - 멀티 스레드 어플리케이션을 최적화하여 하이퍼스레딩을 탑재한 프로세서의 성능을 향상시킵니다.