본문 바로가기
스마트폰/mobile GPU

Vivante GC7000 GPU 사양 분석. (비반테)

by gamma0burst 2014. 11. 29.

 

- Vivante(비반테) GPU 사양 분석입니다.

SM-J100F에 들어가는, 마벨의 PXA1908에 들어가는 GPU가 GC7000UL인 것도 관심을 끌었고,

삼성에서 비반테의 R&D 조직을 인수해서 자체 GPU 개발에 활용할 것이라는 기사, 루머도 있습니다.

미리 알아두는게 나중을 위해 편하겠지요.

 

 

- 좀 된 내용이긴한데 GC7000 시리즈를 발표했습니다.

 

 

 

GC7000 시리즈 사양은 이렇습니다.

사실 이것만 봐서는 왜 저 성능이 나오는지 이해하기 힘듭니다.

자체적인 기준으로 표기해놓은 부분도 있어서 더더욱 그렇습니다.

 

일단 아래 주석의 내용을 보면 표의 코어 수는 vec1 기준이라고 합니다.

쉐이더 코어 이름은 베가(Vega)인듯 합니다.

그렇다면 일단 베가 코어가 어떤 것인지 알아봐야겠지요.

 

 

- 베가 쉐이더 코어

 

1. shader unit quantum = 쉐이더 코어

128bit (vec4) + transcendental(?)

medium precision 기준 17 flops/cycle -> FP16 기준 8 mul + 8 add + 1 transcendental = 17 flops/cycle

full precision 기준 9 flops/cycle -> FP32 기준 4 mul + 4 add + 1 transcendental = 9 flops/cycle

double precision 기준 5 flops/cycle -> FP64 기준 2 mul + 2 add + 1 transcendental = 5 flops/cycle (옵션)

 

2. 1~16 쉐이더 코어 = 1 GPU 코어.

GPU 코어 1~4개 구성.

 

3. 28HPM 공정에서 쉐이더 클럭이 1GHz라는건 GC7000 자료와 일치.

 

->

위 표에서 Medium Precision은 FP16, High precision은 FP32로 보입니다.

 

 

- 이전 제품 사양

 

 

1. GC400 시리즈

코어클럭 : 400MHz

쉐이더 클럭 : 400MHz

vec4 (128bit) 기준 코어 수 : 1

트라이앵글 : 400MHz(코어클럭) /10(비율) = 40 Mtri/s

버텍스 : 400MHz(쉐이더클럭) x1(rasterizer 성능?) x1(코어수) /4 = 100 Mvtx/s

FP32 연산성능 : 1(코어수) x4(vec4) x2(add+mul) x400MHz(쉐이더클럭) = 3.2GFLOPS

 

2. GC800 시리즈

코어클럭 : 400MHz

쉐이더 클럭 : 800MHz

vec4 (128bit) 기준 코어 수 : 1

트라이앵글 : 400MHz(코어클럭) /5(비율) = 80 Mtri/s

버텍스 : 800MHz(쉐이더클럭) x1(코어당 rasterizer 수?) x1(코어수) /4 = 200 Mvtx/s

FP32 연산성능 : 1(코어수) x4(vec4) x2(add+mul) x800MHz(쉐이더클럭) = 6.4GFLOPS

 

3. GC1000 시리즈

코어클럭 : 800MHz

쉐이더 클럭 : 1000MHz

vec4 (128bit) 기준 코어 수 : 2

트라이앵글 : 800MHz(코어클럭) /6.5(비율) = 123 Mtri/s

버텍스 : 1000MHz(쉐이더클럭) x1(코어당 rasterizer 수?) x2(코어수) /4 = 500 Mvtx/s

FP32 연산성능 : 2(코어수) x4(vec4) x2(add+mul) x1000MHz(쉐이더클럭) = 16.0GFLOPS

 

4. GC2000 시리즈

코어클럭 : 800MHz

쉐이더 클럭 : 1000MHz

vec4 (128bit) 기준 코어 수 : 4

