메모리 대역폭 계산법.
메모리의 이론적으로 가능한 최대의 대역폭을 계산하기 위해서는 두가지를 알아야 한
다. 메모리 버스 폭(비트 단위) 와 메모리 클럭 주파수이다. 128비트의 메모리 인
터페이스는 한번에 16바이트를 전송할 수 있는데 이것은 한 바이트가 8비트로 이
루어져 있기 때문이다)128비트/8 =16바이트). Double Data Rate(DDR) 메모리는
효과적으로 클럭을 두배로 해서 쓰기 때문에 클럭 사이클당 두배의 데이터 전송이
가능하다.
128비트의 166MHz SDRAM의 경우 다음과 같은 최대 대역폭을 가지게 된다.
128 bits / 8 bits *166 MHz =2.56 GB /sec
(일반적으로 Byte는 대문자 B를 bit는 소문자 b로 구별을 한다.)
128비트의 166MHz DDR 메모리의 경우 최대 대역폭을 다음과 같다.
128 bits / 8 bits *166MHz *2 =5.312 GB /sec
이론상의 최대 필레이트 계산법.
이론상의 최대 필레이트를 계산하기 위해서는 현재 가능한 메모리의 대역폭, 픽셀 크
기(16/32bit)와 Z 수치값(16/32bit)과 텍셀 크기를 알아야 한다.
3D 가속기가 삼각형을 렌더링할 때, 일단 삼각형을 한 개의 픽셀로 나눈다. 일반
적으로 3D 가속기는 각 픽셀에 대하여 다음 순서대로 진행을 하게 된다.
-Z 버퍼에서 이전의 Z 값을 읽는다.
-Z 버퍼에 새로운 Z 값을 쓴다.
- 텍셀을 읽는다.
-프레임 버퍼에 새로운 픽셀값을 써 넣는다.
이러한 순서에 기본하여 최대 픽셀 필레이트를 주어진 대역폭에서 계산할 수가 있
다.
첫 번째 계산 예에서는 32비트 Z 버퍼와 32비트 프레임 버퍼, 그리고 각 픽셀에
새로운 32비트 텍셀을 읽는 것으로 하자. 32비트는 4바이트이다. 일반적으로 텍셀
은 칩내의 텍스쳐 캐쉬내에서 읽어온다, 그러므로 이 하나의 픽셀당 하나의 텍스
쳐는 텍스쳐랑 방법에 있어 한가지 가능한 방법일 뿐이다. 이번 예에서는 아주 고
화질의 렌더링을 고려한 예이다.
- Z 읽기(4바이트)
- Z 쓰기(4바이트)
- 텍스쳐 읽기(4바이트)
- 색상 쓰기(4바이트)
이것은 각 픽셀에 대하여 메모리 시스템에 전부 16바이트의 데이터가 전송되어야
함을 의미한다.
이제 첫 번째 메모리 시스템 예를 들어보고 얼마나 많은 픽셀이 이를 처리할 수
있는지 알아보도록 하자.(128비트 @ 166MHz SDRAM).
2.656 GB/sec / 16 Bytes =166 MegaPixels /sec.
아래에 몇 개의 렌더링 모드의 예와 위의 예에 들은 메모리 시스템에서 처리할 수
있는 메모리 바이트를 적어 놓았다.
- 32bit color, 32bit Z, 32bit texture =16 bytes / pixel
- 16bit color, 32bit Z, 16bit texture =12 bytes / pixel
- 32bit color, 16bit Z, 16bit texture =10 bytes / pixel
- 16bit color, 16bit Z, 16bit texture =8 bytes / pixel
- 16bit color, 16bit Z, no texture =6 bytes / pixel
아래에 몇 개의 계산 예가 있다.
128bit@166MHZ SDRAM의 칩 (예로서 geforce SDRAM version)
- 32비트 모드에서 최대 필레이트(16 bytes / pixel) =166Mpix/sec
- 16비트 모드에서 최대 필레이트(8 bytes / pixel) =332Mpix/sec
128bit@166MHz DDR의 칩(예로서 geforce DDR version)
- 32비트 모드에서 최대 필레이트(16 bytes / pixel) =332Mpix/sec
- 16비트 모드에서 최대 필레이트(8 bytes / pixel) =664Mpix/sec *
( *노트 : GeForce 렌더링 파이프라인은 480Mpixel/sec으로 제한되어 있다.)
128bit@183MHz SDRAM (예로서 TNT2 Ultra)
- 32비트 모드에서 최대 필레이트(16 bytes / pixel) =183Mpix/sec
- 16비트 모드에서 최대 필레이트(8 bytes / pixel) =366Mpix/sec *
( *노트: TNT2 렌더링 파이프라인은 300Mpixel/sec로 제한된다.)
그러므로 TNT2 울트라는 GeForce의 SDRAM 버전보다 32비트 픽셀 처리에서 더 많은
렌더링을 할 수 있는 것이다. 그리고 또한 이것은 이론적으로 가장 최대의 수치일
뿐인데, 이것은 일반적으로 3D 렌더링만이 메모리를 점유하는 전부는 아니기 때문
이다. 이제 이 예에서 비디오 리프레쉬 가 필요한 메모리 대역폭을 계산할 수 있
다.
스크린 폭 *스크린 높이 *픽셀당 바이트 *리프레쉬 레이트
(노트 : 픽셀당 바이트는 16비트 프레임 버퍼에서는 2이고 32비트 프레임 버퍼에
서는 4이다.)
예: 1600*1200*4*75Hz =576MegaBytes/sec
그러므로 이러한 해상도에서는 TNT2 울트라의 약 20%에 해당되는 것이다.(183
Mpix/sec *16pixel =2928MegaBytes/sec, 그러므로 576/2928 *100 =19.67 %) 그
러므로 물론 실제로 이론상의 픽셀 필레이트에서 약 20%가 하락된다.
더 많은 메모리 대역폭이 필요한 경우는 다중 텍스쳐를 사용할 때이다. 픽셀 필레
이트를 저하시키는 추가적인 텍스쳐는 어플리케이션과 텍스쳐 줌 요소, 오리엔테
이션 등에 따라서 결정된다. 그러므로 이것에 대해서 자세하게 논하지는 않을 것
이지만 , 텍스쳐 맵 또한 대역폭을 차지한다는 사실을 알아두기 바란다.
이 글을 쓴 목적은 3D 가속기가 어떻게 메모리를 사용하는가 사람들에게 알리기
위한 것이지 특정한 메모리 적용 방법이나 제품에 대해서 논한 것은 아니다.
지금까지 계산 방법은 Bitboys사의 Mika Tuomi의 것을 그대로 인용한 것이다.
위의 부두 익스트림에서의 계산결과에 의하면 GeForce256 SDRAM 버전은 TNT 울트
라 보다 32비트 모드에서 낮은 필레이트를 보여야 한다. 필레이트는 즉각 3D 게임
에서 Fps 수치와 관련이 있는 것으로 알려져 있고 사실 이전의 부두4 T-buffer에
관한 글을 읽어 보면 이 GeForce의 지오메트리 엔진은 애써 폄하 하면서도 약점인
낮은 필레이트를 공격한 바는 바로 이러한 계산하게 나온 데이터를 바탕으로 한
것이라는게 필자의 생각이다. 그래서 부두4가 고해상도에서 트루컬러로 빠른 카드
를 보장한다는 주장도 어느 정도 GeForce의 이러한 약점을 파고든 전략일 수도 있
다. 하나 반드시 이러한 필레이트가 FPS와 1차적인 함수의 비례식이 성립한다고는
볼 수는 없다.
우리의 GeForce256 벤치마크 결과를 보면 전반적으로 TNT2 울트라 보다 약간씩 빠
른 성능을 보이면서 32비트에서는 최고 70% 이상의 fps성적을 보여주었기 때문이
다. 그러므로 그래픽 처리 알고리듬(이것에 대해서 까지 알 수 있다면 더할 나위
없겠지만 대부분은 confidential이라서 자세한 사항은 알기 어렵다)과 메모리 내
에서 데이터 전송을 어떻게 최적화 하는지가 진짜 성능의 중요한 열쇠를 쥐고 있
을 가능성도 있다는 것이 필자의 의견이다.
메모리의 이론적으로 가능한 최대의 대역폭을 계산하기 위해서는 두가지를 알아야 한
다. 메모리 버스 폭(비트 단위) 와 메모리 클럭 주파수이다. 128비트의 메모리 인
터페이스는 한번에 16바이트를 전송할 수 있는데 이것은 한 바이트가 8비트로 이
루어져 있기 때문이다)128비트/8 =16바이트). Double Data Rate(DDR) 메모리는
효과적으로 클럭을 두배로 해서 쓰기 때문에 클럭 사이클당 두배의 데이터 전송이
가능하다.
128비트의 166MHz SDRAM의 경우 다음과 같은 최대 대역폭을 가지게 된다.
128 bits / 8 bits *166 MHz =2.56 GB /sec
(일반적으로 Byte는 대문자 B를 bit는 소문자 b로 구별을 한다.)
128비트의 166MHz DDR 메모리의 경우 최대 대역폭을 다음과 같다.
128 bits / 8 bits *166MHz *2 =5.312 GB /sec
이론상의 최대 필레이트 계산법.
이론상의 최대 필레이트를 계산하기 위해서는 현재 가능한 메모리의 대역폭, 픽셀 크
기(16/32bit)와 Z 수치값(16/32bit)과 텍셀 크기를 알아야 한다.
3D 가속기가 삼각형을 렌더링할 때, 일단 삼각형을 한 개의 픽셀로 나눈다. 일반
적으로 3D 가속기는 각 픽셀에 대하여 다음 순서대로 진행을 하게 된다.
-Z 버퍼에서 이전의 Z 값을 읽는다.
-Z 버퍼에 새로운 Z 값을 쓴다.
- 텍셀을 읽는다.
-프레임 버퍼에 새로운 픽셀값을 써 넣는다.
이러한 순서에 기본하여 최대 픽셀 필레이트를 주어진 대역폭에서 계산할 수가 있
다.
첫 번째 계산 예에서는 32비트 Z 버퍼와 32비트 프레임 버퍼, 그리고 각 픽셀에
새로운 32비트 텍셀을 읽는 것으로 하자. 32비트는 4바이트이다. 일반적으로 텍셀
은 칩내의 텍스쳐 캐쉬내에서 읽어온다, 그러므로 이 하나의 픽셀당 하나의 텍스
쳐는 텍스쳐랑 방법에 있어 한가지 가능한 방법일 뿐이다. 이번 예에서는 아주 고
화질의 렌더링을 고려한 예이다.
- Z 읽기(4바이트)
- Z 쓰기(4바이트)
- 텍스쳐 읽기(4바이트)
- 색상 쓰기(4바이트)
이것은 각 픽셀에 대하여 메모리 시스템에 전부 16바이트의 데이터가 전송되어야
함을 의미한다.
이제 첫 번째 메모리 시스템 예를 들어보고 얼마나 많은 픽셀이 이를 처리할 수
있는지 알아보도록 하자.(128비트 @ 166MHz SDRAM).
2.656 GB/sec / 16 Bytes =166 MegaPixels /sec.
아래에 몇 개의 렌더링 모드의 예와 위의 예에 들은 메모리 시스템에서 처리할 수
있는 메모리 바이트를 적어 놓았다.
- 32bit color, 32bit Z, 32bit texture =16 bytes / pixel
- 16bit color, 32bit Z, 16bit texture =12 bytes / pixel
- 32bit color, 16bit Z, 16bit texture =10 bytes / pixel
- 16bit color, 16bit Z, 16bit texture =8 bytes / pixel
- 16bit color, 16bit Z, no texture =6 bytes / pixel
아래에 몇 개의 계산 예가 있다.
128bit@166MHZ SDRAM의 칩 (예로서 geforce SDRAM version)
- 32비트 모드에서 최대 필레이트(16 bytes / pixel) =166Mpix/sec
- 16비트 모드에서 최대 필레이트(8 bytes / pixel) =332Mpix/sec
128bit@166MHz DDR의 칩(예로서 geforce DDR version)
- 32비트 모드에서 최대 필레이트(16 bytes / pixel) =332Mpix/sec
- 16비트 모드에서 최대 필레이트(8 bytes / pixel) =664Mpix/sec *
( *노트 : GeForce 렌더링 파이프라인은 480Mpixel/sec으로 제한되어 있다.)
128bit@183MHz SDRAM (예로서 TNT2 Ultra)
- 32비트 모드에서 최대 필레이트(16 bytes / pixel) =183Mpix/sec
- 16비트 모드에서 최대 필레이트(8 bytes / pixel) =366Mpix/sec *
( *노트: TNT2 렌더링 파이프라인은 300Mpixel/sec로 제한된다.)
그러므로 TNT2 울트라는 GeForce의 SDRAM 버전보다 32비트 픽셀 처리에서 더 많은
렌더링을 할 수 있는 것이다. 그리고 또한 이것은 이론적으로 가장 최대의 수치일
뿐인데, 이것은 일반적으로 3D 렌더링만이 메모리를 점유하는 전부는 아니기 때문
이다. 이제 이 예에서 비디오 리프레쉬 가 필요한 메모리 대역폭을 계산할 수 있
다.
스크린 폭 *스크린 높이 *픽셀당 바이트 *리프레쉬 레이트
(노트 : 픽셀당 바이트는 16비트 프레임 버퍼에서는 2이고 32비트 프레임 버퍼에
서는 4이다.)
예: 1600*1200*4*75Hz =576MegaBytes/sec
그러므로 이러한 해상도에서는 TNT2 울트라의 약 20%에 해당되는 것이다.(183
Mpix/sec *16pixel =2928MegaBytes/sec, 그러므로 576/2928 *100 =19.67 %) 그
러므로 물론 실제로 이론상의 픽셀 필레이트에서 약 20%가 하락된다.
더 많은 메모리 대역폭이 필요한 경우는 다중 텍스쳐를 사용할 때이다. 픽셀 필레
이트를 저하시키는 추가적인 텍스쳐는 어플리케이션과 텍스쳐 줌 요소, 오리엔테
이션 등에 따라서 결정된다. 그러므로 이것에 대해서 자세하게 논하지는 않을 것
이지만 , 텍스쳐 맵 또한 대역폭을 차지한다는 사실을 알아두기 바란다.
이 글을 쓴 목적은 3D 가속기가 어떻게 메모리를 사용하는가 사람들에게 알리기
위한 것이지 특정한 메모리 적용 방법이나 제품에 대해서 논한 것은 아니다.
지금까지 계산 방법은 Bitboys사의 Mika Tuomi의 것을 그대로 인용한 것이다.
위의 부두 익스트림에서의 계산결과에 의하면 GeForce256 SDRAM 버전은 TNT 울트
라 보다 32비트 모드에서 낮은 필레이트를 보여야 한다. 필레이트는 즉각 3D 게임
에서 Fps 수치와 관련이 있는 것으로 알려져 있고 사실 이전의 부두4 T-buffer에
관한 글을 읽어 보면 이 GeForce의 지오메트리 엔진은 애써 폄하 하면서도 약점인
낮은 필레이트를 공격한 바는 바로 이러한 계산하게 나온 데이터를 바탕으로 한
것이라는게 필자의 생각이다. 그래서 부두4가 고해상도에서 트루컬러로 빠른 카드
를 보장한다는 주장도 어느 정도 GeForce의 이러한 약점을 파고든 전략일 수도 있
다. 하나 반드시 이러한 필레이트가 FPS와 1차적인 함수의 비례식이 성립한다고는
볼 수는 없다.
우리의 GeForce256 벤치마크 결과를 보면 전반적으로 TNT2 울트라 보다 약간씩 빠
른 성능을 보이면서 32비트에서는 최고 70% 이상의 fps성적을 보여주었기 때문이
다. 그러므로 그래픽 처리 알고리듬(이것에 대해서 까지 알 수 있다면 더할 나위
없겠지만 대부분은 confidential이라서 자세한 사항은 알기 어렵다)과 메모리 내
에서 데이터 전송을 어떻게 최적화 하는지가 진짜 성능의 중요한 열쇠를 쥐고 있
을 가능성도 있다는 것이 필자의 의견이다.
다음검색