맨위로가기

SSE3

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

SSE3는 인텔의 프로세서에 도입된 명령어 집합으로, 레지스터 내에서 수평 데이터 처리를 가능하게 하여 DSP 및 3D 그래픽스 연산의 효율성을 높인다. 부동 소수점-정수 변환 명령어 추가 및 LDDQU 명령어 개선을 통해 파이프라인 지연을 줄이고 성능을 향상시켰다. AMD, 인텔, VIA/Centaur 등 다양한 CPU에서 지원되며, ADDSUBPD, HADDPD, HADDPS, HSUBPD, HSUBPS, LDDQU, MOVDDUP, MOVSHDUP, MOVSLDUP, FISTTP, MONITOR, MWAIT 등의 새로운 명령어를 포함한다.

더 읽어볼만한 페이지

  • SIMD 컴퓨팅 - SSE2
    SSE2는 인텔이 개발한 x86 아키텍처의 SIMD 명령어 집합 확장으로, MMX 명령어의 정수 벡터 연산을 확장하고 XMM 레지스터를 사용하여 부동 소수점 연산 성능을 향상시키며, AMD64 아키텍처에서도 지원된다.
  • SIMD 컴퓨팅 - MMX (명령어 집합)
    MMX는 인텔이 개발한 명령어 집합으로, 64비트 레지스터를 사용하여 여러 개의 작은 정수를 동시에 처리하며, x87 부동 소수점 레지스터를 사용해 정수 연산을 수행하도록 설계되었다.
  • X86 명령어 - 스트리밍 SIMD 확장
    스트리밍 SIMD 확장(SSE)은 x86 아키텍처의 SIMD 명령어 집합으로, 128비트 XMM 레지스터를 사용하여 데이터 병렬 처리를 통해 성능을 향상시키며, 인텔 펜티엄 III 프로세서에 처음 도입되어 여러 후속 버전으로 발전했다.
  • X86 명령어 - SSE2
    SSE2는 인텔이 개발한 x86 아키텍처의 SIMD 명령어 집합 확장으로, MMX 명령어의 정수 벡터 연산을 확장하고 XMM 레지스터를 사용하여 부동 소수점 연산 성능을 향상시키며, AMD64 아키텍처에서도 지원된다.
  • 병렬 컴퓨팅 - 슈퍼컴퓨터
    슈퍼컴퓨터는 일반 컴퓨터보다 훨씬 높은 성능을 가진 컴퓨터로, 복잡한 계산과 시뮬레이션을 수행하며, 프로세서, 메모리, 스토리지, 네트워크 등으로 구성되어 병렬 처리를 통해 높은 성능을 구현하고, 군사, 기상 예측, 과학 기술 분야, 인공지능 등 다양한 분야에서 활용되고 있다.
  • 병렬 컴퓨팅 - 컴퓨터 클러스터
    컴퓨터 클러스터는 여러 대의 상용 컴퓨터를 고속 네트워크로 연결하여 고성능 컴퓨팅 시스템을 구축하는 방식으로, 슈퍼컴퓨터를 포함한 다양한 분야에서 높은 가용성과 확장성을 제공하며, 클러스터 미들웨어를 통해 시스템 관리, 부하 분산, 통신 방식, 데이터 공유 등을 지원하고 노드 장애 관리를 위한 펜싱 기술을 활용한다.
SSE3
CPU 명령어 집합 확장
유형SIMD
개발자인텔
데뷔펜티엄 4 "프레스콧" (2004년 2월 1일)
기술 사양
명령어54개 새로운 SSE 명령어
아키텍처x86
비트 너비128비트
데이터 유형8비트 정수
16비트 정수
32비트 정수
단정밀도 부동소수점
추가된 명령어PSIGNB, PSIGNW, PSIGND
PABSB, PABSW, PABSD
PMULHRSW
PALIGNR
PSHUFB
PMADDUBSW

2. 변경 사항

SSE3의 가장 주목할 만한 변경 사항은 레지스터 내에서 수평적으로 데이터를 처리할 수 있는 기능이 추가되었다는 점이다. 이전 SSE 명령어들이 수직적인 연산에 초점을 맞췄던 것과 달리, SSE3는 단일 레지스터에 저장된 여러 값들에 대해 동시에 덧셈, 뺄셈 등의 연산을 수행할 수 있다.[4] 이러한 수평 연산 기능은 DSP3D 연산과 같이 복잡한 연산을 효율적으로 처리하는 데 기여한다.

