이전 포스트에서
언급한 그래픽 카드의
넘버링(Numbering)에 이어서...

그래픽 카드(VGA)구입을
위해서 각 제품들의 스펙을
살펴보다 보면 클럭, 램의
용량, 비트
등등의 많은
용어를 접하게 됩니다.

어떻게 생각하면 넘버링을 제일 마지막에 넣어야 되는것이 아닌가 하는 생각도 드는군요.
위에서 언급한 모든 사항을 다 고려해서 그에 맞는 성능에 따라서 넘버가 매겨 지기 때문에... 약간 순서가 바뀐 느낌도 없지 않아 있습니다. ^^
뭐 마지막에 한번 더 다루죠 ~ ^^

이중에서도 근래에 들어서 많이 언급되는
쿠다 프로세서(Compute Unified Device Architecture Processor : CUDA processor)
스트림 프로세서(Stream processor)를 먼저 다루도록 하겠습니다.

Geforce 256 지포스 256
과거 GPU(graphics processing units)라는 개념이
없었을때의 그래픽카드는
컬러수, 해상도 그리고 램댁(RAMDAC : 그래픽카드에서 모니터로 보내는 색상, 해상도 등 여러 디지털 신호를 중간에서 아날로그 신호로 바꾸어 모니터에 보내주는 역할)의 성능에 좌우
되었습니다.

그러다 그래픽연산의 전반을 담당하는 프로세서인
GPU가 나오게 됩니다.(1999년 nvidia Geforce 256)


그래픽 카드(Graphic Card : VGA)원리는
"만약 칼을 휘두르는 장면을 구현한다고 생각하면...
 칼 모양으로 점을 찍고 점을 이어 면을 만들고 그면을 채워 좌표를 이동시켜 움직이게 하면 됩니다."

말로는 쉽지만... 시간이 지날수록 사람들 높아지는 눈높이에 맞추기 위한 방법으로
트랜지스터의 집적도와 파이프라인의 개선만으로는 한계가 있다는 것을 느끼게 되고
이에 따라서 나오게 된것이 GPU의 병렬 구성입니다.

GPU의 발달에 따라 3D연산에 한정되었던 것이 CPU가 하는 일을 도와줘서 보다 빠르게 데이터를 처리할수있는 GPGPU( General-purpose computing on graphics processing uints ) 가 등장하게 되엇습니다.

GPGPU( General-purpose computing on graphics processing uints )에서 알수 있듯이...
그래픽연산에만 국한된것이 아니 보다 일반
적인 범용적인 목적을 위한 GPU라는 것입니다.

CPU혼자서 처리하던 일을 GPU가 도와준다는 것입니다.

쿠다와 스트림 둘다 그래픽 연산만이 아닌 CPU의 연산을 도와주는 프로세서인데...
Nvidia 에서는 이것을 쿠다 프로세서(CUDA Processor)라고 말하고...
AMD(ATI)에서는 스트림프로세서(Stream Processor)라고 말합니다.




둘다 GPGPU의 범위안에 들어가는 것인데... 부르기를 다르게 부르는 것입니다.
그렇다고 양쪽회사다 똑같은 기술은 아닙니다. CPU의 하는일을 덜어준다는 목적이 같다는 거죠. 
즉, GPGPU를 구현하는 프로세서를 Nvidia에서는 쿠다(CUDA)라고 부르는것이고
ATI에서는 스트림 프로세서(Stream Processor)라고 부릅니다.

GPGPU( General-purpose computing on graphics processing uints )는
동영상 인코딩이나 3D 렌더링 작업과 많은 PC 사용자들이 즐기는 게임에서 효과적으로 사용됩니다.
대부분 PC게이머들이 많이 들어봤을 법한 물리연산 효과, 반사 효과, 인공지능 처리 등은 모두 GPGPU가 있기에 큰 발전을 할 수 있는 기반을 다질 수 있었고, GPGPU 기술이 발전할수록 사용자들은 더 실감나는 환경에서 게임을 즐길 수 있을 것입니다.





이러한 GPGPU 바탕위에서 나온것이
피직스(PhysX)입니다.

그래픽 카드에서 사용되는 의미는 주로 3D 게임이나 3D 시뮬레이션, 영화 FX 효과 등에서 사용되는 것으로사실적이고 현실적이 그래픽을 구현할수있게 해주는 물리엔진입니다.

물리엔진은 게임과 영화 등에서 물리적 효과를 만들어 보다 현실감 있게 표현 해주는 것으로서 관성, 중력 등 현실의 물리법칙을
최대한 적용시켜주는 것
입니다. 
물체가 충돌하고, 마찰되어서 끌리고 굴러가고, 탄성력으로 튕기고 중력 가속도로 떨어지고, 천이 펄럭이고, 연기가 공기 중에 퍼지고... 하는 효과를 보다 사실적으로 표현해 줍니다. 대표적인 예로 스타크래프트2에서 사용한 하복 엔진과 Nvidia의 피직스 엔진이 있습니다.


소프트웨어로 물리엔진 구현은 한계를 가지거나 오히혀 역효과를 낼수있습니다.
하드웨어 반도체에서 고속으로 가
속하는 방식을 예전에 에이지아(Ageia)사에서 피직스(PhysX)라는 이름으로 SDK와 함께 발매 되었었으나 추가의 물리엔진 가속 카드를 구매하는 경우가 별로 없어
2008년 엔비디아(Nvidia)가 
인수하였습니다.

엔비디아의 PhysX를 통해 구현이 가능한 효과들은
어떠한 물체가 폭발할 시 발생하는 먼지나 연기 등을 표현해 주는 'Particles' 효
과와
자연스러운 물의 흐름을 표현하는 Fluid 효과, 괴물의 부드러운 피부 질감을 나타낼 수 있는 'Soft Bodies', 그리고 사람의 수
많은 관절을 표현할 수 있는 'Joints', 머리카락이나 옷의 움직임을 사실적으로
표현할 수 있는 'Cloth' 등이 있습니다.


지포스 8천번대 이상의 제품에서 적용되고 있습니다.

Nvidia의 PhysX의 효과를 소개한 동영상입니다.


그래픽 램의 용량시스템버스 등등 의 용어 설명은 다음 포스트에서 계속 이어 가도록하겠습니다. 



Posted by Rapter
,