보통 PC계열에서 보통 성능향상이라고 하면...
이전세대 제품의 전력소모를 유지하면서 성능을
높이는 방법이나, 성능을 유지면서 전력소모를
적게 가져 가는 방식을 선택합니다.
그런데 이번 샌디 브릿지(SandyBridge)
전력소모를 줄이면서 성능향상
을 가져왔기 때문에
획기적이라는 표현을 많이 사용합니다.

샌디브릿지 프로세서 (Sandybridge Processor)
성능향상의 요소중 빠질수 없는 것이
"AVX 명령어세트(AVX instruction set)"입니다.

그냥 단순히 이전보다더 좋아졌습니다. 이러면 너무 성의 없지만...
그렇다고 쉽고 상세하게설명할 정도의 전문가도 아니기에...  저의 얕은 지식 한도안에서만
설명하도록 하겠습니다.
(보시다 잘못된 내용이 있으면 바로 지적 해주시길 바랍니다.)

먼저
명령어 세트(instruction set)에 대해서 말하자면...

CPU의 기능은 명령어들에 의해서 결정됩니다. 이 명령어들의 종류와 수는 CPU마다 약간씩 차이가
있는데...
어떠한 CPU를 위해 정의되어 있는 명령어들의 집합을 명령어세트(instruction set)라고 합니다. 일종의 수학 공식정도의 개념으로 이해하시면 됩니다.  데이터 계산의 패턴을 미리 CPU에 넣어두고 해당패턴의 계산이 나오면 바로 공식에 대입해서 답을 구하는것입니다.
원의 넓이는 구함에 있어서 적분으로 구해도 되지만... πr² 을 사용하는게 더 빠르죠

즉, 현재 AVX(Advanced Vector Extensions) 명령어 세트는 샌디브릿지 프로세서를 위한것입니다.



그런데 이 명령어 세트에 관한 내용을 접하시다 보면
자연히 MMX,SSE, SIMD, SISD등의 용어도 접하시게 되는데...
MMX나 SSE, 그리고 AVX 는
"SIMD 연산유닛"의 일종입니다.

SIMD (Single Instruction stream Multiple Data stream) 사용횟수가 빈번한 작업들을 처리하기 위해 CPU에다 미리 준비해 두고 그 작업이 필요할때 연산유닛이 작동을 해서 복잡한 작업을 단순화 시킴으로 성능을 높이기 위한것입니다.
일종의 매크로[각주:1]와 유사한 개념이라고 생각하시면 될듯합니다.
SIMD가 사용되는 연산은 하나하나의 픽셀마다 동일한 종류의 연산을 반복해야 되는 이미지의 필터링이나 인코딩 작업이 가장 대표적입니다.

즉 SIMD는 여러개의 데이터를 하나의 명령어로 처리하는 방식을 말합니다.
위의 SIMD가 명령대 데이터의 비율이 1대 다수였다면...

SISD(Single Instruction stream Single Data stream)

한 번에 한 개씩의 명령어와 데이터를 처리하는 단일 프로세서 시스템을 말하는데...
즉 명령어대 데이터의 비율이 1:1인것입니다. 
대표적인것이 워드 작업입니다.

AVX역시 이전의 SSE와 같이 SIMD의 일종으로 멀티미디어 관련 명령어세트인데...
MMX는 과거는 펜티엄 2시절 처음 선보인것으로 64비트이고, 그 다음으로 펜티엄3 시절에
나온것인 SSE인데... 128비트입니다. 이 SSE가 이전 린필드,클락데일, 애런데일까지 SSE4.2로
이어지다... 이번 샌디브릿지의 
AVX는 256비트의 대역폭을 가지고 있습니다.

(과거 펜티엄2에서 펜티엄3로 가면서 SSE의 지원여부에 따라
 그 성능이 3~4배정도 차이나던 때가 갑자기
생각나는군요.
 혹시 AVX의 등장으로 다시 반복되는건 아닌가 하는 불안감이... 살짝 듭니다.^^

 
이 명령어 세트의 발전은 하위로는 호환이 되지만 그 반대는 되지않습니다. 

 학생들이 학년을 올라감에 따라서 습득하는 지식과 비슷한데...
 즉 고등학생은 미적분도 알고 이차방정식도 알지만... 중학생은 이차방정식에 머물러 있는겁니다.
 미적분을 할려고 해도 할수 없는경우죠.)

                       샌디브릿지 프로세서에 적용된 기술들
링크 ☞  터보 부스트2.0 (Sandy Bridge Processor Turbo Boost 2.0)
링크 ☞  하이퍼스레딩과 멀티스레드 그리고 인텔의 파이프라인(Hyper-Threading & Pipeline)
링크 ☞  인텔의 AES-NI, TXT, VT-D (AES 명령어 세트, 신뢰 실행 기술, 가상화기술)
링크 ☞  샌디브릿지 AVX 명령어 세트 (Sandybridge AVX instruction set)

                         샌디브릿지 데스크탑 i 시리즈 프로세서의 구분
