본문 바로가기

Lecture & Column/vga_lec_col

VGA 계산기 : 실전 응용편

Author : Daeguen Lee

(Any action violating either copyright laws or CCL policy of the original source is strictly prohibited)




오늘날 우리가 사용하는 그래픽카드의 성능을 알기 위해 여러 테스트 툴을 동원하고 있는데
이러한 툴로 직접 테스트한 결과가 공개되기 전까지는 신제품의 성능을 짐작할 수 없어 답답했습니다.
그래서... 공개된 '스펙'만으로 성능을 어떻게 예측해볼까 고민하다 방정식을 만들어보게 되었습니다ㅋ

그럼 편하게 읽어 주세요~ ^^


GPU의 연산은 내부적으로 매우 복잡한 단계를 거치지만

간략화시키면 아래의 세 단계가 됩니다.

1. 쉐이더 작업 (오브젝트의 모양을 만듦)
2. 텍스처 작업 (오브젝트의 모양 위에 질감을 씌움)
3. 렌더링 작업 (모양 & 질감이 형성된 오브젝트를 '그려 냄')

각 작업에 영향을 주는 요소는 쉐이더(SP) / 텍스처 유닛(TMU) / 렌더링 아웃풋 파이프라인(ROP) 이고
각 요소의 갯수 x 클럭에 비례해서 연산속도가 늘어나게 됩니다.
간단히 말해 SP 갯수가 두개 많거나 쉐이더 클럭이 두배 높으면
쉐이더 작업에 걸리는 시간이 1/2로 단축된다는 것이죠.


이렇게 각각의 작업에 할당되는 시간을 계산해서 더하고
GPU 내부에서 각 단계 사이사이에서 낭비되는 시간 (=레이턴시) 을 계산하기 위해서
레이턴시는 단순히 GPU 클럭에 반비례한다고 가정했습니다.
(∴ 클럭이 높을수록 지연시간이 낮아질 테니까요)

그리고 마지막으로, 데이터가 GPU ↔ 메모리 사이를 오가는 레이턴시를 계산하기 위해
이때의 레이턴시는 메모리 대역폭에 반비례한다고 보았습니다.
대역폭은 메모리클럭 x 메모리 비트수로 구해지는 값입니다.


즉 방정식의 최종 모습은 아래와 같게 됩니다.

VGA 연산 시간 = S/(SP 속도) + T/(TMU 속도) + R/(ROP 속도) + I/(GPU 클럭) + O/(메모리 대역폭)

