SSSE3

위키백과, 우리 모두의 백과사전.
이동: 둘러보기, 검색

스트리밍 SIMD 확장 3 추가판( Supplemental Streaming SIMD Extension 3,약어:SSSE3)는 인텔의 4번째 SSE 명령어 집합이다. 이전 버전은 SSE3였고 인텔은 버전 번호를 증가시키기보다는 S를 붙였다. 왜냐하면 단지 SSE3의 개정판으로 생각 했기 때문이다. 인텔이 공식적으로 이름을 붙이기 전에는 SSE4로 잘못 언급되기도 하였다. 또한 이것을 지원하고자 하는 첫 프로세서 코드 이름으로서 테자스 신규 명령어(TNI) 또는 메롬 신규 명령어(MNI)로 언급되기도 했다. 인텔의 코어 마이크로아키텍처에서 소개된 SSSE3는 서버와 워크스테이션용 제온 5100 계열 및 인텔 코어 2 노트북 및 데스크톱 프로세서에서 지원된다.

SSSE3는 SSE3와 비교하여 16개의 새 개별 명령어를 포함한다. 각각은 64비트 MMX 또는 128비트 XMM레지스터들위에서 동작을 한다. 따라서 인텔의 자료에서는 신규 명령어가 32개라고 한다. x86플랫폼에서의 이전 SIMD 명령어 집합은 시간순으로 MMX, 3DNow! (AMD에 의해 개발), SSE, SSE2 그리고 SSE3이다.

SSSE3를 지원하는 CPU[편집]

신규 명령어[편집]

아래의 문단에 한국어로 번역되지 않은 내용이 담겨 있습니다. 번역되지 않은 부분은 번역을 마치거나 삭제해주어야 합니다.

This section needs to be translated into Korean. Untranslated parts of the section should be rewritten in Korean or eliminated.

아래 테이블에서 satsw(X)('saturate to signed word'로 읽음)는 부호가 있는 정수 X를 취한다. 그리고 이것을 -32768보다 적으면 -32768로 바꾸고, 32767보다 크면 +32767로 변경한다. 이 외에는 바꾸지 않고 내버려둔다. 일반적인 인텔 아키텍처에서처럼 8비트는 한 바이트이고 16비트는 워드, 32비트는 이중 워드이다. 레지스터는 MMX나 XMM 벡터 레지스터를 의미한다.

PSIGNB, PSIGNW, PSIGND Packed Sign Negate the elements of a register of bytes, words or dwords if the sign of the corresponding elements of another register is negative.
PABSB, PABSW, PABSD Packed Absolute Value Fill the elements of a register of bytes, words or dwords with the absolute values of the elements of another register
PALIGNR Packed Align Right take two registers, concatenate their values, and pull out a register-length section from an offset given by an immediate value encoded in the instruction.
PSHUFB Packed Shuffle Bytes takes registers of bytes A = [a0 a1 a2 ...] and B = [b0 b1 b2 ...] and replaces A with [ab0 ab1 ab2 ...]; except that it replaces the ith entry with 0 if the top bit of bi is set.
PMULHRSW Packed Multiply High with Round and Scale treat the sixteen-bit words in registers A and B as signed 15-bit fixed-point numbers between -1 and 1 (eg 0x4000 is treated as 0.5 and 0xa000 as -0.75), and multiply them together with correct rounding.
PMADDUBSW Multiply and Add Packed Signed and Unsigned Bytes Take the bytes in registers A and B, multiply them together, add pairs, signed-saturate and store. IE [a0 a1 a2 ...] pmaddubsw [b0 b1 b2 ...] = [satsw(a0b0+a1b1) satsw(a2b2+a3b3) ...]
PHSUBW, PHSUBD Packed Horizontal Subtract (Words or Doublewords) takes registers A = [a0 a1 a2 ...] and B = [b0 b1 b2 ...] and outputs [a0-a1 a2-a3 ... b0-b1 b2-b3 ...]
PHSUBSW Packed Horizontal Subtract and Saturate Words like PHSUBW, but outputs [satsw(a0-a1) satsw(a2-a3) ... satsw(b0-b1) satsw(b2-b3) ...]
PHADDW, PHADDD Packed Horizontal Add (Words or Doublewords) takes registers A = [a0 a1 a2 ...] and B = [b0 b1 b2 ...] and outputs [a0+a1 a2+a3 ... b0+b1 b2+b3 ...]
PHADDSW Packed Horizontal Add and Saturate Words like PHADDW, but outputs [satsw(a0+a1) satsw(a2+a3) ... satsw(b0+b1) satsw(b2+b3) ...]

같이 보기[편집]

바깥 고리[편집]