링크 ☞ 샌디브릿지 데스크탑 CPU 비교 1부 : 종류와 구분 (Sandy Bridge Processor)
링크 ☞ 샌디브릿지 데스크탑 CPU 비교 2부 : 샌디브릿지 내장 그래픽 HD 2000 & HD 3000
링크 ☞ 샌디브릿지 데스크탑 CPU 비교 3부 : 성능 비교 (SandyBridge Processor BenchMark)

                      
Core i3-2105
제품의 스펙과 내용 링크 
링크 ☞ Core i3 2105 & Core i5 2405S (새롭게 출시된 인텔 샌디브릿지 데스크탑 프로세서)

           샌디브릿지 데스크탑 펜티엄(Pentium) 시리즈 프로세서의 구분
링크 ☞ 샌디브릿지 펜티엄 프로세서의 비교와 차이 (Pentium G620, G620T, G840, G850)


     샌디 브릿지 노트북용 모바일 프로세서의 성능은 아래의 링크를 참고하세요.
링크 ☞  샌디브릿지 노트북 CPU (1부 : Core i3 & Core i5)
링크 ☞  샌디브릿지 노트북 CPU (2부 : Core i7)
링크 ☞  샌디브릿지 노트북 CPU (3부 : 내장 그래픽코어 HD Graphics 3000)

 


AVX의 대역폭이 2배인 256비트로 확장 되었다는것은 동시에 8개의 32비트 부동소수점이나
1개의 256비트 부동소수점을 처리할 수 있다는 것을 의미합니다. 이론상이지만 부동소수점 성능
역시 2배로 늘어나게 됩니다.

※ 부동소수점
정수는 소수점이 없기 때문에 숫자를 2진수 형식으로 정확히 표현할 수 있습니다.
하지만 실수(float, double)은 정수와 같이 정확히 2진수 형식으로 표현할 수가 없습니다.
이를 표기하기 위한 방법이 부동소수점입니다.

예를들어

123.456이라는 숫자가 있다고 했을 때 이를 컴퓨터에서는 처리한다고 할때
123456 * 10^-3 과 같은 형식으로 바꿔서 처리합니다. (실제로는 지수의 밑수가 10이 아니라 2죠) 이런 형식을 쓰면 앞의 123456과 지수 -3은 정수가 되므로 2진수 형식으로 표현이 가능합니다.
실제 메모리에는 123456과 -3이 영역을 나눠서 저장됩니다. 이렇게 처리하면 소수점이 원래 위치에 고정되지 않고 지수 형식 값에 따라 옮겨다닐 수 있으므로 부동 소수점이라고 하는 것입니다.


AVX는 단순히 SSE에 비교해서 연산의 배열폭(Width)만 2배로 넒어진게 아니라 
벡터 연산의 효율적인 하드웨어
처리를 위한 새로운 명령어 세트가 다수 추가되어
전체 레지스터의 갯수가 SSE기반 프로세서 대비 약 2배가 되었습니다.
이것은 256비트 레지스터[각주:2]를 사용하여 데이터 I/O 효율이 나아지고 데이터의 전달과 태그가 더
좋아졌으며, 데이터의 배열 순서를 동적으로 고칠 수 있게 됩니다. 이렇게 하여 필요한 데이터를

조직하고, 엑세스하고 불러들여 연산하는 속도가 더 빨라지고 효율적이게 됩니다.

AVX의 구현에 따라서 두배로 확장된 256비트 연산 능력을 끌어내기 위해 메모리 클러스터의 구성을
변경하고 확장하는 등 구조적 개선과 새로운 부동 소수점의 연상 명령 추가함으로써 
이전 GPU계산 보다 전력 소모를 줄이면서 성능을 향상 시켰습니다.

AVX와 SSE의 처리 속도 비교

AVX와 SSE의 처리 속도 비교

이번 샌디브릿지의 AVX에 관한 내용을 보면 과거 펜2에서 펜3로 넘어가는 과정이 생각나는데...
과거 펜티엄 3가 SSE를 완벽하게 지원할때... 펜티엄 2와의 성능 차이는 3~4배정도 였습니다.

이번에 인텔에서 밝힌 AVX지원여부에 따른 CPU의 성능차이는 1.5~ 2배입니다.
그리고 그 차이는 앞으로 최적화가 이루어 질수록 더 커질것입니다.

이 AVX를 사용하기 위해서는 운영체제도 새로운 레지스터를 사용할 수 있도록 대응해야 하는데
리눅스는 이미 커널 2.6.30 이상부터 지원되고 있고, 윈도우 환경은 윈도우 7 SP1[각주:3]
윈도우 서버 2008 R2 SP1
에서 AVX를 지원합니다.
 



  1. 자주 사용하는 여러 개의 명령어를 묶어서 하나의 키 입력 동작으로 만든 것을 매크로라고 합니다.온라인 게임에서 자동사냥 역시 매크로의 일종입니다. [본문으로]
  2. CPU내부에 계산을 위해 일시적으로 수치를 넣어두는 부분으로 CPU는 메모리에서 데이터를 한번 레지스터에 넣은 다음 더하기, 빼기, 곱하기, 나누기나 논리연산등을 실행한다. [본문으로]
  3. Service Pack1 - 서비스팩1 [본문으로]

Posted by Rapter
,