위의 식에서 S / T / R은 각각 쉐이더, 텍스처, 렌더링 연산량을 의미하는 상수입니다.
SP 속도 / TMU 속도 / ROP 속도는 위에서 설명했듯 각 유닛의 갯수 x 클럭으로 정해집니다.
한편 I-항과 O-항은 각각 GPU 내부 / GPU ↔ 메모리 사이의 레이턴시를 의미하는데
I / O 각 문자는 I-항 / O-항의 비례상수가 됩니다.
(더 자세한 설명은 이 글 참조 -> http://udteam.tistory.com/59)


아무튼. 이렇게 해서 만든 방정식을 엑셀 파일로 저장해두고 필요할 때마다 꺼내서 두드려보곤 하는데요
이 방정식을 GTX 200 시절에 만들었음에도 불구하고 최신 그래픽카드까지의 서열도 잘 반영되는 편입니다.
(물론 정확히 몇% 성능이 나온다- 까지 맞지는 않지만, 대충 그래픽카드간의 서열 비교는 되는 편이죠)


백문이 불여일견...
네이밍이 거지같은 -_-;;;; 465, 460 1GB, 460 768MB 사이의 성능 관계를 한번 계산해 봅시다.
우선 465의 스펙을 입력해 보겠습니다.


GTX 465
(352SP / 44TMU / 32ROP / GPU 607MHz / Shader 1215MHz / RAM 3206MHz / 256bit)


▲ 성능표 기준으로 280보다는 좋고 285보다는 약간 안 좋은 전형적인 465의 성능이 나왔습니다.
실제로 벤치를 돌려 보면 모델명으론 아래인 460이 465와 비슷하거나 (768MB 버전) 더 뛰어난 (1GB 버전) 성능을 보여주는데, 과연 이 방정식으로 계산해 본 결과는 어떨까요?


GTX 460 768MB
(336SP / 56TMU / 24ROP / GPU 675MHz / Shader 1350MHz / RAM 3600MHz / 192bit)


▲ 실제와 거의 비슷한 결과입니다. 460 768MB 버전과 465가 성능이 거의 비슷하게 나왔죠?
특히 게임성능이 비슷한 데 비해서 (Model 2의 결과) 3DMark 처럼 쉐이더를 떡칠한 테스트에선
460보다 465가 더 유리하단 것까지 비교적 정확히 반영하고 있습니다. (Model 1의 결과)

그렇다면 과연, 460 1GB 버전이 465를 앞서는 것도 방정식으로 예측할 수 있을까요?


GTX 460 1GB
(336SP / 56TMU / 32ROP / GPU 675MHz / Shader 1350MHz / RAM 3600MHz / 256bit)


▲ 방정식에 넣어 본 결과 실제로 460 1GB버전이 465를 누르는 것으로 나오고 있습니다.
특히 460 1GB의 게임성능은 275~280과 동급이고, 285보다는 떨어지지만 3DMark 점수는 더 잘 나오는 편인데
이것마저도 정확히 반영하고 있습니다. (285의 결과를 100%로 잡았으니 쉽게 비교가 가능하실 겁니다)


그리고 마지막으로...
460 1GB 버전을 800MHz 정도로 오버클럭하면 3DMark Vantage 성능이 470이랑 비슷해지는데
이것도 방정식으로 예측이 가능할지 한번 살펴보도록 하죠.

우선 470의 스펙을 입력해 보겠습니다.


GTX 470
(448SP / 56TMU / 40ROP / GPU 607MHz / Shader 1215MHz / RAM 3348MHz / 320bit)


▲ 470의 성능이 이렇게 나오는군요. 460 1GB를 800MHz로 오버한 스펙도 입력해 보겠습니다.


GTX 460 1GB @ 800/4000


▲ 어떤가요?
오버된 460의 성능이 좀 높게 나온 것 같긴 하지만 그래도 우리가 알고 있는 것과 가까운 결과값이 나왔습니다.
특히 Shader-heavy 모델의 적중률이 높은 편인데 이것은 특별한 비결이 있다기보단 제가 실제 게이밍 환경의 텍스처 / 렌더링 연산량 비율을 정확히 모르기 때문입니다. (-_-;;)


한편, 같은 방법으로 AMD 그래픽카드들의 성능도 비교해 볼 수 있는데
비교적 최근에 출시되어 성능이 공개된 6800 시리즈의 스펙을 한번 입력해 봅시다.


HD 6870
(1120SP / 56TMU / 32ROP / GPU 900MHz / RAM 4200MHz / 256bit)


▲ 보시다시피 6870의 쉐이더(SP) 갯수가 5850보다 많이 적은데도 불구하고
Shader-heavy 모델인 3DMark 모델에서도 5850 < 6870 < 5870의 관계를 성립시키고 있습니다.
그만큼 이 방정식이 코어클럭, 메모리 대역폭 등 다른 요소들로 인한 영향을 무시하지 않는다는 뜻도 되죠.
특히 3DMark 에서 그나마 성능이 안 나오는 편인 6800번대의 특성을 잘 반영해
실 게임성능 모델 (Model 2) 에서는 5850을 더 큰 격차로 따돌리며 5870과 5850 사이의 성능을 내고 있습니다.


그렇다면 6850은 어떨까요?


HD 6850
(960SP / 48TMU / 32ROP / GPU 775MHz / RAM 4000MHz / 256bit)


▲ 6850은 SP 갯수가 적어 3DMark 성능에선 5830보다 떨어지는 편이지만 실 게임성능은 5830보다 뛰어납니다.
...보시다시피, 방정식으로 계산한 결과에서도 이를 정확히 반영하고 있습니다.
(Model 1 / Model 2에서의 결과값을 5830 항목과 비교해 보세요)


아무튼...ㅋㅋ 그래픽카드 성능 계산식이란 개념에 좀 더 친숙해지셨으면 하는 바램에 끄적여 봤습니다. :-P

 

//

 

(아래 위젯은 티스토리의 크라우드펀딩 시스템인 '밀어주기' 위젯입니다. 100원부터 3000원까지의 범위 내에서 글쓴이에게 소액 기부가 가능합니다. 사견으로는 이러한 형태의 펀딩이야말로, 성공적으로 정착될 경우 이해관계자로부터 독립된 벤치마크가 지속가능해지는 원동력이 될 것이라 생각합니다. 제가 작성한 글이 후원할만한 가치가 있다고 여기신다면 밀어주기를 통한 후원을 부탁드립니다. 물론 글을 '가치있게' 쓰는 것은 오롯이 저의 몫이며, 설령 제 글이 '후원할 만큼 가치있게' 여겨지지는 못해 결과적으로 후원을 받지 못하더라도 그것이 독자 여러분의 잘못이 아니란 건 너무 당연해 굳이 언급할 필요도 없겠습니다. 저는 후원 여부와 관계없이 제 글을 읽어주시는 모든 독자분께 감사합니다.)