※ 이 글은 오가사와라 히로유키(小笠原博之) 씨가 블로그에 적은 글을 번역한 것입니다. 사정에 따라 예고없이 삭제될 수 있으므로 양해부탁드립니다.

(Kindle) Fire HD 6는 OpenGL ES 3.0에 대응하는 비대칭 4 core CPU

(원문 : (Kindle) Fire HD 6 は OpenGL ES 3.0 対応で非対称 4 core CPU)

Amazon의 새 Tablet인 Fire HD 6는 Android 4.4 기반의 Fire OS 4.1을 탑재했습니다. Android 4.4, API Level 19이 됨으로써 GPU가 대응하면 OpenGL ES 3.0를 쓸 수 있게 되었습니다.

아래는 Fire HD 6의 결과입니다.

GL_VERSION: OpenGL ES 3.0 build 1.3@2876724
GL_RENDERER: PowerVR Rogue Han
GL_VENDOR: Imagination Technologies
GL_SHADING_LANGUAGE_VERSION: OpenGL ES GLSL ES 3.00 build 1.3@2876724

SoC는 MediaTek MT8135으로, 비대칭의 4 core CPU에 PowerVR G6200를 탑재합니다. Extension과 대응하는 압축 텍스처는 다음과 같습니다.

Extension:
GL_OES_rgb8_rgba8
GL_OES_depth24
GL_OES_vertex_half_float
GL_OES_texture_float
GL_OES_texture_half_float
GL_OES_element_index_uint
GL_OES_mapbuffer
GL_OES_fragment_precision_high
GL_OES_compressed_ETC1_RGB8_texture
GL_OES_EGL_image
GL_OES_EGL_image_external
GL_OES_EGL_sync
GL_OES_required_internalformat
GL_OES_depth_texture
GL_OES_get_program_binary
GL_OES_packed_depth_stencil
GL_OES_standard_derivatives
GL_OES_vertex_array_object
GL_OES_texture_npot
GL_OES_surfaceless_context
GL_EXT_discard_framebuffer
GL_EXT_multi_draw_arrays
GL_EXT_multisampled_render_to_texture
GL_EXT_shader_texture_lod
GL_EXT_texture_filter_anisotropic
GL_EXT_texture_format_BGRA8888
GL_EXT_blend_minmax
GL_EXT_texture_rg
GL_EXT_occlusion_query_boolean
GL_EXT_color_buffer_float
GL_EXT_shader_framebuffer_fetch
GL_EXT_separate_shader_objects
GL_EXT_robustness
GL_EXT_draw_buffers
GL_IMG_shader_binary
GL_IMG_texture_compression_pvrtc
GL_IMG_texture_compression_pvrtc2
GL_IMG_texture_npot
GL_IMG_texture_format_BGRA8888
GL_IMG_read_format
GL_IMG_program_binary
GL_IMG_multisampled_render_to_texture
GL_KHR_debug

TextureFormat 17
00=8c01  GL_COMPRESSED_RGB_PVRTC_2BPPV1_IMG
01=8c03  GL_COMPRESSED_RGBA_PVRTC_2BPPV1_IMG
02=8c00  GL_COMPRESSED_RGB_PVRTC_4BPPV1_IMG
03=8c02  GL_COMPRESSED_RGBA_PVRTC_4BPPV1_IMG
04=9137  GL_COMPRESSED_RGBA_PVRTC_2BPPV2_IMG
05=9138  GL_COMPRESSED_RGBA_PVRTC_4BPPV2_IMG
06=8d64  GL_ETC1_RGB8_OES
07=9274  GL_COMPRESSED_RGB8_ETC2
08=9275  GL_COMPRESSED_SRGB8_ETC2
09=9278  GL_COMPRESSED_RGBA8_ETC2_EAC
10=9279  GL_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC
11=9276  GL_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2
12=9277  GL_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2
13=9271  GL_COMPRESSED_SIGNED_R11_EAC
14=9270  GL_COMPRESSED_R11_EAC
15=9273  GL_COMPRESSED_SIGNED_RG11_EAC
16=9272  GL_COMPRESSED_RG11_EAC

