테크노아
> 기획&벤치 > 강좌
프로세서 성능 향상 기술
테크노아  |  webmaster@technoa.co.kr
폰트키우기 폰트줄이기 프린트하기 메일보내기 신고하기
승인 2000.02.01  00:00:00
트위터 페이스북 미투데이 요즘 네이버 구글 msn


SIMD(Single Instruction Multiple Data)

 컴퓨터의 성능은 단위 시간당 처리할 수 있는 명령어의 개수 또는 연산의 개수로 나타내며 궁극적으로 처리할 수 있는 데이터의 개수가 성능에 대한 지표가 된다. 이제까지의 프로세서는 한 개의 명령어로 한 개의 데이터만을 처리할 수 있었다. 즉, 32비트 프로세서나 8비트 프로세서 모두 8비트 데이터를 처리할 때는 모두 한 번에 한 개를 처리할 수 있다. 이때, 64비트 프로세서의 경우에 무척 비효율적인 방법이 된다. 만약, 한번에 여러 개의 데이터를 동시에 처리할 수 있으면 어떠할까? 그 만큼 많은 데이터를 빠르게 처리할 수 있고 결국 컴퓨터의 성능이 향상될 것이다.

 예를 들어 32비트 프로세서의 경우에 8비트 데이터 4개를 한번에 연산하게 되면 최소한 4배의 성능 향상을 기대할 수 있다. 이러한 처리 방식을 SIMD 방식이라 한다. SIMD 방식은 인텔의 MMX 명령어를 통해서 도입이 되었다. 32비트 레지스터 2개를 동시에 연산하는 기능으로 8비트 연산은 최대 8개, 16비트 연산은 최대 4개를 동시에 처리할 수 있다. 따라서 단순하고 반복적으로 많은 데이터를 처리하는 경우에 적합하며 일반적인 프로그램 연산에서는 크게 도움을 주지 못하게 된다.

 다행히, 최근 널리 사용되는 멀티미디어 자료중에 사운드(16비트), 비디오(8비트) 정보가 많으며 단순한 데이터를 반복적이고 일률적으로 변환 처리해야 하는 경우에 최대의 효과를 얻을 수 있기 때문에 MMX(MultiMedia eXtension)이라는 명칭을 사용하였다.MMX 명령어는 일반적으로 정수 연산을 처리할 수 있으며 멀티미디어 처리 이외의 장점은 찾기 힘들다. 최근 들어 3차원 그래픽 가속 기능이 일반화 되면 실수 연산이 가능한 SIMD 연산 명령어가 필요하게 되었으며, 이를 구현하고 있는 것이 AMD의 3DNow! 그리고 인텔의 SSE(Steaming SIMD Extension) 명령어이다. 이들 명령어는 32비트 정밀도의 실수 연산을 한번에 4개씩 처리가 가능하기 때문에 단순히 FPU를 이용하는 것에 비하여 4배의 성능을 기대할 수 있다. 물론 SIMD 연산을 처리하기 위해서는 미리 데이터를 준비하는 과정이 일반 연산에 비하여 많기 때문에 실제 속도는 2-3배 수준이다.

 

