본문 바로가기
단신/단신

Adreno330 vs Mali-T628 GFXBench Manhattan 성능 차이 분석.

by gamma0burst 2014. 9. 27.
반응형

 

- 시작하기에 앞서
A330과 T628MP6을 비교해보면 2.1 이집트 - 2.7 티렉스 - 3.0 맨해튼으로 올수록 T628의 성능이 열세로 나타남.
2.1에서는 우위였으나 2.7에서 동급, 3.0에서 열세로 돌아섬.
이는 테스트 성향이 픽셀 중심에서 폴리곤(텍스처, 버텍스) 중심으로 넘어가고 있기때문으로 추측.
후자쪽으로 갈수록 ALU(SP : 쉐이더 프로세서)의 사용률이 올라감.
3DMark가 대표적인 케이스인데 SP x 클럭(근사적으로 연산성능.)에 비례해서 점수가 나오는 수준.
물론 실제 게임 등에서는 그 정도로 쉐이더를 하드하게 쓰지는 않는건지 SP수와 프레임이 비례하기는 않지만 최소한 하드한 벤치마크에서는 ALU(SP)성능이 중요하다는 것.
그리고 그런 경향이 이제 모바일 GPU 벤치마크에서까지 나타나고 있다는 것.
그렇기때문에 모바일 디바이스 성능 평가에서도 갈수록 ALU 성능이 중요시 될 수 밖에 없는 흐름.

 

 

- 테스트 결과 정리/분석

 

GPU

ALU off (fps)

CLK (MHz)

GFLOPS (이론)

ALU/GFLOPS

A420

165.2

600

172.8

0.96

A330

153.5

578

166.5

0.92

A320

58.6

450

64.8

0.90

T628MP6

47.3

480

97.9 (all)

0.48

T628MP6

47.3

480

51.8 (mul)

0.91

T628MP6

47.3

480

46.1 (add)

1.03

 

GPU 본연의 성능이라면 연산성능.

GFX벤치 ALU 테스트가 연산성능과 관련되어 있을거라는건 쉽게 생각할만한 부분.

그런데 그렇게 치면 T628MP6과 A330의 연산성능 차이는 70%인데, ALU 결과 차이는 3배가 넘게납니다.

석연치 않은 부분.

그렇다면 전체 연산성능이 의미가 없다는건데......

 

1. T628

T628(정확히는 midgard 아키텍처)의 연산성능은 17 flops/cycle인데 구성을 보면,

7 : Dot product (4 muls, 3 adds)
1 : scalar add
4 : vec4 add
4 : vec4 multiply
1 : scalar multiply

 

전체 성능이 아니면 multiply나 add라는건데, 그래서 계산해본게 위의 표.

ALU 결과와 연산성능 비율을 봐서는 multiply 연산을 중심으로 테스트하는듯.

그렇다는건 그래픽 연산에서 비중이 높은게 multiply 연산이라는거겠고.

 

2. Adreno

FP32 연산성능 전체로 적용한 값대로 ALU 성능이 나와줍니다.

vec4+scalar 구조라는데......

FP32 기준이면 mul 연산만 따지면 전체 연산성능의 반토막으로 나올겁니다.

그런데도 연산성능이 그대로 적용된다는건 mul 연산으로해도 그만큼 수치가 나온다는거.

ALU에서 쓰는게 FP16 연산일지도 모르겠습니다.

 

3. PowerVR6 에서 문제?

이런 식이면 G6430(A7)과 GX6450(A8) ALU 결과 클럭 차이 수준이라는거 문제?

자료를 보니,

(링크 : https://de45xmedrsdbp.cloudfront.net/Resources/files/GDC2014_Next_Generation_Mobile_Rendering-2033767592.pdf)

 - PowerVR 6

FP16 : 2 SOP/cycle (SOP : a*b + c*d)

FP32 : 2 MADD/cycle (MADD : a*b +c)

 - PowerVR 6XT

FP16 : 4 MADD/cycle

FP32 : 2 MADD/cycle

 

이러면 FP16 MUL은 둘의 차이가 없습니다.

G6430(A7)과 GX6450(A8)의 ALU 결과가 클럭 차이 수준인게 맞는거.

ALU 테스트에서 쓰는게 FP32인지 FP16 인지 알 수 없지만 어느 쪽으로 보든 ALU 결과를 들어맞음.

 

 

- FP16 MUL 기준으로 정리해보면,

 

GPU

ALU off (fps)

CLK (MHz)

GFLOPS (이론)

ALU/GFLOPS

A420

165.2

600

345.6

0.48

A330

153.5

578

332.9

0.46

A320

58.6

450

129.6

0.45

T628MP6

47.3

480

103.7

0.48

G6430 (A7)

78.6

450

172.8

0.45

GX6450 (A8)

94.3

550

211.6

0.45

 

정확한지 모르겠지만 일단은 잘 들어맞네요.

 

 

- 결국

Mali 계열이 맨해튼에서 성능 열세를 보이는건 FP16 Matrix-Multiply 연산 성능 부족때문.

 

Add 연산까지 활용할 수 있는 최적화 코드를 활용하면 어느 정도 성능 부족을 개선할 수 있을 것으로 보이지만 근본적으로 다수 애플리케이션 적용에는 한계가 있는 방식일듯.

 

결국 해결하려면 현재 MP당 2개인 ALU수를 늘리든가, ALU 구조를 바꾸든가 해야할텐데 T760까지는 미드가르드 아키텍처를 따르느라 변화가 없었음.

관건은 이후 신규 아키텍처에서 변화가 있을 것인가.

 

 

 

반응형

댓글