2012년 7월 2일 월요일

3D now


약진 3D NOW!!!

최근 들어 소켓7 진영 AMD의 3D NOW를 탑재한 K6-2가 약진하고 있다. 3D NOW는 AMD, Cyrix, Centaur tech. 3개 사의 합작품으로, 3D 그래픽의 속도를 빠르게 하기 위해 제작되었다. 3D NOW는 멀티미디어나 3D 그래픽 처리가 특정한 수치처리 루틴 을 여러 번 반복한다는 점에서 착안하여 이 루틴들을 고속화하기 위한 펜티엄 호환 CPU용 21개의 명령어군을 말한다. 하지만 LX나 BX 보드에 펜티엄2나 셀러론을 쓰는 사람들에게는 해당되지 않는 말일 것 같다.

그래도 아직 많은 사람들이 소켓7 보드를 쓰고 있고, 아직 486보드를 쓰고 있는 사람들의 호기심을 사고 있는 것이 사실이다. 또한 신규 구입자들도 저렴한 가격의 소켓7을 무시할 수도 없는 입장이고, 지원하는 업체 측의 동향도 사이릭스의 자라페노가 개발 중이고, AMD 가 K7의 출하를 계획하고 있는 것을 보면 소켓7의 수명은 생각보다 길어질 것 같다. 이러 한 흐름을 타고 3D NOW는 반 인텔 진영을 지키는 복병이라고 할 수 있다.

아직은 3D NOW가 AMD의 K6-2 CPU에만 사용되고 있지만 3D NOW 진영에 Cyrix와 IDT 등이 곧 가세할 예정이다. 3D NOW는 이제 다양한 DirectX, 여러 유명한 가속보드 들의 드라이버가 속속 개발되어 배포되고 있고, 심지어는 리눅스를 위한 지원도 시작되고 있다.

3D NOW의 안에는? 3D NOW는 왜 빨라질 수 있는가?

3D NOW를 SIMD라는 단어로 많이 설명한다. 이것은 Flynn이라는 사람의 명령어와 데이터 흐름에 따른 프로세서 분류방법 중 하나이다. 이 분류방법은 SISD, SIMD, MISD, MIMD으로 나눈다. 이 중 SIMD는 Single-Instruction Multiple-Data의 준말로 하나의 명령어 로 여러 개의 데이터를 처리하게 된다. 진정한 SIMD 머신은 많은 수의 처리기가 존재하는 멀티프로세서를 말하는 것이기 때문에 2개의 처리기를 가진 AMD K6-2에 적용하기에는 무 리가 있지만 하나의 명령어를 이용하여 다량의 데이터를 읽고 이를 처리하는 것은 사실이다.

다음의 예를 보자.

3D NOW에는 PFMUL이라는 명령이 있다. 이것은 다음과 같이 두 번의 부동소수점 곱셈을 한 명령어로 수행한다. 처리되는 내용을 단순화시키면 다음과 같다.

A, B, C <- memory; A = A * C, B = B * C; A, B, C를 읽고 두수를 곱한다.

만약 이것을 일반명령어로 구성한다면

A <- memory; A를 메모리에서 읽는다.

B <- memory; B를 메모리에서 읽는다.

C <- memory; C를 메모리에서 읽는다.

A = A*C; 곱한다.

B = B*C; 곱한다.

의 형태가 된다. 3D NOW가 한번의 명령어로 모든 처리가 끝난다면, 후자의 일반적인 처리 는 데이터를 이리저리 옮기고, 다시 곱해야 하기 때문에 시간 처리가 늘어나게 된다.

또한 위에서 설명한 PFMUL은 비교적 3D NOW의 단순한 명령어에 해당한다. PFMUL은 다른 명령어들과 결합하여 새로운 명령을 만들어서 더욱 복잡한 처리가 하나의 명령어로 처리 가능 하다.

3D NOW는 기존의 인텔의 펜티엄 MMX가 추가 시킨 8x8, 16x4, 32x2 64x1 패키드 타입을 사용한다. 그러나 정수 타입만을 처리하는 MMX와는 달리 3D NOW는 32x2의 단 정밀도, 부동소수점용의 타입을 지원한다.

이 타입은 IEEE-754 32비트 부동소수점 포맷 두 개를 붙여서 64비트를 이루는 형태이다. IEEE-754 32비트 부동소숫점 포맷은 1트의 부호비트(sign bit), 23비트의 가수부, 8비트의 지수부로 이루어져 있어서 MMX의 정수형 연산보다 훨씬 표시 영역과 정밀도가 높다. (이 방식의 포맽은 2의 -127승 단위의 정밀한 수치 표현이 가능하다.) 그러나 정수처리가 아닌 부동소수점 처리가 3D 게임에 적용되기 위해서는 빠른 부동소수점 연산처리 속도가 필요하기 때문에 아직 도입이 안되고 있었다.

인텔이 MMX기능을 발표하던 96년만 해도 도입되지 않았을 정도이다. 그러나 CPU의 속도 가 400 Mhz에 달하고, 고속의 AGP 포트가 실용화되어 화면 데이터 이동속도가 빨라져서 CPU의 부하가 줄어들고 멀티 텍스쳐 게임이 유행하는 요즘 같은 시기에 만들어진 3D NOW는 재빠르게 부동소수점 처리를 채택한 것이다.

3D NOW의 미래

3D NOW는 적절한 선택이었고, 앞으로 이를 지원하는 CPU들이 이어질 것이다. 그러나 인텔측의 추격도 만만치 않아서 곧 시장에 나오게 될 카트마이에서 채택하게 될 KNI에서는 부동소수점 처리를 위한 일련의 60 여 개 가까운 SIMD 명령어가 나오게 될 것이다. 이것은 3D NOW보다 훨씬 많은 수의 명령어이다. 양측의 이러한 경쟁을 지켜보는 것은 흥미로운 일인데 필자는 궁금한 것이 하나 있다.

3D NOW측의 다음 대응이 어떻게 되느냐 하는 것이 다. AMD와 Cyrix, IDT가 사용하는 CPU의 코어는 소켓7의 펜티엄호환 코어이다. 이 코어 에 AMD, Cyrix, IDT 측이 KNI 명령어들을 올려놓을 것이냐? 현재의 3D NOW를 그대로 유지할 것이냐? 강화된 3D NOW를 올릴 것이냐? 아니면 올릴 것이냐? 하는 점이다.

이미 MMX 명령어들이 AMD Cyrix, IDT칩에 올라간 것을 보면 인텔이 라이선스를 물고 귀찮게 하지는 않을 것으로 보인다. 그렇다면 3D NOW 많은 중복성을 보이는 KNI 택할 것인지, 아니면 3D NOW 계속 고수할 것인지, 양쪽을 선택할 것인지? 아마도 쪽을 선택하는 것으로 되지 않을까? 생각되기는 하지만 이는 결국은 3D NOW 포기하는 결과가 것이기 때문이다.

 

댓글 없음:

댓글 쓰기

국정원의 댓글 공작을 지탄합니다.

UPBIT is a South Korean company, and people died of suicide cause of coin investment.

 UPBIT is a South Korean company, and people died of suicide cause of coin. The company helps the people who control the market price manipu...