[그림] FP SIMD 연산

 

 3차원 그래픽 연산을 예로 들면 3차원 좌표의 회전, 크기, 위치를 동시에 변환시키는 연산이 주가 되고 이것은 위와 같은 행렬의 곱으로 이루어진다. 이 식을 풀어서 보면 4번의 연산을 다시 4번 반복하고 있다. 3DNow와 SSE는 위와 같은 동일한 형태의 반복 연산을 한번에 수행할 수 있다. 예를 들어 X"를 얻기 위해서는 4번의 실수 곱과 3번의 실수 합 및 기타 연산을 포함하여 총 18회의 실수 연산을 필요로 하게 된다. 하지만, FP SIMD 명령어를 사용하게 되면, 아래와 같이 3회의 명령어로 처리가 가능하게 된다.

 

 AMD의 Athlon은 Enhanced 3DNow!를 탑제하고 있으며 기존의 3DNow!에 비하여 5개의 DSP 명령어가 추가되어 있다. 따라서 소프트웨어 모뎀, 메인보드 사운드, 소프트웨어 미디 등을 고속으로 처리할 수 있다. 또한, 3DNow! 실행기 2개를 내장하고 있기 때문에 기존의 AMD K6-2/3에 내장된 3DNow!에 비하여 1.5배 이상의 성능을 발휘할 수 있게 되었다. 인텔 펜티엄III에서 제공되는 SSE는 128비트 규격의 레지스터를 사용하며 역시 32비트 실수 4개를 동시에 연산할 수 있으며, 최대 정밀도는 128비트 실수 연산을 사용할 수 있기 때문에 3DNow!에 비하여 높은 정밀도의 연산이 가능하다. 물론, 현재의 연산 수준에서 128비트를 필요로 하는 경우는 드물기 때문에 이 부분의 효용성은 희박하다.

 Intel의 SSE는 50개의 명령어로 구성이 되어 있으며 이것은 기본적인 연산이외에도 인터넷 동영상이나 오디오와 같은 Streaming Media의 압축 복원을 위한 명령어들이 추가되어 있기 때문이다. 따라서 인터넷을 통한 멀티미디어 지원에 강점을 가질 수 있으며, 일반 DVD 영화나 음성 인식/합성에도 이용될 수 있다. 따라서 기본적인 장점은 인텔이 AMD에 비하여 우수한 편이다.기본적인 기능과 실제로 효용성이 같을 수는 없다.

 AMD 3DNow!는 명령어의 개수가 작고 응용 프로그램을 작성하기에 적합하며 기존의 컴퓨터 환경을 그대로 이용하고 있다. 반면에 인텔의 SSE는 128비트 레지스터를 사용하기 위해서 새로운 컴퓨터 환경이 필요하며 명령어의 개수가 많기 때문에 최적화에 어려움이 많으며, 프로그램의 동작 환경을 새로 설정해주어야 한다. 즉, 기존의 프로그램을 단순하게 수정하는 수준으로, 지원은 어려우며 운용 시스템에서부터 보다 복잡한 지원 환경이 필요하게 된다. 따라서 마이크로 소프트사의 Direct3D 또는 기타의 소프트웨어 지원이 거의 이루어지지 않고 있기 때문에 실제 효용성을 찾기가 무척 힘든 상황이다.


 
VLIW(Very Long Instruction Word)

 SIMD 기술은 데이터의 실행 개수를 늘리는 방법이며, VLIW 방식은 명령어의 실행 개수를 늘리는 기술이다. 사실 VLIW 라는 용어는 매우 생소한 용어로 생각이 된다. 이것은 최근에야 CPU와 같은 범용 프로세서에 도입이 되었기 때문이며 실제로 3차원 그래픽 가속기에서는 오래전부터 사용되던 기술이다. 우선 VLIW 방식은 용어 그대로 명령어의 길이가 무척 긴 방식으로 128비트 또는 256비트 프로세서에 해당한다. 물론, 이렇게 직접 부르기 힘든 이유는 64비트급의 프로세서 2개 또는 4개로 구성되기 때문이다. 실제로 펜티엄에는 32비트 정수 유니트 두개를 두어 연산이 가능하며 따라서 64비트 프로세서라 해야 하지만 엄밀히 32비트 단위 연산을 하기 때문에 32비트 컴퓨터라 하는 것이며 VLIW 방식의 컴퓨터도 명령어의 실행 단위는 256비트라 하더라도 실제 연산 범위는 64비트가 일반적이기 때문에 64비트 컴퓨터로 구분하는 것이 옳다.

 예를 들어 인텔의 64비트 프로세서인 이타니움(Itanium)의 경우에 128비트 레지스터를 사용하고 256비트 버스 규격의 연산이 이루어지지만 실제 연산 범위가 64비트이기 때문에 64비트 컴퓨터라 하는 것이다. 그럼 명령어의 길이가 길다는 의미는 무었을까? 단순하게 한 개의 명령어의 길이가 긴 것은 아니며 여러 개의 명령어가 하나의 세트로 구성되어 실행이 되기 때문에 명령어의 실행 단위가 길어진 형태를 가지고 있을 뿐이다.

 예를 들어 3차원 그래픽 가속기의 예를 들어 보자. 3차원 그래픽을 처리하기 위해서 입체연산(Geometry)를 하고 나면 폴리곤을 픽셀 단위로 분리시키게 된다. 이 픽셀을 처리하기 위해서는 다음과 같은 일련의 작업이 이루어진다.

 

1단계

