기타 칼럼

리뷰(게임, 하드웨어, 칼럼, 영상리뷰) 게시판은
닥터몰라 운영진이 작성한 게시글을 보는 게시판으로 회원들의 작성은 금지되어 있습니다.
(단, 좋은 글이 있으면 글 작성자의 허락과 운영자의 회의를 통하여 리뷰게시판으로 이동 됩니다.)

[VGA] 그래픽카드 성능의 비밀 : VGA 계산기 만들기

IYD | 조회 341 | 추천 0 | 2010.03.03. 14:06 http://drmola.com/etc_column/27174

Author : Daeguen Lee

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

 



1. 개요

GPU의 처리과정을 대강 살펴보면 아래와 같습니다.

(식 1) 그래픽램에서 GPU로 운반 -> 쉐이더연산 -> 텍스처연산 -> 픽셀 렌더링 -> GPU에서 그래픽램으로 운반

여기서 빨간색 부분이 실제로 "연산" 이 일어나는 부분입니다.
(앞으로 위의 식에서 "연산" 부분에 관계된 변수는 빨간색으로 구분해 표시하겠습니다.)

위의 식에서 우리가 생각할수 있는 변수는 아래의 다섯 개입니다.

 

- 그래픽램-GPU 사이에서의 지연시간 (GPU 밖 지연, 메모리 대역폭에 반비례)
- GPU 내부, 각 유닛 사이에서의 지연시간 (GPU 안 지연, GPU 클럭에 반비례)
- 쉐이더가 연산되는 시간 (쉐이더 연산량에 비례, 쉐이더 연산속도에 반비례)
- 텍스처가 연산되는 시간 (텍스처 연산량에 비례, 텍스처 연산속도에 반비례)
- 픽셀이 렌더링되는 시간 (렌더링할 픽셀 양에 비례, 렌더링 연산속도에 반비례)

 

또한 위 다섯 변수를 구현하기 위해 아래와 같은 변수를 상정해야 합니다.

 

- 메모리 대역폭 (메모리클럭 x 메모리 비트레이트)
- GPU 클럭 (※ 쉐이더클럭과 GPU 도메인 클럭이 다른 경우는 쉐이더클럭도)
- 쉐이더 연산량 (S라는 문자로 나타내겠습니다. 이하 동일)
- 텍스처 연산량 (T)
- 렌더링할 픽셀 양 (R)
- 쉐이더 연산속도 (GPU의 쉐이더유닛 갯수 x 쉐이더 (or GPU) 클럭)
- 텍스처 연산속도 (GPU의 TMU 갯수 x GPU (도메인) 클럭)
- 렌더링 연산속도 (GPU의 ROP 갯수 x GPU (도메인) 클럭)

 

이 변수들을 이용해 처음의 식을 다시 쓰면 아래와 같습니다.

 

(식 2) GPU 밖 지연 + GPU 안 지연 + 쉐이더가 연산되는 시간 + 텍스처가 연산되는 시간 + 픽셀이 렌더링되는 시간

 

식 1에서 다시 각각의 '연산되는 시간' 항을 아래와 같이 풀어줄 수 있습니다.

 

(식 3) GPU 밖 지연 + GPU 안 지연 + S/쉐이더 연산속도 + T/텍스처 연산속도 + R/렌더링 연산속도

 

그리고 식 2는 다시 한번 아래와 같이 전개됩니다.

 

(식 4) GPU 밖 지연 + GPU 안 지연 + S/(쉐이더 갯수 x 클럭) + T/(TMU 갯수 x 클럭) + R/(ROP 갯수 x 클럭)

 

여기서 실질적으로 GPU 성능에 해당되지 않는 앞의 두 '지연' 항을 빼 보죠.

 

(식 5) S/(쉐이더 갯수 x 클럭) + T/(TMU 갯수 x 클럭) + R/(ROP 갯수 x 클럭)

 

얼핏 보기엔 복잡하지만 GPU 내부의 각 유닛이 주어진 연산을 수행하는 시간을 더한 것에 불과합니다.
(GPU가 연산을 수행하는데 걸린 '시간' 이므로 실제 성능은 이 값의 역수에 비례하겠죠?)
앞으로 각 항의 머릿글자를 따서 'S 항', 'T항' 등으로 부르겠습니다.

 

 