ETC2/EAC만이 아니라 PVRTC2(PVRTCv2)에도 대응하고 있음을 알 수 있습니다. 같은 Series 6이라도 iOS에서는 PVRTCv2에 대응하지 않았습니다. PVRTCv2는 ETC2와 마찬가지로, 상위호환성을 가지면서 모드 분기에 따른 화질향상을 이룬 2세대 압축 포맷입니다.

1세대     2세대
-------------------
ETC1      ETC2/EAC
PVRTCv1   PVRTCv2
                          PVRTCv1  PVRTCv2  ETC1  ETC2/EAC
----------------------------------------------------------
Android PowerVR Series 5    Y        -       Y       -
Android PowerVR Series 6    Y        Y       Y       Y
iOS PowerVR Series 5        Y        -       -       -
iOS PowerVR Series 6        Y        -       Y*1     Y

 *1 ETC2 は ETC1 の上位互換性があるため ETC1 の読み込みも可能

CPU는 Cortex-A15 x2와 Cortex-A7 x2의 big.LITTLE 구성입니다. 실제로 테스트해보니 HMP가 유효화된듯 앱에서 4 core로 인식됨을 알 수 있습니다. 부하를 건 상태는 다음과 같습니다. 4 core 모두 활성화되어있습니다.

$ cat /sys/devices/system/cpu/online
0-3

$ cat /proc/cpuinfo
Processor	: ARMv7 Processor rev 3 (v7l)
processor	: 0
BogoMIPS	: 31.81
Features	: swp half thumb fastmult vfp edsp thumbee neon vfpv3 tls vfpv4 idiva idivt 
CPU implementer	: 0x41
CPU architecture: 7
CPU variant	: 0x0
CPU part	: 0xc07
CPU revision	: 3

Processor	: ARMv7 Processor rev 3 (v7l)
processor	: 1
BogoMIPS	: 31.81
Features	: swp half thumb fastmult vfp edsp thumbee neon vfpv3 tls vfpv4 idiva idivt 
CPU implementer	: 0x41
CPU architecture: 7
CPU variant	: 0x0
CPU part	: 0xc07
CPU revision	: 3

Processor	: ARMv7 Processor rev 2 (v7l)
processor	: 2
BogoMIPS	: 35.06
Features	: swp half thumb fastmult vfp edsp thumbee neon vfpv3 tls vfpv4 idiva idivt 
CPU implementer	: 0x41
CPU architecture: 7
CPU variant	: 0x3
CPU part	: 0xc0f
CPU revision	: 2

Processor	: ARMv7 Processor rev 2 (v7l)
processor	: 3
BogoMIPS	: 26.00
Features	: swp half thumb fastmult vfp edsp thumbee neon vfpv3 tls vfpv4 idiva idivt 
CPU implementer	: 0x41
CPU architecture: 7
CPU variant	: 0x3
CPU part	: 0xc0f
CPU revision	: 2

Hardware	: MT8135
Revision	: 000f 000a
Serial		: 0000000000000000

미들클래스에서도 Cortex-A7 Quad의 구성이 늘어나고 있는 가운데, 1만엔 전후의 가격대이면서 Cortex-A15를 탑재하고 있다는 점이 커다란 특징이라 할 수 있겠습니다. Cortex-A15와 Cortex-A7는 수배의 성능차가 있는만큼 HMP(GTS)에서 스케줄러가 어떻게 작업을 분배하는지가 흥미로운 부분입니다.

다음 페이지를 갱신했습니다.

관련글

※ 이 글은 오가사와라 히로유키(小笠原博之) 씨가 블로그에 적은 글을 번역한 것입니다. 사정에 따라 예고없이 삭제될 수 있으므로 양해부탁드립니다.

(원문 :モバイルデバイスは Game Console を超えたかどうか)

모바일 기기는 게임 컨솔을 넘었을까

모바일 기기는 요 몇년간 상당한 속도로 향상되어 왔으며, 기세도 줄어들지 않고 있습니다. 지금까지 테스트해온 대로, GPU, CPU 모두 PC나 전용기기에 필적하는 능력을 갖게 되었습니다.

개성이 치우쳐진 모바일 프로세서

PC와 마찬가지로 단말의 성능에는 큰 격차가 있습니다.