텍스쳐맵핑

픽셀을 텍스쳐의 정보로 교환하는 연산

24비트 연산

밝기 조절

픽셀의 밝기 정보에 따라서 픽셀의 밝기를 설정하는 연산

24비트 연산

텍스쳐필터링

텍스쳐의 크기를 폴리곤에 맞게 조절하는 연산

64비트 연산

2단계

알파맵핑

텍스쳐의 투명도에 따라서 픽셀을 합성하는 연산

32+32비트 연산

깊이버퍼연산

깊이 버퍼의 값을 비교하는 연산

24+24비트 연산

안개효과연산

깊이에 따라서 픽셀의 채도를 변화시키는 연산

24비트 연산

 

 위에서와 같이 최소한 3가지의 연산이 동시에 처리가 된다. 이처럼 일련의 처리 명령어를 동시에 처리하는 방식이 VLIW 방식이라 하며, 3단계의 명령어가 수행 단위가 되며 2단계에서는 136비트 연산이 이루어지는 것과 같다. 3차원 그래픽 연산은 이미 정해져 있는 규격을 따르기 때문에 하드웨어적으로 명령어의 규격과 지원방식이 구성되어 있다. 이것을 Hard wire 방식이라고 한다. 문제는 범용 프로세서에서는 명령어의 구성이 고정적이지 않고 무척 다양하기 때문에 위에서처럼 고정적으로 지원할 수는 없으며 프로세서에서 실시간으로 명령의 배열이 이루어져 실행이 되어야 한다. 이를 구현하기 위해서는 무척 복잡한 과정을 거쳐야 하며 인텔의 Itanium에서 VLIW 방식과 SIMD 방식을 접목시키고 RISC의 동작 방식을 이용하여 프로세서가 동작하도록 하고 있다. 자세한 것은 다음을 살펴보자.

 

 결론적으로 한번에 여러 개의 명령어를 수행할 수 있다면 이것은 최상의 프로세서의 성능을 구현할 수 있을 것이다. 하지만, 연산 비트수가 증가할 수록 보다 복잡한 프로세서의 동작 메카니즘이 필요하게 되고 또한 하드웨어 뿐만 아니라 소프트웨어의 지원도 함께 필요하게 된다. 즉, 단순한 하드웨어 수준의 지원은 RISC 기술에서 지원이 된 사양이며, VLIW 방식은 소프트웨어가 자체가 VLIW 방식에 적합하게 작성되어 실행이 되며 이때 최상의 성능을 발휘할 수 있게 된다. 따라서 기존의 소프트웨어를 적용한다면 큰 효과를 기대하기는 힘들다.


[인텔의 이타니움(Itanium)]

 인텔의 이타니움을 별도의 장으로 분리한 이유는 AMD Athlon에서는 RISC, SIMD 방식이 도입이 되었으며 많은 실행 유니트를 내장하여 인텔 펜티엄III를 크게 앞서는 성능을 구현하고 있다. 하지만, 인텔은 이타니움에서 EPIC(Explicitly Parallel Instruction Computing)이라는 새로운 기술을 도입하면서 또다른 프로세서의 동작 체계를 가지고 있기 때문이다. 사실 궁극적으로 프로세서의 성능 향상을 위한 모든 기술을 도입했다고 해도 과언이 아니다.

 고전적인 의미에서 이타니움과 애슬론을 비교한다면 다음의 표와 같다.

 

 

Intel Itanium

Intel Pentium III

AMD Athlon

명령어 해석기

9

3

3

정수 실행 유니트

4

2

3

실수 실행 유니트

2

1

3

메모리 유니트

2

1

1

분기처리 유니트

3

-

-

실행 명령어

11 - 19

4 - 8

7 - 8