2. 실제 그래픽카드에 대입하기

 

그럼 식 5에 맞춰서 5870의 성능을 계량화해 봅시다.
5870은 1600개의 쉐이더, 80개의 TMU, 32개의 ROP를 가지며 GPU 클럭은 850MHz입니다.

(식 5a) 5870: S/(1600 x 850) + T/(80 x 850) + R/(32 x 850)

 

같은 방법으로 5850, 5830, 4890은 다음과 같이 나타내집니다.


(식 5b, 5c, 5d)

5850: S/(1440 x 725) + T/(72 x 725) + R/(32 x 725)
5830: S/(1120 x 800) + T/(56 x 800) + R/(16 x 800)
4890: S/(800 x 850) + T/(40 x 850) + R/(16 x 850)

 

여기서 주목할 부분이 있는데, 5830은 S항 및 T항이 4890에 비해 작지만 R 항이 4890보다 더 크겠죠?
(ROP 갯수가 같은데 GPU 클럭은 더 낮아서, 분모가 4890의 R항보다 작아지기 때문이죠)
다시 말해, 5830은 GPU 내부에서 쉐이더/텍스처 연산을 아무리 빨리 끝내더라도
모니터에 실질적으로 픽셀 단위로 그려 주는 픽셀 렌더링이 느리기 때문에 병목현상이 생긴다는 얘기입니다.

 

 


3. 모델 1: 쉐이더 중심

 

그럼 이제 S, T, R의 값을 가정해야 하는데, 대표적인 쉐이더중심 벤치마크인 3D마크를 생각해 봅시다.
3D마크는 쉐이더 연산량이 매우 많으므로 S가 굉장히 크고, 나머지 둘 (T, R) 은 매우 작다고 가정합시다.
그러면 위의 식 5들은 다음과 같이 줄여집니다.


(식 6a, 6b, 6c, 6d)

5870: S/(1600 x 850) = 이 결과값을 100% 라고 두면
5850: S/(1440 x 725) = 130.27%
5830: S/(1120 x 800) = 151.79%
4890: S/(800 x 850) = 200% 가 됩니다.

 

위 결과값들의 역수를 취하면 5850은 5870의 76.76%, 5830은 65.88%, 4890은 50%의 성능을 가지게 됩니다.
물론 여기에서 구한 연산성능이 곧바로 성능에 직결되는 것은 아닙니다.
예를 들어 우리가 위에서 생략한 '지연' 항들을 반영하면 % 차이는 조금 줄어들겠죠?
GPU가 연산을 수행하는 시간 : GPU 안 지연시간 : GPU 밖 지연시간의 비율이 2:1:1 이라면 어떻게 될까요?

 

(식 7a, 7b, 7c, 7d)

5870: 100% (연산시간) + 50% (GPU 안 지연시간) + 50% (GPU 밖 지연시간) = 200% (나누기 2 = 100%)
5850: 130% + 50% x 850/725 + 50% x (4800 x 256)/(4000 x 256) = 248% (124%)
5830: 152% + 50% x 850/800 + 50% x (4800 x 256)/(4000 x 256) = 270% (132%)
4890: 200% + 50% x 850/850 + 50% x (4800 x 256)/(3900 x 256) = 318% (156%)

 

예상했던 대로 '지연' 항들을 반영하자 각 카드들의 성능차이가 조금 줄어들었습니다.
결과값의 역수를 취하면 5850의 성능은 5870의 80.36%, 5830은 75.50%, 4890은 64.20% 가 되는데
이는 실제 3D마크 밴티지에서의 성능 차이와 흡사한 결과입니다.

 

 


4. 모델 2: 일반적인 게임

 

그럼 이제, 렌더링 성능이 중요한 요소가 되는 실제 게임의 상황을 가정해 봅시다.

