간만에 소설 한 번 써보겠습니다.
소설이라함은 제가 확신을 가질 수 없는 부분이 몇 가지 존재하기때문입니다.
제 정보력과 능력 하에서 나올 수 있는 최선의 결론으로, 아마 틀리는 부분도 있고 맞는 부분도 있을겁니다.
이런 점 염두하고 보셨으면 합니다.


-
얼마 전에 엑시노스 5250 의 화이트페이퍼가 공개되었습니다.
(
삼성 엑시노스 5250 (Exynos 5250) 세부스펙 공개.)
GPU로
Mali-T604 가 탑재되는 것으로 나와있지요.

ARM의 1세대 Mali-T600 시리즈의 IP가 발표된지는 꽤 오래되었지만, 실제 제품화가 다가오는건 이번이 처음입니다.
구조적으로 이전 세대와 크게 변화하기때문에 구체적인 구조, 성능, 스펙이 정확하게 밝혀지지 않은 상태이기도 합니다.

이제까지 ARM, 삼성 등이 공개한 자료를 보아서 그 스펙을 추측해보려합니다.

일단 그 동안 공개되었던 Mali-T604 의 자료를 먼저 보면서 거기서 힌트가 될만한 것들을 찾아보겠습니다.


1. 각 연산유닛 성능은 17FLOPs/cycle, 연산유닛의 다중화(멀티코어화)를 통해 0.5TFLOPS 이상 가능.


2. Mali-T604 의 그래픽 성능은 최대 2 Gpix/s, 연산성능은 최대 68GFOLPS




3. Mali-T604 의 그래픽 성능은 최대 2 Gpix/s, 연산성능은 최대 68GFOLPS
Mali-T658 의 연산성능은 최대 272GFOLPS (T658 에 대한 것은 마지막에 부수적으로 다룰 예정)


4. 삼성 엑시노스 5250 의 Mali-T604 의 연산성능은 72GFLOPS


5. Mali-T604 통합쉐이더의 구조.


6. ARM의 발표 내용을 토대로 작성된 Mali-T604 의 구조 추측.


정리해보면 다음과 같습니다.

1. 각 연산유닛 성능은 17FLOPs/cycle
2. Mali-T604 의 그래픽 성능은 최대 2 Gpix/s, 연산성능은 최대 68GFOLPS
3. 삼성 엑시노스 5250 의 Mali-T604 의 연산성능은 72GFLOPS
4. Mali-T604 는 4개의 쉐이더코어로 구성되어있으며, 각 코어는 2개의 연산유닛, Load/Store유닛, 텍스쳐 유닛으로 구성되어 있다.
5. 각 연산유닛은 128bit(4-way 32bit) 벡터유닛 + 32bit 스칼라유닛 으로 구성. 

4,5 의 스펙 추정을 중심으로 1,2,3 의 내용을 검증해보겠습니다.


1. 각 연산유닛 성능은 17FLOPs/cycle

128bit 벡터유닛이 FP(Floating-point : 부동소수점) 연산이 가능한건 확실합니다.
32bit 스칼라유닛이 FP 연산이 가능한가가 불명인데, 가능한 쪽으로 보는게 타당합니다.
정수연산만 한다고 가정하면, 전체 연산성능에서 상당히 손해를 보는데다가,
연산 자원이 넉넉하지 않은 상황에서 벡터유닛이 정수연산이 가능한데 굳이 정수 연산만을 위한 스칼라 유닛을 추가하는건 낭비에 가깝습니다.

벡터유닛과 스칼라유닛이 모두 한 사이클(cycle)에 ADD, MUL(Multiply)의 2회 연산을 한다고 가정하겠습니다.
(2 OPeratons/cycle)
(대부분 연산에 있어서 덧셈, 곱셈의 비중이 높기때문에 덧셈, 곱셈을 주력으로 삼고, 그 외의 연산들은 특수연산으로 돌립니다.)
이 가정은 일반적인 GPU를 생각했을 때, 실제로 그러할 확률은 99% 이상입니다.
다만, 엔비디아를 비롯한 일부 제품에 4 OPeratons/cycle 혹은 1 OPeratons/cycle 의 특성을 보이는 연산유닛이 포함되어있기때문에 가정이라 한 것입니다.