[표] 프로세서들의 사양 비교

 인텔 펜티엄III와 AMD 애슬론은 기본적으로 SISD(Single Instruction Single Data) 명령어 처리 과정을 가지고 있으며, MMX/3DNow!/SSE 등의 SIMD 명령어를 사용하기 위해서는 전용의 명령어를 사용하거나 또는 특수한 동작 모드로 전환해야 한다. 인텔 이타니움은 기본적으로 SIMD 처리 방식으로 명령어를 처리하며 기존의 데이터는 SIMD 방식으로 전환이 되게 된다. 예를 들어 64비트 실수 연산이 필요한 경우에는 128비트 레지스터를 이용하여 유니트 당 두 개의 연산을 처리할 수 있으며 두 개의 유니트를 이용하여 최대 4개의 실수 연산을 처리하게 된다. 단, 정수 연산의 경우에 최대 128비트 정밀도의 연산이 가능하지만 MMX와 같이 SIMD를 특별히 지정하는 경우를 제외하고는 하나의 유니트는 한 개의 명령어만을 실행하게 된다. 물론, SIMD 방식에서는 32비트 정밀도의 정수 연산을 최대 16개를 처리할 수 있다. 실제로 일반 정수 연산에서 4개 이상의 연산을 동시 실행하는 경우는 드물며 일반 명령어와 혼합된 연산의 경우에도 4개 이상의 유니트를 필요로 하지는 않기 때문에 명령어 컴파일 과정의 단순화를 위해서 취해지는 조치이다. 만약, 분리된 연산의 경우에는 기존의 방식대로 유니트 당 하나의 명령어를 나누어 처리하기 때문에 클럭 당 2개의 명령어를 처리하지만 동종의 명령어는 유니트에 분류되어 동시 실행되는 형태로 64비트 연산은 최대 4개 그리고 32비트 연산은 최대 8개를 처리할 수 있다. 이것은 인텔 펜티엄III에 내장되어 있는 SSE 코어 두 개를 내장한 것과 동일하다.

 

 

[인텔] Itanium의 프로세서 동작 다이어그램



[AMD] Athlon의 프로세서 동작 다이어그램


 기본 명령어 실행 유니트의 개수는 인텔 펜티엄III의 두 배 수준으로 늘어났지만 AMD 애슬론 프로세서에 비하여 큰 차이를 가지고 있지는 않다. 따라서 애슬론에 비하여 큰 강점은 없어 보인다. 하지만, 실행 유니트의 개수와 비교하여 명령어 해석기가 3배로 늘어났고 더불어 분기 처리 유니트 3개가 추가가 되었으며 실행 명령어 개수도 기존의 펜티엄III와 비교하여 2배에서 4배까지 늘어났으며 AMD에 비해서도 2배 이상의 기본 성능을 갖추고 있다. 그렇다 인텔의 EPIC 기술이 바로 핵심이다.

 앞에서 설명한 RISC 기술은 한번에 여러 개의 명령어를 여러 개의 실행 유니트로 동시에 실행하는 것이 주된 핵심이다. 문제는 컴퓨터 프로그램은 선형으로 진행되고 실행 위치가 중간 조건에 따라서 바뀌는 분기가 발생한다. 또한, 이전의 실행 결과에 의해서 다음 연산이 연계되어 진행되는 경우가 많다. 따라서 연산의 인과관계와 분기를 효과적으로 제어하는 방법이 RISC 기술에서의 최대의 숙제가 되고 있다.기존에는 처리할 연산을 미리 준비하는 슈퍼 스캐일러 구조를 가지고 있다. 만약, 분기가 예상되면 예상 분기점의 모든 명령어를 모두 준비하여 분기 명령어를 실행하면 미리 준비한 명령어를 이어서 실행하는 방법을 이용한다. 물론, 분기 이전에 명령어들은 여러 개가 한꺼번에 병렬로 실행된다. 이러한 기술을 분기 예측 기술이라 한다. 문제는 현재의 프로그램들에서는 분기가 매우 빈번하게 발생하기 때문에 현재의 RISC 기술은 한계를 들어내고 있는 것이다.

 이것은 기존의 병렬 처리 기법이 프로세서에 의해서만 이루어지기 때문에 발생하는 현상이다. 만약, 소프트웨어에서 미리 병렬 처리에 적합하도록 프로그램을 만들어 준다면 병렬 처리 효율을 극대화 할 수 있다. 또한, 분기 코드를 최소화 할 수 있다면 당연히 더욱 병렬 처리에 적합하게 될 것이다. 분기 코드를 없애기 위해서는 최소한 두 개의 병렬 처리 유니트가 있어야 한다. 즉, 특정 조건에 참인 경우와 아닌 경우를 하나의 명령어 처리 선상에 받아들일 수 있어야 하며 따라서 명령어의 길이는 길어지게 된다.

       

 실제로 이타니움에서는 128비트 레지스터로 구성이 되어 있으며 한 개의 레지스터는 3개의 명령어로 구성이 되어 있다. 이러한 명령어 세트 6개를 병렬로 동작시킬 수 있다. 따라서 실제로 수행되는 명령어의 개수는 6개이지만 처리되는 단계는 12단계를 한꺼번에 실행하게 된다. 이것은 앞에서 설명한 VLIW 방식에서 여러 단계를 한꺼번에 실행한 다는 개념과 유사하다.