앞서 3D 밴티지 모델에서는 GPU의 연산시간을 산출할 때 쉐이더 연산만 하는 것으로 가정했는데
실제 게임에서는 텍스처 및 렌더링 성능이 또한 중요한 요소가 됩니다. (그야 모니터에 그려내야 하니까...;;)
따라서 쉐이더 : 텍스처 : 렌더링의 비중이 각각 1:1:2 이라고 가정해 봅시다.


(식 8a, 8b, 8c, 8d)

5870: 100% (쉐이더 연산시간) + 100% (텍스처 연산시간) + 200% (렌더링 시간) = 400% (나누기 4 = 100%)
5850: 130% + 100% * (80 x 850)/(72 x 725) + 200% * (32 x 850)/(32 x 725) = 495% (124%)
5830: 152% + 100% * (80 x 850)/(56 x 800) + 200% * (32 x 850)/(16 x 800) = 729% (182%)
4890: 200% + 100% * (80 x 850)/(40 x 850) + 200% * (32 x 850)/(16 x 850) = 800% (200%)

 

결과값의 역수를 취하면 5850은 5870의 80.80%, 5830은 54.90%, 4890은 50%입니다.
3D마크 밴티지 모델 (식 6, 식 7) 에선 5870보다 많이 떨어졌던 5850의 연산성능이 조금 나아진 데 비해
ROP갯수가 적은 5830은 실제 게임 성능이 급격히 떨어진 것을 알 수 있습니다.
이제 여기에 GPU 안/밖에서의 지연시간 항을 더해 줍시다.

 

(식 9a, 9b, 9c, 9d)

5870: 100% (연산시간) + 50% (GPU 안 지연시간) + 50% (GPU 밖 지연시간) = 200% (나누기 2 = 100%)
5850: 124% + 50% x 850/725 + 50% * (4800 x 256)/(4000 x 256) = 242% (121%)
5830: 182% + 50% x 850/800 + 50% * (4800 x 256)/(4000 x 256) = 300% (148%)
4890: 200% + 50% x 850/850 + 50% * (4800 x 256)/(3900 x 256) = 318% (156%)

 

결과값의 역수를 취하면 5850은 5870의 82.52%, 5830은 67.74%, 4890은 64.20%가 됩니다.
5830의 성능이 순식간에 4890에 가깝게 떨어진 것을 볼 수 있습니다.
(현재 각종 벤치에서 4890에 뒤처지게까지 나오는 것은 드라이버가 최적화되지 않았기 때문인 것 같습니다.)

 

지금까지 이 간단한 방정식으로 살펴본 결과,
5830은 드라이버가 최적화 된 뒤에도 4890보다 크게 나은 성능을 보이진 않을 것으로 추측됩니다.
다만 ATi의 ATi Stream 등 GPGPU 기술이 널리 쓰이게 된다면
많은 쉐이더 갯수와 높은 클럭 (5850보다도 높은) 을 바탕으로 한 5830의 GPGPU 능력은 쓸만할 것 같습니다.


헥헥...... 여기까지 따라오셨다면 당신은 진정한 위너!!


5. 부록

지금까지의 식을 간단히 엑셀로 구현해 보았습니다.
엑셀파일을 실행하면 빨간색으로 표시된 부분에 테스트하고 싶은 그래픽카드의 스펙을 입력하게 되어 있고
그 아래에 네 가지의 모델이 주어져 있는데, 계산된 결과값이 표시되는 부분입니다.

모델 1은 위의 식 7을 구현한 "쉐이더 중심" 성능 계산입니다.
모델 2는 위의 식 9를 구현한 "일반적인 게임" 성능 계산입니다.
모델 3은 위의 식에는 없지만, "렌더링 중심" 성능 계산입니다. 2D/3D 그래픽 작업환경이 이에 해당됩니다.
모델 4 역시 위의 식에는 없는 "메모리 중심" 성능 계산입니다. 고해상도 설정과 유사합니다.

calc.xlsx


그럼... 재미없는 글을 끝까지 읽어 주셔서 감사합니다! :-)

 

//

 

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

 

 

IYD's Signature

적용중인 트로피가 없습니다.

DR.MOLA

레벨 Lv. 2 (31%)
포인트 501 p
출석 11 일 (개근 0 일)