트라이앵글 : 800MHz(코어클럭) x2 /6(비율) = 267 Mtri/s

버텍스 : 1000MHz(쉐이더클럭) x1(코어당 rasterizer 수?) x4(코어수) /4 = 1000 Mvtx/s

FP32 연산성능 : 4(코어수) x4(vec4) x2(add+mul) x1000MHz(쉐이더클럭) = 32.0GFLOPS

 

5. GC3000 시리즈

코어클럭 : 800MHz

쉐이더 클럭 : 1000MHz

vec4 (128bit) 기준 코어 수 : 4

트라이앵글 : 800MHz(코어클럭) x2 /6(비율) = 267 Mtri/s

버텍스 : 1000MHz(쉐이더클럭) x1(코어당 rasterizer 수?) x4(코어수) /4 = 1000 Mvtx/s

FP32 연산성능 : 4(코어수) x4(vec4) x2(add+mul) x1000MHz(쉐이더클럭) = 32.0GFLOPS

 

6. GC4000 시리즈

코어클럭 : 800MHz

쉐이더 클럭 : 1000MHz

vec4 (128bit) 기준 코어 수 : 8

트라이앵글 : 800MHz(코어클럭) x2 /6(비율) = 267 Mtri/s

버텍스 : 1000MHz(쉐이더클럭) x1(코어당 rasterizer 수?) x8(코어수) /4 = 2000 Mvtx/s

FP32 연산성능 : 8(코어수) x4(vec4) x2(add+mul) x1000MHz(쉐이더클럭) = 64.0GFLOPS

 

7. GC5000 시리즈

코어클럭 : 800MHz

쉐이더 클럭 : 1000MHz

vec4 (128bit) 기준 코어 수 : 8

트라이앵글 : 800MHz(코어클럭) x2 /6(비율) = 267 Mtri/s

버텍스 : 1000MHz(쉐이더클럭) x1(코어당 rasterizer 수?) x8(코어수) /4 = 2000 Mvtx/s

FP32 연산성능 : 8(코어수) x4(vec4) x2(add+mul) x1000MHz(쉐이더클럭) = 64.0GFLOPS

 

8. GC6000 시리즈

코어클럭 : 800MHz

쉐이더 클럭 : 1000MHz

vec4 (128bit) 기준 코어 수 : 16

트라이앵글 : 800MHz(코어클럭) x4 /6(비율) = 533 Mtri/s

버텍스 : 1000MHz(쉐이더클럭) x1(코어당 rasterizer 수?) x16(코어수) /4 = 4000 Mvtx/s

FP32 연산성능 : 16(코어수) x4(vec4) x2(add+mul) x1000MHz(쉐이더클럭) = 128.0GFLOPS

 

9. GC7000 시리즈 (GC7400)

코어클럭 : 800MHz

쉐이더 클럭 : 1000MHz

vec4 (128bit) 기준 코어 수 : 32

트라이앵글 : 800MHz(코어클럭) x8 /6(비율) = 1067 Mtri/s

버텍스 : 1000MHz(쉐이더클럭) x1(코어당 rasterizer 수?) x32(코어수) /4 = 8000 Mvtx/s

FP32 연산성능 : 32(코어수) x4(vec4) x2(add+mul) x1000MHz(쉐이더클럭) = 256.0GFLOPS

 

 

10. GC7000UL(UltraLite)

코어클럭 : 800MHz

쉐이더 클럭 : 1000MHz

vec4 (128bit) 기준 코어 수 : 2

텍셀필레이트 : 1 Tex/cycle x 800MHz(코어클럭) = 0.8 GTex/s

버텍스 : 2(코어수) x 1GHz(쉐이더클럭) /4 = 0.5 GVert/s

FP32 연산성능 : 2(코어수) x4(vec4) x2(add+mul) x1GHz(쉐이더클럭) = 16GFLOPS

 

11. GC7000Lite

코어클럭 : 800MHz

쉐이더 클럭 : 1000MHz