[Itanium의 실행 유니트는 3개의 명령어의 조합으로 이루어진다]

 

 인텔 이타니움은 VLIW 방식과 SIMD 방식을 동시에 구현하고 더불어 RISC 기술에서 보여주었던 다중 실행 유니트에 의한 동시 다발적인 처리가 주된 핵심이다. 이를 위한 병렬 처리 과정이 소프트웨어를 기계어로 번역하는 과정에서 명확하게 지정되어진 병렬 처리 명령어를 사용하는 컴퓨터(EPIC)라는 용어의 의미이다.


[인텔과 자만심 또는 자부심]

 인텔은 애슬론의 도전을 두려워하지 않고 있다. 어쩌면 별로 관심을 두지 않고 있는지도 모른다. 인텔 이타니움은 기본적으로 펜티엄III 프로세서 2개를 한 개로 통합시킨 구조로 단순한 병렬이 아닌 보다 최적화된 명령어 체계와 구조를 갖추고 있기 때문에 기존의 명령어 체계에서도 애슬론을 월등히 앞설 수 있는 기본 조건을 갖추고 있다. 실제로 펜티엄III에는 한 개의 FPU가 있고 애슬론에는 3개의 FPU가 있다. 하지만 동일 클럭에서는 애슬론이 20-30% 수준의 성능 향상이 그치고 있다. 반면에 이타니움은 펜티엄III보다 월등히 우수한 FPU를 2개를 갖추고 있으며 기존의 명령어를 SIMD로 처리하는 기능을 갖추고 있다. 이론적으로 실제 실행 효율은 적게는 3배 많게는 4배까지 향상이 되며, 이것은 애슬론의 두 배 이상의 성능을 구현할 수 있음을 의미한다.

 물론 이타니움은 웍스테이션급의 고급 컴퓨터에 사용될 프로세서로 일반 개인 사용자가 접하기는 당분간 힘들다. 하지만 개인 사용자 영역까지 눈을 돌리며 머시드라는 코드명에서 이타니움이라는 새로운 코드명으로 발표된 인텔의 새로운 프로세서가 과연 어느 정도의 위치를 차지할 수 있을 지는 지켜볼 일이다.

[관련기사]

테크노아의 다른기사 보기  
폰트키우기 폰트줄이기 프린트하기 메일보내기 신고하기
트위터 페이스북 미투데이 요즘 네이버 구글 msn 뒤로가기 위로가기
이 기사에 대한 댓글 이야기 (0)
자동등록방지용 코드를 입력하세요!   
확인
- 200자까지 쓰실 수 있습니다. (현재 0 byte / 최대 400byte)
- 욕설등 인신공격성 글은 삭제 합니다. [운영원칙]
이 기사에 대한 댓글 이야기 (0)
e피플
[e피플] 나이가 대수? 공조냉동기계기능사 필기시험 100점 맞은 NCS교육생
[e피플] 나이가 대수? 공조냉동기계기능사 필기시험 100점 맞은 NCS교육생
나이가 들면 들수록 공부하기가 어렵다는 말이 있다. 더군다나 실업인 상태에서 공부하는 것이라면 부담이 더 클 수 밖에 없다.하지만 이를 비웃듯이 극복하고, 올해 2월 공조냉동기능사...

제호 : 테크노아  |  발행인 : 김필규  |  편집인 : 김필규  |  청소년보호책임자 : 박상규
서울지사 : 서울특별시 구로구 디지털로32가길 18, 7F | 제보 : it@technoa.co.kr
발행소 : 전라북도 전주시 완산구 전룡6길 6 3F | 등록번호 : 전라북도 아00057
등록일자 : 2008년 1월 14일  |  대표전화 : 070-8755-6291  |  FAX : 02-6280-9562
Copyright © 1999-2017 테크노아. All rights reserved. mail to technoa@technoa.co.kr