IYD'님의

  1. calc.xlsx (File Size:15.7KB/Download:0)
  2. calc.xlsx (File Size:15.9KB/Download:1)
facebook twitter google plus pinterest kakao story band
Profile image ㅎㅎ 2010.04.15 06:54
아! 파코즈에서 자주뵈시던 이대근님이 카이스트 파코즌이셨군요 파코즈에서 님이 올리신 그래픽카드 성능방정식 잘봤습니다^^;;;; 깊은 식견에 탄복합니다 ㅎㅎ
수정 삭제
Profile image 와우 2010.04.23 16:56
대단하시네요. 어떻게 이런것까지 다 알고 계시는건지..ㄷㄷㄷ
완전히 이해는 못했지만;; 조금이라도 배우고 갑니다!
수정 삭제
Profile image IYD 2010.04.24 16:24
읽어주셔서 감사합니다^^
누구신지 남겨 주셨으면 더 좋았을텐데..ㅋㅋ
Profile image 메멘토군 2010.06.16 18:29
좋은 글 잘 봤습니다.
혹시 궁내 컴사랑에서도 계시던 분 아닌가요?
같은 글을 본 기억이 있는데...^^;
수정 삭제
Profile image IYD 2010.06.17 00:56
엥? 궁내 컴사랑이 어디죠?
모르는 커뮤니티인데 같은 글이 있다니..^^;;
Profile image 메멘토군 [비밀댓글] 2010.06.18 16:57
Profile image 남룡 2010.08.05 02:03
우엉 이런것도 있구나.......ㅋㅋㅋㅋㅋ 무섭다 이런거...ㅋㅋㅋ
수정 삭제
Profile image IYD 2010.08.05 08:26
헐ㅋㅋㅋㅋㅋ
Profile image 그냥사람 2010.09.24 09:18
오오오.... 정말 작성자님은 엄청난 컴퓨터지식을 가지고 계시군요ㅎㅎ 정말 저로써는 감탄만 나올 뿐입니다~
수정 삭제
Profile image 키오 2011.01.28 08:06
아.. 지금은 뭐가 뭔지 모르겠네요. 점심쯤에 한번 편안하게 정독해야겠어요~>~;;
수정 삭제
Profile image 키하라 2011.02.05 15:24
2.항의 마지막 부분인 5830 과 4890 비교 설명에서 5830과 4890을 바꿔서 설명하신거 같은데요.. 5830 은 S,T 항이 4890보다 더 크고 R항이 작기 때문에 R에서 병목현상이 생긴다. 인듯 .
수정 삭제
Profile image ㄷㄱ ver.2 2011.02.05 15:43
글에 쓰여진 대로가 맞습니다.
저 식을 그대로 계산하면 연산에 소요된 시간이 얻어지고, 그 시간의 역수가 성능으로 환산되기 때문에
어느 항이 '크다'는 것이 곧 그 항으로 인한 병목현상을 의미합니다. (그만큼 시간이 많이 걸린 것)
수정 삭제
Profile image GINS 2011.03.08 18:51
아.. 어렵다.
엔비디아의 최근 카드에도 적용되는건가요?
수정 삭제
Profile image ㄷㄱ ver.2 2011.03.08 20:25
처음 작성할 때 페르미를 염두에 두고 만들었는데, 현재 엔비디아의 최신 라인업인 500 시리즈도
페르미(400 시리즈) 를 기반으로 하고 있으니 그대로 적용할 수 있습니다.
수정 삭제
Profile image GINS 2011.04.08 18:13
다시 읽어보려고 왔습니다. 거의 다 따라 왔는데요,
위키에 gpu 스펙하고 맞춰보면서 읽어보고 있는데 이해 못한 부분이 GPU 밖 지연시간 항목에서 4800 , 4000 상수값이 어디에서 온건지 모르겠습니다.
알려주세용..
수정 삭제
Profile image GINS 2011.04.08 18:19
아.. ati 스펙 문서 보니 MemoryDataRate 라는 항목이 있고 그거군요. 위키페디아만 너무 의지했나부다.
수정 삭제
Profile image ㄷㄱ ver.2 2011.04.09 13:25
본문을 보면 GPU 밖 지연이 메모리 대역폭에 반비례한다고 되어 있죠? 그래서 메모리 클럭이 들어간 겁니다.
위키피디아에도 메모리클럭 정보가 있을 텐데...ㅋㅋ
수정 삭제
Profile image GINS 2011.04.11 18:05
그게 위키도 스펙문서도 둘다 보고 나니, 같은거구나 하고 나중에 알았습니다. : )
벤치마킹 정보만 보다가 직접 계산기 두들겨 보니 재밌네요!
좋은 글 많이 부탁드릴께요.
수정 삭제
Profile image ㄷㄱ ver.2 2011.04.13 18:27
^^ 이 글을 작성하며 개인적으로 '이런 반응이 나왔으면...' 하고 기대했던 반응이 여기서 나오는군요...^^
앞으로도 열심히 쓰겠습니다.ㅋㅋㅋ
수정 삭제
Profile image SBDolphine 2011.05.17 21:12
이, 이거 군내에서 출처도 모른채 어디선가 주워서는 걸핏하면 뿌려댄 자료였는데!
오리지날이 여기있을 줄이야 오오... 놀랍습니다. 플웨즈에서 자주보는 그분의 자료였다니... 생각도 못했어요. ;ㅅ;
참고로 이 자료는 '아마' 지금도 군내에서 암암리에 돌아다니고 있을겁니다.^ㅡ^
수정 삭제
Profile image ㄷㄱ ver.2 2011.05.17 21:45
헛 그렇군요;;;
군 내부 인트라넷에서 보고 왔다는 분들이 몇분 있었는데
이 글을 처음 올린게 2010년 3월이니... 군 인트라넷에 퍼진 것도 최소한 그 이후일테고...
그렇다면 SB돌핀님의 나이는?!?! ㅋㅋ 대충 추리가 가능하군요ㅋㅋ
수정 삭제
Profile image 나그네 2012.03.29 09:37
calc 엑셀파일에 있는 메모리 hz 와 위키에 있는 메모리 속도 라는게 실제 메모리 클럭의 2배 값이죠? DDR 메모리라서 그렇게 해놓은듯 합니다. gtx560 도 실제 메모리 클럭은 2000 인데 다들 4000 으로 표기해놓은거 보니...
수정 삭제
  • 멀티스레딩 기술의 이해 [CPU] 멀티스레딩 기술의 이해 [53] file

    Author : Daeguen Lee (Any action violating either copyright laws or CCL policy of the original source is strictly prohibited) 오늘은 현대 CPU의 성능향상 기법 중 하나인 SMT에 대해 간단히 알아 보겠습니다.SMT는 Simutaneous Multi-threading의 약자로, 동시에 여러 스레드를 처리하는 기법을 통칭합니다.CPU의 ...

    • IYD |
    • 11.02.05 |
    • 조회 수 379 |
  • 현대 CPU의 구조 : 프론트엔드 편 [CPU] 현대 CPU의 구조 : 프론트엔드 편 [36] file

    Author : Daeguen Lee (Any action violating either copyright laws or CCL policy of the original source is strictly prohibited) Tweet 얼마 전 백엔드 구조를 중심으로 현대의 CPU에 대해 알아 보았습니다.(현대 CPU의 구조 강좌 <백엔드 편> ☞ 여기)이번 강좌에서는 그때 설명하지 않고 남겨둔 프론트엔드에 대해 간...

    • IYD |
    • 11.01.22 |
    • 조회 수 439 |
  • 현대 CPU의 구조 : 백엔드 편 [CPU] 현대 CPU의 구조 : 백엔드 편 [56] file

    Author : Daeguen Lee (Any action violating either copyright laws or CCL policy of the original source is strictly prohibited) Tweet 오늘날 컴퓨터는 다양한 형태와 기능을 갖추고 인간의 생활을 도와주고 있습니다.재미있는 점은 컴퓨터들이 쓰이는 용도나 형태가 천차만별임에도 그 기본 원리는 거의 같다는 점입...

    • IYD |
    • 11.01.22 |
    • 조회 수 644 |
  • 오버클럭의 공학적 배경 [CPU] 오버클럭의 공학적 배경 [26] file

    Author : Daeguen Lee (Any action violating either copyright laws or CCL policy of the original source is strictly prohibited) Tweet 흔히, "오버클럭을 하면 소비전력이 늘어나기 때문에 전압을 더 줘야 한다" 고 생각합니다.하지만 과연 이게 맞는 명제일까요?만약 위의 명제가 참이라면 오버클럭시 CPU의 요구전압...

    • IYD |
    • 11.01.14 |
    • 조회 수 201 |
  • VGA 계산기 : 실전 응용편 [VGA] VGA 계산기 : 실전 응용편 [18] file

    Author : Daeguen Lee (Any action violating either copyright laws or CCL policy of the original source is strictly prohibited) 오늘날 우리가 사용하는 그래픽카드의 성능을 알기 위해 여러 테스트 툴을 동원하고 있는데이러한 툴로 직접 테스트한 결과가 공개되기 전까지는 신제품의 성능을 짐작할 수 없어 답답했습...

    • IYD |
    • 11.01.14 |
    • 조회 수 156 |
  • SLI 미지원 보드에서 SLI 사용하기 [VGA] SLI 미지원 보드에서 SLI 사용하기 [27] file

    Author : Daeguen Lee (Any action violating either copyright laws or CCL policy of the original source is strictly prohibited) 오늘은 변칙적인 방법을 통해 AMD 플랫폼에서 nVIDIA의 SLI를 활성화시키는 방법을 알아봅시다.(제가 사용한 건 AMD 보드이지만 일반적으로 SLI를 미지원하는 모든 다른 보드에 통용되는 ...

    • IYD |
    • 11.01.13 |
    • 조회 수 357 |
  • 현대 CPU의 구조 : 메모리 계층 구조와 성능 [CPU] 현대 CPU의 구조 : 메모리 계층 구조와 성능 [9] file

    Author : Daeguen Lee (Any action violating either copyright laws or CCL policy of the original source is strictly prohibited) 1. Introduction앞서 작성했던 두 '현대 CPU의 구조' 강좌의 속편입니다. 무려 7개월 만의^^;- 현대 CPU의 구조 -백엔드 편-: http://iyd.kr/57- 현대 CPU의 구조 -프론트엔드 편-: http:/...

    • IYD |
    • 10.11.24 |
    • 조회 수 436 |
  • [CPU] Tightening tRFC : DRAM Refresh Cycle secret

    비밀글입니다.

    • IYD |
    • 10.10.27 |
    • 조회 수 1 |
  • [CPU] Memory Overclocking via D.O.C.P. [7] secret

    비밀글입니다.

    • IYD |
    • 10.09.09 |
    • 조회 수 3 |
  • [CPU] On AMD CPUs : About Memory Dividers [3] secret

    비밀글입니다.

    • IYD |
    • 10.05.13 |
    • 조회 수 4 |
  • [VGA] 그래픽카드 성능의 비밀 : VGA 계산기 만들기 [24] file

    Author : Daeguen Lee (Any action violating either copyright laws or CCL policy of the original source is strictly prohibited) 1. 개요GPU의 처리과정을 대강 살펴보면 아래와 같습니다.(식 1) 그래픽램에서 GPU로 운반 -> 쉐이더연산 -> 텍스처연산 -> 픽셀 렌더링 -> GPU에서 그래픽램으로 운반여기서 빨간색 부분...

    • IYD |
    • 10.03.03 |
    • 조회 수 341 |
  • 하이브리드 피직스 설정하기 [VGA] 하이브리드 피직스 설정하기 [5] file

    Author : Daeguen Lee (Any action violating either copyright laws or CCL policy of the original source is strictly prohibited) 최근 AMD의 라데온 HD 4800 시리즈가 가격 대비 높은 성능으로 주목받는 한편, 경쟁사인 NVIDIA가 독점적으로 지원하는 PhysX 가속 기능이 뜨거운 감자로 부상하면서 저렴한 NVIDIA 그래픽...

    • IYD |
    • 09.10.12 |
    • 조회 수 240 |