현시점에서 입수할 수 있는 가장 빠른 CPU는 Snapdragon APQ8064 (Krait Quad core) 일 것입니다. 내일 2013/04/04은 1.7GHz의 옵티머스G Pro L-04E가 발매예정입니다.

지금 당장 구할 수 있는 단말의 GPU 로는 틀림없이 iPad4의 A6X가 가장 빠릅니다.

PowerVR SGX500~의 형번호를 가진 GPU는 여럿 존재하지만, 크게 나누어 2종류가 있습니다.

PowerVR Series 5        SGX530, SGX535, SGX540
PowerVR Series 5XT      SGX543MP, SGX544MP, SGX554MP

형번호가 비슷해서 헷갈리지만, 양쪽에는 PVRTC2, 섀도우 샘플러, 연산정밀도, 멀티코어 등 기능적인 차이가 있습니다. 그중에서도 최상위인 SGX554MP4 를 탑재하고 있는 것은 iPad4의 A6X뿐 입니다.

이와 같이 하이엔드 단말 중에서도 각자 무엇을 중시하는가에 따라 평가가 달라집니다. Apple은 GPU를 최우선하고 있는 반면, CPU가 쿼드코어인 단말은 아직 존재하지 않습니다.

방향성으로 정반대인 것이 NVIDIA Tegra입니다. 솔선해서 듀얼코어, 쿼드코어인 Tegra2/3를 전개해왔지만, 트레이드 오프로서 GPU 기능이 약하고, 묘화성능도 좋지 않습니다.

따라서, 성능차만이 아니라 성격에 있어서도 특성이 제각기였던 것이 지금까지의 모바일 기기의 특징이었습니다.

  • 트레이드 오프가 있으므로 일부분만 우수하다
  • 메이커 별로 강화하고 있는 분야가 다르다

하지만 다음 세대에서는 이러한 언밸런스함이 상당부분 해소될 것이라 생각됩니다.

세대교체

다른 회사에 앞서서 GPU/CPU 모두 세대교체를 달성한 Qualcomm에서는, 아주 특출난 점은 없지만 평균적인 전체 성능이 높아졌습니다.

또, 이후 등장 예정인 Tegra4는 CPU 코어가 쇄신될 뿐 아니라, 겨우 NVIDIA다운 GPU로 강화될 듯 합니다.

Tegra2/3의 GPU인 ULP GeForce는 셰이더 유닛이 discrete였기에 GeForce6800/7800 세대라고 불리고 있었지만, 성능적으로는 대폭으로 깎인 물건이었습니다.

예를 들어 GeForce의 특징적 기능이었던 NVIDIA 섀도우 맵(PCF)이 Tegra2/3에는 탑재되어 있지 않습니다. 그뿐 아니라 지금까지 테스트한 GPU 중에서는 Tegra2/3만이 24비트 깊이나 깊이 텍스처에 대응하지 않았습니다. 다른 회사의 GPU인 Adreno, PowerVR, Mali, Vivante 는 모두 이러한 확장기능에 대응하고 있었는데 말입니다.

위 사이트의 슬라이드 사진을 보면 Tegra4에서 드디어 기능차가 해소되었으며, 또한 하드웨어 PCF가 탑재되는 등, 기대했던 GeForce 6800/7800 클래스의 GPU가 된 것 같습니다.

대충 4 픽셀 파이프니 성능적으로는 아마도 아무 표시없는 GeForce 6800 정도가 아닐까 합니다. 픽셀 레이트는 PS3/Xbox360 세대의 절반이지만, 메모리 대역으로 봐도 납득할 수 있는 수치입니다.

Xbox360  22.4GB/s (+32.0GB/s)
PS3      22.4GB/s (+25.6GB/s)
Tegra4   14.9GB/s

물론 예상에 지나지 않으므로 실제로 입수할 때까지는 진짜 성능은 알 수 없습니다.

CPU/GPU 양쪽의 세대교체를 통해, 일점집중형에서 평균적인 성능향상으로 이동하고 있다고 생각할 수 있습니다. 아마도 극단적인 개성연출은 줄어들어가지 않을까 싶습니다.

컨솔과의 비교

