SSSE3

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

1. 개요

SSSE3는 2006년 인텔 코어 마이크로아키텍처 기반 프로세서에 처음 도입된 CPU 명령어 집합으로, HD 오디오/비디오 디코딩/인코딩 성능을 향상시킨다. 16개의 새로운 개별 명령어를 포함하며, 수평 덧셈/뺄셈, 절대값 계산, 곱셈-덧셈, 셔플, 데이터 정렬 등 다양한 기능을 수행한다. SSSE3는 인텔, AMD, VIA 등 다양한 제조사의 CPU에서 지원되며, 인텔의 제온, 코어 2, 코어 i 시리즈, AMD의 젠(Zen) 아키텍처 기반 프로세서, VIA의 나노 프로세서 등이 해당된다.

SSSE3
📚 더 읽어볼만한 페이지
  • SIMD 컴퓨팅 - SSE2
    SSE2는 인텔이 개발한 x86 아키텍처의 SIMD 명령어 집합 확장으로, MMX 명령어의 정수 벡터 연산을 확장하고 XMM 레지스터를 사용하여 부동 소수점 연산 성능을 향상시키며, AMD64 아키텍처에서도 지원된다.
  • SIMD 컴퓨팅 - SSE3
    SSE3는 인텔에서 개발한 스트리밍 SIMD 확장 3 명령어 세트로, 부동 소수점 연산, 디지털 신호 처리, 3차원 컴퓨터 그래픽 처리 성능 향상을 위해 기존 SSE2 명령어 세트에 몇 가지 새로운 명령어를 추가한 것이다.
  • X86 아키텍처 - 물리 주소 확장
    물리 주소 확장(PAE)은 x86 아키텍처에서 32비트 주소를 36비트 이상으로 확장하여 CPU가 4GB 초과 물리 메모리에 접근하도록 하는 기술로, 페이지 테이블 확장 및 추가 페이지 테이블을 통해 최대 64GB 메모리를 지원하며 AMD64 아키텍처에서 가상 주소 공간 확장에 사용되고 운영 체제, 칩셋, 마더보드의 지원이 필요하며 CPUID 플래그로 지원 여부를 확인한다.
  • X86 아키텍처 - X86 가상화
    X86 가상화는 x86 아키텍처 기반 시스템에서 가상 머신을 구현하는 기술로, 소프트웨어 기반 가상화와 하드웨어 지원 가상화로 나뉘며, CPU 제조사의 가상화 확장 기술을 활용하여 가상 머신의 성능을 향상시킨다.
  • X86 명령어 - 스트리밍 SIMD 확장
    스트리밍 SIMD 확장(SSE)은 x86 아키텍처의 SIMD 명령어 집합으로, 128비트 XMM 레지스터를 사용하여 데이터 병렬 처리를 통해 성능을 향상시키며, 인텔 펜티엄 III 프로세서에 처음 도입되어 여러 후속 버전으로 발전했다.
  • X86 명령어 - SSE2
    SSE2는 인텔이 개발한 x86 아키텍처의 SIMD 명령어 집합 확장으로, MMX 명령어의 정수 벡터 연산을 확장하고 XMM 레지스터를 사용하여 부동 소수점 연산 성능을 향상시키며, AMD64 아키텍처에서도 지원된다.

2. 역사

SSSE3는 2006년 6월 26일, "우드크레스트" 제온을 탑재한 코어 마이크로아키텍처 기반의 인텔 프로세서와 함께 처음 도입되었다.

SSSE3를 지원하기 위해 처음 설계된 프로세서의 코드명으로 테자스 신규 명령어(TNI) 또는 메롬 신규 명령어(MNI)라고 불리기도 했다.

SSSE3는 AAC와 같은 HD 오디오/비디오 디코딩/인코딩을 향상시켰다.

3. 기능

SSSE3는 16개의 새로운 개별 명령어를 포함하고 있다. 각 명령어는 64비트 MMX 또는 128비트 XMM 레지스터에서 작동할 수 있다. 따라서 인텔의 자료에서는 32개의 새로운 명령어를 언급하고 있다.

SSSE3에 포함된 명령어는 다음과 같다.

* 수평 덧셈 또는 뺄셈 연산을 수행하는 12개의 명령어.
* 절대값을 계산하는 6개의 명령어.
* 내적의 계산 속도를 높이는 곱셈-덧셈 연산을 수행하는 2개의 명령어.
* 팩 처리된 정수 곱셈 연산을 가속화하고 스케일링된 정수 값을 생성하는 2개의 명령어.
* 두 번째 셔플 제어 피연산자에 따라 바이트 단위의 제자리 셔플을 수행하는 2개의 명령어.
* 소스 피연산자의 해당 요소가 음수이면 대상 피연산자의 팩 처리된 정수를 부정하는 6개의 명령어.
* 두 피연산자의 조합에서 데이터를 정렬하는 2개의 명령어.

4. 새 함수

SSSE3에는 여러 가지 새로운 함수들이 추가되었다. 각 함수의 기능은 아래 표와 같다.