또한, 전역 반올림 모드를 변경하지 않고도 부동 소수점 값을 정수로 변환하는 새로운 명령어가 추가되어, 파이프라인 지연을 줄이고 성능을 향상시켰다.

LDDQU 명령어는 정렬되지 않은 정수 벡터 로드를 대체하여 넷버스트 기반 플랫폼에서 비디오 압축과 같은 작업에서 더 나은 성능을 제공한다.[5]

3. SSE3를 지원하는 CPU

SSE3 명령어 집합은 여러 CPU에서 지원된다. 주요 지원 CPU는 다음과 같다.

제조사CPU 제품군
AMD애슬론 64 (베니스 스테핑 E3, 샌디에이고 스테핑 E4 이후), 애슬론 64 X2, 애슬론 64 FX (샌디에이고 스테핑 E4), 옵테론 (스테핑 E4 이후), 셈프론 (Palermo 스테핑 E3 이후), 페넘, 페넘 II, 튜리온 64, 튜리온 64 X2, 페넘 X2, K10 제품군, APU 제품군 (GPU 미포함), FX 시리즈, 제품군
인텔셀러론 D, 셀러론 420, 430, 440, 펜티엄 4 (프레스캇 이후), 펜티엄 D, 펜티엄 듀얼 코어, 펜티엄 익스트림 에디션 (펜티엄 4 익스트림 에디션은 아님), 인텔 코어 듀오, 인텔 코어 솔로, 인텔 코어 2 듀오, 인텔 코어 2 익스트림, 인텔 코어 2 쿼드, 인텔 코어 i7, 제온 (노코나 이후), 아톰, 셀러론 (코어 마이크로아키텍처부터), 펜티엄 (코어 마이크로아키텍처부터)
VIA/켄타우어C7, Nano
트랜스메타이피션 TM88xx (모델 번호 TM86xx는 제외)


3. 1. AMD

다음은 SSE3를 지원하는 AMD 프로세서 목록이다.

3. 2. 인텔

3. 3. 기타

VIA/Centaur의 C7, Nano, 트랜스메타 이피션 TM88xx (TM86xx 제외)도 SSE3를 지원한다.[6]

4. 신규 명령어

SSE3는 이전 SSE 명령어와 달리 레지스터 내에서 수평적인 연산이 가능하도록 설계되었다. 이는 디지털 신호 처리(DSP)3D 그래픽 연산 속도를 높이는 데 기여한다.[4]

특히, 단일 레지스터에 저장된 여러 값들을 더하고 빼는 명령어들이 추가되었다. 또한, 전역 반올림 모드를 변경하지 않고도 부동 소수점 값을 정수로 변환하는 명령어가 추가되어 명령어 파이프라인 정지를 줄일 수 있게 되었다.[4]

이 외에도, 캐시 라인 경계를 넘어 데이터를 읽을 때 넷버스트 기반 플랫폼에서 더 나은 성능을 제공하는 `LDDQU` 명령어가 추가되었다.[5]

4. 1. 공통 명령어

SSE3는 한 번에 여러 값을 처리하는 SIMD(Single Instruction, Multiple Data) 명령어 집합으로, 다음과 같은 공통 명령어들을 포함한다.

  • 산술 연산:
  • `ADDSUBPD`: 두 128비트 레지스터에 있는 값들을 쌍으로 묶어 덧셈과 뺄셈을 번갈아 수행한다. (예: { A0, A1 }, { B0, B1 } → { A0 - B0, A1 + B1 })[8]
  • `ADDSUBPS`: `ADDSUBPD`와 유사하지만, 단정밀도 부동소수점 값에 대해 연산을 수행한다.[8]
  • AOS (Array Of Structures) 연산:
  • `HADDPD`, `HADDPS`: 레지스터 내의 값들을 가로로 더한다. 예를 들어, `HADDPD`는 { A0, A1 }, { B0, B1 }를 입력받아 { A0 + A1, B0 + B1 }를 출력한다.[8]
  • `HSUBPD`, `HSUBPS`: `HADDPD`, `HADDPS`와 유사하지만, 가로로 뺄셈을 수행한다.[8]
  • 기타:
  • `LDDQU`: 정렬되지 않은 메모리에서 128비트 정수 벡터를 빠르게 읽어올 수 있게 해준다.[8]
  • `MOVDDUP`, `MOVSHDUP`, `MOVSLDUP`: 복소수 연산이나 음성 신호 처리와 같은 파형 계산에 유용하다.[4]
  • `FISTTP`: 부동소수점 값을 정수로 변환할 때, 일반적으로 사용되는 반올림 대신 소수점 이하를 버리는 절단(truncation) 방식을 사용한다.[4]