Xbox1/GC 시대의 컨솔은 확실히 넘어섰습니다. 우선 CPU의 속도에서 단위가 다르고, GPU 성능도 셰이더 등은 훨씬 고성능입니다. 단, 필레이트에 특화된 PS2의 특수한 하드웨어는 올바르게 비교할 수 없습니다.

또 모바일 기기에 요구되는 해상도는 컨솔보다도 높으므로, 그 점도 고려할 필요가 있습니다.

          mem B/W                CPU          RAM    screen
---------------------------------------------------------------
GC        2.6GB/s (+?)           0.5GHz x1    24MB   SD 480
PS2       3.2GB/s (+48.0GB/s)    0.3GHz x1    32MB   SD 480
Xbox1     6.4GB/s                0.8GHz x1    64MB   SD 480
Xbox360  22.4GB/s (+32.0GB/s)    3.2GHz x3   512MB   HD 720
PS3      22.4GB/s (+25.6GB/s)    3.2GHz x7   512MB   HD 720
PS4     176.0GB/s                ?.?GHz x8     8GB   HD 1080

Tegra3    6.0GB/s                1.7GHz x4  1~2GB
APQ8064   8.5GB/s                1.7GHz x4           HD 1080
A5X      12.8GB/s                1.0GHz x2     1GB   HD 1536
Tegra4   14.9GB/s                1.9GHz x4
A6X      17.0GB/s                1.?GHz x2     1GB   HD 1536

누가 봐도 확실하게 다른 점이라면 RAM 용량이 있습니다. 스마트폰도 태블릿도 RAM 용량 1GB~2GB는 당연하게 되었으며, 이 점에서는 현행 컨솔보다도 여유가 있습니다.

실 기기에서의 CPU 속도

실재 기기에서의 성능 비교
(실측이 아니라 스펙을 통한 연산치이므로 주의)

                             CPU           Clock  DMIPS/clock  DMIPS*core
-------------------------------------------------------------------------
Nexus 10            Exynos 5 Cortex-A15 x2  1.7GHz   3.5          11.90
ARROWS X F-02E      Tegra3   Cortex-A9  x4  1.7GHz   2.5          17.00
Optimus G Pro L-04E APQ8064  Krait      x4  1.7GHz   3.3          22.44

Xbox360             Xenon    PPC core   x3  3.2GHz   2.0~(3.2)   19.20~(30.72)
  • DMIPS*core 가 통합성능(참고치)으로 수치가 높은 쪽이 빠름

CPU의 코어수가 다르면 비교가 어려워지므로 어디까지나 참고치로만 봐주시기 바랍니다. DMIPS/clock는 동일 클럭에서 비교한 코어 1개의 능력으로, 이것을 클럭*코어수로 곱한 것이 DMIPS*core가 됩니다.

Xbox360의 DMIPS/clock은 Wikipedia Instructions per second를 참조했습니다. 단 동일 성능이어야 할 PS3 PPE가 3.2이므로 Xbox360의 실제 점수는 더 높을 가능성이 있습니다. (괄호 안의 수치는 3.2를 기준으로 한 경우) PS3의 Cell은 특수하여 간단히 비교할 수 없습니다.

앞으로 등장하게 될 Exynos 5 Octa (Cortex-A15 x4)나 Tegra4 (Cortex-A15 x4)의 점수를 예상하면 다음과 같습니다.

                             CPU           Clock  DMIPS/clock  DMIPS*core
-------------------------------------------------------------------------
Exynos 5 Octa                Cortex-A15 x4  1.6GHz   3.5          22.40
Tegra4                       Cortex-A15 x4  1.9GHz   3.5          26.60

그다지 엄밀한 비교는 아닐지도 모르지만, CPU 능력으로 현행 컨솔에 필적하는 레벨에 달했다는 것은 사실입니다.

단, 단정밀도의 부동소수점 연산능력으로는 당해내지 못합니다.

          CPU                fp-op/core   core   clock    GFLOPS