이제까지의 내용을 토대로 계산해보면,
단정밀도 (single precision, 32bit FP) 기준으로 10 FLOPs/cycle 이 나옵니다.
(벡터유닛 4 x 2 + 스칼라유닛 1 x 2 = 10)

17FLOPs/cycle 와 차이가 있습니다.
모자라는 7 FLOPs/cycle 은 16bit FP normalizaion 같은데 정확한건 잘 모르겠네요.
(실력이 부족...)
(16 FP 기준일 가능성도 있기는한데, 설마하니 그걸 기준으로 표기하지는 않았겠지요.)



2. Mali-T604 의 그래픽 성능은 최대 2 Gpix/s, 연산성능은 최대 68GFOLPS

연산유닛 하나의 연산능력이 17 FLOPs/cycle 인건 확인이 되었습니다.
Mali-T604 의 쉐이더 코어가 4개이고, 쉐이더 코어 하나에는 연산유닛이 2개씩 있으니, 총 연산유닛 수는 8개가 됩니다.
(17 FLOPs/cycle) x (8개) x (클럭) = 68 GFLOPS 가 됩니다.
클럭은 500MHz 가 됩니다.

통합쉐이더 방식에서 그래픽 성능은 텍스쳐유닛(TMU), 렌더아웃풋유닛(ROP)의 수와 동작 속도에 따라 결정됩니다.
통합쉐이더 방식에서는 연산능력을 극대화하기위해 쉐이더프로세서를 극단적으로 늘리는 방식을 취하는데, 이렇게 연산유닛과 출력단이 1:1 대응하지 않으면 병목이 발생하기때문.
Mali-T600 시리즈에 사용된 미드가르드(Midgard) 아키텍처에서는 텍스쳐유닛이 ROP 기능도 겸하고 있습니다.
Mali-T604 의 쉐이더 코어는 4개인데, 쉐이더 코어 하나에는 텍스쳐유닛이 하나씩 있기때문에 총 4개가 있습니다.
2Gpix/s / 4 = 500MHz
역시나 500MHz 가 나옵니다.

ARM에서 권장?보증?하는 Mali-T604 최대 클럭은 500MHz 로 보입니다.


3. 삼성 엑시노스 5250 의 Mali-T604 의 연산성능은 72GFLOPS

연산능력이 더 높아졌습니다.
클럭이 더 높은거지요.
500MHz x (72GFLOPS/68GFLOPS) = 530MHz

엑시노스 5250 에서 Mali-T604 의 클럭은 533MHz 정도일 것으로 보입니다.

Mali-T604 533MHz 의 픽셀 성능을 계산해보면 2.13Gpix/s 가 나옵니다.
Mali-400MP4 400MHz(엑시노스 4412) 의 그래픽 성능이 1.6Gpix/s 입니다.
Mali-400MP4 266MHz(엑시노스 4210) 은 1.06Gpix/s

Mali-400MP4 266MHz 대비 2배 (100% 향상)
Mali-400MP4 400MHz 대비 1.33배 (33% 향상)

통합쉐이더에서는 성능지표가 픽셀성능과 텍스쳐성능이기때문에 의미가 없는 것 같기도 한데,
그래도 버텍스 성능을 유추해보겠습니다.

엔비디아, AMD의 사례를 보면 동일 스펙(클럭, 유닛수)에서 버텍스 성능이 텍스쳐 성능의 1/4 정도입니다.
최대 1클럭에 1 triangle 인거지요. (3D에서는 기본 단위사면체이니 어찌보면 당연)
이를 Mali-T604 에 그대로 적용해보면 533 Mtri/s
이 수치가 맞다는 보장은 없지만, 맞다고 가정하면 버텍스 성능이 높다는 Adreno 를 크게 앞서는 수준입니다.


(엑시노스 5250 화이트 페이퍼에 있는 이 비교는 엑시노스 4210 과의 비교인가?)


앞의 내용을 토대로 Mali-T658 도 보겠습니다.


쉐이더 코어수가 2배이고, 코어당 연산유닛 수도 2배로 늘었습니다.



자료를 토대로한 구조 추정.

쉐이더 코어 8개
연산유닛 32개
텍스쳐유닛 8개