👆
좌우로 밀어서 보기
함수명전체 이름
PSIGNB, PSIGNW, PSIGNDPacked Sign
PABSB, PABSW, PABSDPacked Absolute Value
PALIGNRPacked Align Right
PSHUFBPacked Shuffle Bytes
PMULHRSWPacked Multiply High with Round and Scale
PMADDUBSWMultiply and Add Packed Signed and Unsigned Bytes
PHSUBW, PHSUBDPacked Horizontal Subtract (Words or Doublewords)
PHSUBSWPacked Horizontal Subtract and Saturate Words
PHADDW, PHADDDPacked Horizontal Add (Words or Doublewords)
PHADDSWPacked Horizontal Add and Saturate Words


각 함수에 대한 자세한 설명은 다음과 같다.

👆
좌우로 밀어서 보기
명령어정의설명
PSIGNB, PSIGNW, PSIGND팩 처리된 부호다른 레지스터의 해당 요소의 부호가 음수이면 바이트, 워드 또는 더블워드의 레지스터 요소를 반전한다.
PABSB, PABSW, PABSD팩 처리된 절대값바이트, 워드 또는 더블워드의 레지스터 요소를 다른 레지스터 요소의 절대값으로 채운다.
PALIGNR팩 처리된 오른쪽 정렬두 개의 레지스터를 가져와서 값을 연결하고, 명령어에 인코딩된 즉시 값에 의해 주어진 오프셋에서 레지스터 길이의 섹션을 추출한다.
PSHUFB팩 처리된 바이트 섞기바이트 레지스터 A = [a0 a1 a2 ...] 및 B = [b0 b1 b2 ...]를 가져와 A를 [ab0 ab1 ab2 ...]로 바꾼다. 단, bi의 최상위 비트가 설정된 경우 i번째 항목을 0으로 바꾼다.
PMULHRSW반올림 및 스케일로 팩 처리된 곱셈 상위레지스터 A 및 B의 16비트 워드를 −1.00000000과 +0.99996948... 사이의 부호 있는 16비트 고정 소수점 숫자(예: 0x4000은 +0.5로, 0xA000은 −0.75로 처리됨)로 처리하고, 올바른 반올림으로 함께 곱한다.
PMADDUBSW팩 처리된 부호 있는 및 부호 없는 바이트 곱셈 및 덧셈레지스터 A와 B의 바이트를 가져와서 함께 곱하고 쌍을 더하고, 부호 있는 포화 처리하여 저장한다.
PHSUBW, PHSUBD팩 처리된 수평 뺄셈 (워드 또는 더블워드)레지스터 A = [a0 a1 a2 ...] 및 B = [b0 b1 b2 ...]를 가져와 [a0−a1 a2−a3 ... b0−b1 b2−b3 ...]를 출력한다.
PHSUBSW팩 처리된 수평 뺄셈 및 포화 워드PHSUBW와 유사하다.
PHADDW, PHADDD팩 처리된 수평 덧셈 (워드 또는 더블워드)레지스터 A = [a0 a1 a2 ...] 및 B = [b0 b1 b2 ...]를 가져와 [a0+a1 a2+a3 ... b0+b1 b2+b3 ...]를 출력한다.
PHADDSW팩 처리된 수평 덧셈 및 포화 워드PHADDW와 유사하다.

4.1. satsw(X) 함수

satsw영어(X)('saturate to signed word'로 읽음)는 부호가 있는 정수 X를 -32768보다 작으면 -32768로, 32767보다 크면 +32767로 바꾸고, 그 외에는 바꾸지 않는 함수이다. 일반적인 인텔 아키텍처에서 8비트는 한 바이트, 16비트는 워드, 32비트는 이중 워드이다. 여기서 레지스터는 MMX나 XMM 벡터 레지스터를 의미한다.

5. SSSE3를 지원하는 CPU

SSSE3를 지원하는 CPU는 다음과 같다.

* 인텔
* VIA
** 나노
* AMD

5.1. 인텔 (Intel)

다음은 SSSE3를 지원하는 인텔 프로세서 목록이다.

👆
좌우로 밀어서 보기
프로세서 제품군
제온 5100 계열
제온 5300 계열
제온 5400 시리즈
제온 3000 계열
코어 2 듀오
코어 2 익스트림
코어 2 쿼드
Core i7
Core i5
Core i3
펜티엄 듀얼 코어 (64비트 지원, Allendale부터)
셀러론 4xx 계열 콘로-L
셀러론 듀얼 코어 E1200
셀러론 M 500 계열
아톰

5.2. AMD

* AMD:
"Cat" 저전력 프로세서
* Bobcat 기반 프로세서
* Jaguar 기반 프로세서 및 그 이후
* Puma 기반 프로세서 및 그 이후
"Heavy Equipment" 프로세서
* Bulldozer 기반 프로세서
* Piledriver 기반 프로세서
* Steamroller 기반 프로세서
* Excavator 기반 프로세서 및 그 이후
Zen 기반 프로세서
Zen+ 기반 프로세서
Zen 2 기반 프로세서
Zen 3 기반 프로세서
Zen 4 기반 프로세서
** Zen 5 기반 프로세서

5.3. VIA

나노