vec4 (128bit) 기준 코어 수 : 4

텍셀필레이트 : 2 Tex/cycle x 800MHz(코어클럭) = 1.6 GTex/s

버텍스 : 4(코어수) x 1GHz(쉐이더클럭) /4 = 1.0 GVert/s

FP32 연산성능 : 4(코어수) x4(vec4) x2(add+mul) x1GHz(쉐이더클럭) = 32GFLOPS

 

12. GC7000

코어클럭 : 800MHz

쉐이더 클럭 : 1000MHz

vec4 (128bit) 기준 코어 수 : 8

텍셀필레이트 : 4 Tex/cycle x 800MHz(코어클럭) = 3.2 GTex/s

버텍스 : 8(코어수) x 1GHz(쉐이더클럭) /4 = 2.0 GVert/s

FP32 연산성능 : 8(코어수) x4(vec4) x2(add+mul) x1GHz(쉐이더클럭) = 64GFLOPS

 

13. GC7200

코어클럭 : 800MHz

쉐이더 클럭 : 1000MHz

vec4 (128bit) 기준 코어 수 : 16

텍셀필레이트 : 8 Tex/cycle x 800MHz(코어클럭) = 6.4 GTex/s

버텍스 : 16(코어수) x 1GHz(쉐이더클럭) /4 = 4.0 GVert/s

FP32 연산성능 : 16(코어수) x4(vec4) x2(add+mul) x1GHz(쉐이더클럭) = 128GFLOPS

 

14. GC7400

코어클럭 : 800MHz

쉐이더 클럭 : 1000MHz

vec4 (128bit) 기준 코어 수 : 32

텍셀필레이트 : 16 Tex/cycle x 800MHz(코어클럭) = 12.8 GTex/s

버텍스 : 32(코어수) x 1GHz(쉐이더클럭) /4 = 8.0 GVert/s

FP32 연산성능 : 32(코어수) x4(vec4) x2(add+mul) x1GHz(쉐이더클럭) = 256GFLOPS

 

15. GC7600

코어클럭 : 800MHz

쉐이더 클럭 : 1000MHz

vec4 (128bit) 기준 코어 수 : 64

텍셀필레이트 : 32 Tex/cycle x 800MHz(코어클럭) = 25.6 GTex/s

버텍스 : 64(코어수) x 1GHz(쉐이더클럭) /4 = 16.0 GVert/s

FP32 연산성능 : 64(코어수) x4(vec4) x2(add+mul) x1GHz(쉐이더클럭) = 512GFLOPS

 

->

코어클럭과 쉐이더클럭이 따로 있음.

대게 PC용 GPU에서 보이던 모습인데 비반테가 처음인건지, 다른 제품에서도 이미 적용되고 있는데 몰랐던건지 모르겠습니다.

->

트라이앵글(GC4000 이상) : (코어수) /2 x(코어클럭) /6(비율)

텍셀필레이트 : (코어수) /2 x(코어클럭)

버텍스 : (코어수) x(쉐이더클럭) /4

FP32 연산성능 : (코어수) x4(vec4) x2(add+mul) x(쉐이더클럭)

 

 

- 성능

실질적인 성능 지표인 그래픽 벤치마크 결과에 대한 정보를 보면,

 

GL벤치마크 2.7에서 GC6400이 30 fps 라고 합니다.

비교군 성능이 좀 이상하지만요.

GFX벤치 티렉스에 해당하는 부분.

 

아마도 이 자료를 근거로 작성한 그래프같습니다.

이게 믿을만하냐는게 문제인데 GC5000을 보면 티렉스가 16 fps로 나옵니다.

실제 GC5000 탑재인 PXA1928 결과가 18.4 fps 입니다.

(링크 : http://gfxbench.com/device.jsp?benchmark=gfx30&os=Android&api=gl&D=Marvell%20pxa1928dkb)

비반테 자료 자체는 신뢰할만하다는겁니다.

 

 

 

댓글12