1. Mali-400MP4 의 최대 10배의 그래픽 성능.

Mali-400MP4 400MHz 의 그래픽 성능이 1.6Gpix/s 입니다.
10배면 16Gpix/s 겠지요.
텍스쳐유닛이 8개이니 나누면 2GHz 가 나오네요. 이건 좀 무리한 클럭이고...
Mali-400MP4 가 아닌 Mali-400 가 기준이면 500MHz 가 나옵니다.

10배의 기준이 뭔지 모르겠네요.



2. 272 GFLOPS

(17 FLOPs/cycle) x (32개) x (클럭) = 272 GFLOPS
500MHz 나옵니다.
Mali-T604 와 같네요.



3. 350 GFLOPS

(17 FLOPs/cycle) x (32개) x (클럭) = 350 GFLOPS
643MHz 가 나옵니다.
현재 공정 수준에서는 Mali-T658 정도면 많이 양보해서 태블릿, 보통은 순수 GPGPU 연산 용도정도를 생각할 수 있는 수준이기때문에 고클럭을 상정해도 이상하지 않습니다.




4. 168 GFLOPS

(17 FLOPs/cycle) x (32개) x (클럭) = 168GFLOPS
309MHz 정도 나옵니다.

엑시노스 5450 GPU 클럭은 309MHz 내외인듯.
실제 제품이 어떨지는 모르겠지만요.



- 결론
1. ARM 에서 Mali-T604 최대 클럭을 500MHz 로 상정했다.
2. 삼성 엑시노스 5250 의 Mali-T604 클럭은 533MHz 이다.
3. 버텍스, 픽셀 성능으로 보건데, Mali-T604 의 그래픽 성능은 크게 향상되었다.
(더 이상 버텍스 고자가 아님.)
4. Mali-T658 의 성능은 클럭이 유동적이기때문에 확실하지 않다. 다만 클럭이 확실하면 어느 정도 계산이 가능.



Posted by gamma0burst Trackback 0 : Comment 8

