기글 하드웨어 위키는 일정 레벨을 충족하는 회원분들께서 직접 참여하실 수 있는 공간입니다. 컴퓨터, 하드웨어, 소프트웨어, 각종 디지털 기기, 즉 IT 관련 정보만 올릴 수 있습니다. 여기에 해당되지 않는 항목은 삭제하고 이용에 재재가 주어집니다.

SSE

조회 수 4747 추천 수 0 2014.02.05 16:11:23

Streaming SIMD Extensions의 약자. CPU가 지원하는 확장 인스트럭션(명령어)으로써 펜티엄3때부터 x86프로세서들에 내장되기 시작하였다.

FPU의 레지스터를 빌려 쓰던 MMX, 3DNow!와는 달리 128bit크기의 전용 레지스터를 최대 8개까지(x86-64는 최대 16개)사용 할 수 있다.

즉, 이론적으로 데이터 사이즈별로 1바이트는 16개, 2바이트는 8개, 4바이트는 4개, 8바이트는 2개의 데이터를 한 레지스터에서 처리 할 수 있다.

현재 SSE, SSE2, SSE3, SSSE3, SSE4, SSE4a, SSE4.1, SSE4.2, SSE5가 존재하며 이름은 비슷할 지 몰라도 각자 다른 명령어를 가지고 있다.(SSE4a의 경우는 SSE4의 명령어 2개와 자체 명령어 2개를 가진다.) 대부분의 최신 인텔 CPU들은 SSE4.2까지 전부 지원한다. AMD의 CPU들은 SSE4대신 SSE4a라는 명령어셋을 추가하였다. 하지만 SSE4a는 사실상 명령어를 많이 넣은 것 처럼 보이기 위한 구실 수준으로, 다른 SSE4명령어들은 수십개의 명령어 셋트를 지원하는 반면 SSE4a는 4개밖에 지원하지 못한다.

 

이후 불도저 아키텍쳐에서 AMD가 SSE5 명령세트를 추가했다. 그러나 인텔 제품에서 지원하지 않기에 인지도는 떨어진다.

이 명령어들은 기본 x86명령어들이 지원하지 않는 명령어들중 3D처리, 이미지, 멀티미디어 분야 등의 연산에 도움이 될 수 있는 명령어들이고, 이를 사용하여 부동소수점, 정수 벡터등의 연산처리를 빠르게 처리할 수 있다. 하지만 프로그램이 SSE명령어를 지원하지 않는 이상 이 명령어들은 전혀 사용되지 못한다.

프로그램을 개발할 때 SSE명령어를 사용하기 위해선 해당 임플리멘테이션(OS, 컴파일러 환경)이 지원하는 인라인 어셈블리를 이용하거나 혹은 그에 맞는 헤더를 사용하고 (C의 경우 intrin.h등) 적합한 함수들을 사용하여 코드를 작성하여야 한다. 이를 위한 자세한 문서는 MSDN등에서 찾을 수 있다.

 

SSE는 xmm이라는 전용 레지스터를 이용하므로 MMX나 3DNow!에 비해 FPU와의 연동이 쉽다. 비록 레지스터의 크기가 128bit이지만, 펜티엄4 시절까지만 해도 메모리 <-> 전용 레지스터간 전송 대역이 80bit였기 때문에 데이터 전송에 2배의 시간이 필요했다. 이 문제는 코어 마이크로아키텍쳐에서 해결된다.


기글하드웨어는 2006년 6월 28일에 개설된 해외 컴퓨터 하드웨어 뉴스와 정보, 유저들의 사용기를 주로 소개하는 커뮤니티 사이트입니다.
개인 정보 보호, 개인 및 단체의 권리 침해, 사이트 운영, 관리, 제휴 관련 문의는 이메일로 보내주세요. 관리자 이메일