4. 1. 1. 산술 연산

;`ADDSUBPD`

: ''Add-Subtract-Packed-Double'' (덧셈-뺄셈-팩-더블)[8]

:* 입력: { A0, A1 }, { B0, B1 }

:* 출력: { A0 - B0, A1 + B1 }

;`ADDSUBPS`

: ''Add-Subtract-Packed-Single'' (덧셈-뺄셈-팩-싱글)[8]

:* 입력: { A0, A1, A2, A3 }, { B0, B1, B2, B3 }

:* 출력: { A0 - B0, A1 + B1, A2 - B2, A3 + B3 }

4. 1. 2. AOS (Array Of Structures) 연산

SSE3는 레지스터에서 수평적으로 작동하는 기능을 추가하여, 디지털 신호 처리 및 3D 처리를 단순화한다. 특히, 단일 레지스터에 저장된 여러 값들을 더하고 빼는 명령어들이 추가되었다.[8]

명령어기능설명
`HADDPD`수평 덧셈 (배정도)두 개의 128비트 레지스터에 저장된 두 쌍의 배정도 부동 소수점 값을 수평적으로 더한다. (예: { A0, A1 }, { B0, B1 } -> { A0 + A1, B0 + B1 })[8]
`HADDPS`수평 덧셈 (단정도)두 개의 128비트 레지스터에 저장된 네 쌍의 단정도 부동 소수점 값을 수평적으로 더한다. (예: { A0, A1, A2, A3 }, { B0, B1, B2, B3 } -> { A0 + A1, A2 + A3, B0 + B1, B2 + B3 })[8]
`HSUBPD`수평 뺄셈 (배정도)두 개의 128비트 레지스터에 저장된 두 쌍의 배정도 부동 소수점 값을 수평적으로 뺀다. (예: { A0, A1 }, { B0, B1 } -> { A0 - A1, B0 - B1 })[8]
`HSUBPS`수평 뺄셈 (단정도)두 개의 128비트 레지스터에 저장된 네 쌍의 단정도 부동 소수점 값을 수평적으로 뺀다. (예: { A0, A1, A2, A3 }, { B0, B1, B2, B3 } -> { A0 - A1, A2 - A3, B0 - B1, B2 - B3 })[8]
`LDDQU`비정렬 정수 벡터 로드정렬되지 않은 128비트 정수 벡터 로드를 위한 명령어로, 비디오 압축 등에서 성능 향상에 기여한다.[8]
`MOVDDUP`, `MOVSHDUP`, `MOVSLDUP`복소수/파형 계산복소수 및 파형 계산에 유용한 명령어들이다.[4]
`FISTTP`부동 소수점 -> 정수 변환 (절단)부동 소수점 값을 정수로 변환하는 명령어로, 부동 소수점 제어 레지스터의 라운딩 모드를 무시하고 "절단(chop)" 모드를 사용한다.[4]


4. 2. 인텔 명령어

`MONITOR`와 `MWAIT`는 하이퍼 스레딩을 지원하는 프로세서에서 멀티 스레드 애플리케이션의 성능을 최적화하는 데 사용되는 명령어이다.[4] `MONITOR` 명령어는 감시할 메모리 주소를 지정하며, `MWAIT` 명령어는 프로세서를 저전력 상태로 전환하고 감시되는 주소에 대한 쓰기 이벤트를 대기한다.[4]

참조

[1] 웹사이트 Intel's Pentium 4 E: Prescott Arrives with Luggage https://www.anandtec[...] 2023-04-10
[2] 웹사이트 Industry Update - Q4-2004: AMD adds SSE3 Support, Intel's 925/915 not selling and more https://www.anandtec[...] 2023-04-10
[3] 웹사이트 Intel Instruction Set Extensions Technology https://www.intel.co[...] 2023-04-10
[4] 웹사이트 SSE3 Instruction Set https://softpixel.co[...] 2023-04-10
[5] 웹사이트 LDDQU — Load Unaligned Integer 128 Bits https://www.felixclo[...] 2023-04-10
[6] 웹사이트 AMD K8 E4 Stepping: SSE3 Performance https://www.anandtec[...] 2023-04-10
[7] 웹사이트 Intel Xeon 3.4GHz ['Nocona' core] https://hexus.net/bu[...] 2004-08-18
[8] 웹사이트 SSE3 Instructions - x86 Assembly Language Reference Manual https://docs.oracle.[...] 2023-04-10



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com