댓글을 달아 주세요

  1. addr | edit/del | reply 방문자 2012.08.14 10:10

    GPU의 실성능은 단순히 부동소수점 연산 수치만으로 비교할 수가 없던 것이였군요? 저는 단순히 플롭스만 비교해서 Mali-T604가 Mali-400MP4의 4배 정도의 성능이라 생각했는데... 이는 잘못된 생각이었군요. 애초에 Mali-400MP4의 기가플롭스 수치도 확실히 모르기도 했네요. GPU성능은 버텍스 수치도 적용되고 픽셀 성능도 적용되고... 상당히 복잡한 것이군요?

    잠시 인터넷에서 버텍스 수치를 찾아봤는데요. Mali-400MP4는 44Mtri/s, 1.6Gpix/s, Adreno320은 225Mpolys/s, 2.0Gpix/s, SGX543MP4는 133Mpolys/s, 4.0Gpix/s로 나오더군요. 그런데 tri/s와 polys/s는 같은 것인가요???

    제가 잘은 모르지만... T604의 533mtri/s는 너무 높지 않을까 하는 생각이 듭니다. 400MP4와 450MP를 보면 코어클럭에 11% 수치로 tri/s가 정해지던데 이 수치라면. T604가 500클럭일 때 11%인 55Mtri/s가 될 테고 여기서 코어수 만큼 4배를 곱해서 220Mtri/s가 아닐까 생각되네요.

    그나저나 SGX543MP4의 픽셀 성능은 엄청나군요. 부동소수점 연산이 32기가플롭스 밖에 안되지만... 픽셀 성능이 4Gpix/s라니... 이래서는 T604가 68기가플롭스라고 해도... 픽셀 성능이 2.0Gpix/s밖에 안되니까 성능차가 얼마 안날 것 같아요.

    이렇게 계산하는 게 맞는지 모르겠지만... 4.0Gx32 : 2.0GX68 = 128 : 136이 되는군요. 이래서는 성능차는 +6%정도네요. 만약 72GFLOPs라면... 2.16x72=155.52 이러면 성능차가 +21.5%가 되네요. 물론 버텍스 성능은 T604가 68GFLOPs라고 해도 4배 정도 더 높을 것 같아요. (tri/s와 polys/s가 같다는 가정하에...)

    인터넷에서 조금 더 찾아보니 Adreno320은 26.7GFLOPs더군요. 부동소수점 연산에서 이렇게 차이가 나면 버텍스 성능은 T604가 부동소수점 수치의 비율만큼 더 높겠네요. 약 2.54배... 그런데 조금 이상하게 생각되는 게... SGX543MP4보다 Adreno320의 GFLOPs가 낮네요? Adreno320이 SGX543MP4보다 픽셀 성능이 반밖에 안되고 버텍스 성능만 2배인데... 어떻게 벤치상 성능은 비슷한지 이게 신기하네요. 그만큼 버텍스 성능이 벤치에 적용되는 부분이 많은 건가요? 그렇다면... T604의 버텍스 성능에 따라서 벤치 결과가 예상을 뛰어 넘을 수도 있다는 결론이 날 수도...?!



    • addr | edit/del Favicon of https://gamma0burst.tistory.com BlogIcon gamma0burst 2012.08.14 14:58 신고

      Mali-400MP4와 T604는 구조적으로 완전히 달라졌기때문에 T604의 성능이 400MP4의 오버클럭 수준일 것이라 예측하는건 무리가 있습니다.
      그렇기때문에 실성능을 예측하는데 어려움이 있는거고요.

      중간에 이런저런 계산을 하셨습니다만, 사실 실성능을 비교할 절대적인 기준은 없다고 봐야됩니다.
      실성능에 반영되는 요소가 크게 연산능력(스트림프로세서수), 텍스쳐성능, ROP성능, 메모리대역폭 인데,
      벤치마크 프로그램, 게임, 기타 프로그램, 앱마다 이 요소들의 반영비율이 다릅니다.
      극단적으로보면 어느 요소의 비중이 더 큰가에 따라서 성능 우위는 크게 바뀔 수 있는겁니다.

  2. addr | edit/del | reply 2012.08.14 17:20

    비밀댓글입니다

    • addr | edit/del Favicon of https://gamma0burst.tistory.com BlogIcon gamma0burst 2012.08.15 00:35 신고

      Mali-400MP4 의 세부구조는 정확하게 알려져있지 않습니다.
      (제 정보력의 한계일지도...)

      아난드텍에서 계산한건 FP16(Half precision) 기준인으로 생각되는데, 아난드텍에서 설정한 정보와 제가 찾아본 아키텍처 정보가 좀 차이가 있어서 저 수치가 맞다틀리다 하기가 애매합니다.

      제가 찾아본 정보대로라면, 본문에서 언급한 FP32 기준으로는 8~9 GFLOPS 정도(Mali-400MP4 400MHz)로 보입니다.
      애초에 FP32 를 지원하는지가 의문이지만요.

  3. addr | edit/del | reply 레이 2012.08.14 23:47

    mail400 보다는 엄청나게 발전했다는거군요.. 기대되네요

  4. addr | edit/del | reply lightspirit3 2012.08.16 13:06

    테그라크 오버클럭을 보니 갤s3 mali400mp4의 클럭은 440mhz인 것 같네요..

    아, 그런데 마지막 ppt의 내용은 참고할 만한걸까요..? t685라는 이상한 오타도 좀 거슬리고.. a15 쿼드코어가 32Gflops를 내는게 가능한가요?

    • addr | edit/del Favicon of https://gamma0burst.tistory.com BlogIcon gamma0burst 2012.08.16 16:47 신고

      가서보니 그렇긴한데 그러면 벤치마크 성능이 클럭에 잘 안 맞아서요.
      원래 그런건가...

      마지막 슬라이드는 믿거나말거나 참고 삼아해본거니까요.ㅋ
      ARM 발표 자료에서 Cortex-A15 의 VFP/NEON 이 4op/cycle 이라고 나왔있는데,
      여기서 4코어, 2GHz 면 x8 이 되니 32GFLOPS 가 나옵니다.
      맞기는 맞는듯.
      왜 4op/cycle 인지 구조적으로 정확히는 모르겠지만 짐작은 되는정도인데, 다수의 병렬컴퓨팅 자료에서 저 수치를 인용하는거보면 틀리지는 않은듯 합니다.