----------------------------------------------------------------
Xbox360   Xenon PPC            12         3      3.2GHz   115.2
PS3       Cell BE              12+8       1+7    3.2GHz   217.6
          Tegra3 Cortex-A9     4          4      1.7GHz    27.2
          APQ8064 Krait        8          4      1.7GHz    54.4
          Tegra4 Cortex-A15    8          4      1.9GHz    60.8
  • GFLOPS가 높은 쪽이 빠름
  • 이론치이므로 이대로의 성능이 나오지는 않습니다.

특히 Cell이 압도적으로, 필레이트 괴물이었던 PS2와 마찬가지로 일부분(부동소수점 연산능력)에 있어서 특출난 능력을 갖고 있습니다.

예상으로는 아마 PS4에서도 CPU 하나의 부동소수점 연산능력에 있어서는 Cell에 미치지 못하지 않을까 싶습니다. 그 대신 GPU에 스트림 처리를 맡길 수 있으므로, GPU를 보조하던 Cell과는 반대 입장이 됩니다.

GPU의 속도

  • Mobile Device는 해상도가 매우 높음
  • GPU의 구조가 다름
  • Tegra는 연산정밀도가 다름
  • 성능면에서는 동등

스마트폰에서는 Full HD, 태블릿에서는 2048x1536나 2560x1600 등 상당한 고해상도화가 이루어지고 있습니다. 메모리 대역도 셰이더 사이클도 대부분 픽셀에 소비됩니다. 그 때문에 설령 GPU 성능이 높아져도 상대적으로는 파워 부족에 빠지게 됩니다.

태반의 GPU가 타일 기반이며, 데스크탑 GPU와 구조가 다릅니다. 특히 PowerVR은 아무 것도 하지 않아도 하드웨어가 지연 렌더링을 하므로, 소프트웨어에서 너무 복잡한 일을 하면 역효과가 될 가능성이 있습니다.

예를 들어 Early Z Culling을 효과적으로 사용하려면 앞쪽에서부터 묘화를 해야하지만, 픽셀 단위로 프래그먼트가 제거되는 TBDR(Tile-Based Deferred Rendering. 타일 기반 지연 렌더링)에서는 불필요합니다. 또 포스트 이펙트같이 프레임 버퍼를 재이용하면 추가 비용이 발생할 가능성이 있습니다. 이런 것들을 의식하면서 만들지 않았을 경우, 단순히 이식하는 것만으로는 모바일 GPU에서는 성능이 그다지 나오지 않을지도 모릅니다.

그 점에서 Tegra는 Immediate Mode이므로 데스크탑 GPU와 같은 사고방식이 통용됩니다. 실제로 테스트한 것은 아니므로 억측이지만, 위에 적은대로 Tegra4에서 대충 현행 컨솔의 절반 정도가 아닐까 생각됩니다.

다만 Tegra 시리즈의 픽셀 셰이더는 연산정밀도가 mediump입니다. 정밀도가 필요한 셰이더는 동작하지 않을 가능성이 있고, 하드웨어 섀도우 샘플러의 대응은 필연이었을지도 모릅니다. 또 mediump를 기준으로 하면 PowerVR 역시 퍼포먼스가 올라가므로, fp32인 GPU와의 단순 FLOPS 비교는 무리가 있다고 생각합니다.

참고로, Qualcomm의 Adreno는 픽셀 셰이더의 연산정밀도도 GPU 선능도 컨솔과 비교하여 손색이 없습니다.

  • 셰이더나 확장기능 등, GPU 성능은 현행 컨솔과 완전히 동등
  • 묘화속도에서는 근거가 될 데이터가 부족(하지만 아마도 뒤떨어질듯)

정리

결론을 내자면, 내부구조를 숙지하고 있는 것도 실측해본 것도 아니므로 근거가 없지만, GPU 성능이나 게임에서 중요한 단정밀도의 부동소수점 연산성능에서도 Xbox360/PS3 쪽이 위일 것입니다. 더욱이 고해상도라는 것이나 버스 대역의 한계도 있어, 실제 애플리케이션에서는 GPU 성능 이상으로 간격이 생기는 것이 현실이 아닐까 싶습니다. 다만 급격한 성능의 향상으로, 따라잡는 것도 시간의 문제라는 것은 확실합니다. 특히 램 용량에서 앞서고 있으며, CPU 의 실행성능도 차이가 없어지고 있으니까요.


+ Recent posts