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

iPad Air 2(Apple A8X)의 GPU

(원문 : iPad Air 2 (Apple A8X) の GPU)

가장 큰 차이는 ASTC의 지원여부입니다.

GL_VERSION: OpenGL ES 3.0 Apple A8X GPU - 50.6.10
GL_RENDERER: Apple A8X GPU
GL_VENDOR: Apple Inc.
GL_SHADING_LANGUAGE_VERSION: OpenGL ES GLSL ES 3.00

Metal의 시대까지 와서 무슨 OpenGL ES이냐는 생각도 들지만 일단 체크해둡니다. A8X에서는 A7에 없던 ASTC 압축 텍스처 형식이 추가되었습니다. ASTC에 관한 자세한 내용은 다음을 참조하시기 바랍니다.

OpenGL ES는 3.0 그대로입니다만, 이미 Metal API가 있으니 없어도 별 문제는 되지 않으리라 생각됩니다. Metal에서는 ES 3.1에 해당하는 기능을 이용할 수 있습니다.

Extension:
GL_OES_standard_derivatives
GL_KHR_texture_compression_astc_ldr
GL_EXT_color_buffer_half_float
GL_EXT_debug_label
GL_EXT_debug_marker
GL_EXT_pvrtc_sRGB
GL_EXT_read_format_bgra
GL_EXT_separate_shader_objects
GL_EXT_shader_framebuffer_fetch
GL_EXT_shader_texture_lod
GL_EXT_shadow_samplers
GL_EXT_texture_filter_anisotropic
GL_APPLE_clip_distance
GL_APPLE_color_buffer_packed_float
GL_APPLE_copy_texture_levels
GL_APPLE_rgb_422
GL_APPLE_texture_format_BGRA8888
GL_IMG_read_format
GL_IMG_texture_compression_pvrtc

TextureFormat 42
00=8c00  GL_COMPRESSED_RGB_PVRTC_4BPPV1_IMG
01=8c01  GL_COMPRESSED_RGB_PVRTC_2BPPV1_IMG
02=8c02  GL_COMPRESSED_RGBA_PVRTC_4BPPV1_IMG
03=8c03  GL_COMPRESSED_RGBA_PVRTC_2BPPV1_IMG
04=9270  GL_COMPRESSED_R11_EAC
05=9271  GL_COMPRESSED_SIGNED_R11_EAC
06=9272  GL_COMPRESSED_RG11_EAC
07=9273  GL_COMPRESSED_SIGNED_RG11_EAC
08=9274  GL_COMPRESSED_RGB8_ETC2
09=9275  GL_COMPRESSED_SRGB8_ETC2
10=9278  GL_COMPRESSED_RGBA8_ETC2_EAC
11=9279  GL_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC
12=9276  GL_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2
13=9277  GL_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2
14=93b0  GL_COMPRESSED_RGBA_ASTC_4x4_KHR
15=93b1  GL_COMPRESSED_RGBA_ASTC_5x4_KHR
16=93b2  GL_COMPRESSED_RGBA_ASTC_5x5_KHR
17=93b3  GL_COMPRESSED_RGBA_ASTC_6x5_KHR
18=93b4  GL_COMPRESSED_RGBA_ASTC_6x6_KHR
19=93b5  GL_COMPRESSED_RGBA_ASTC_8x5_KHR
20=93b6  GL_COMPRESSED_RGBA_ASTC_8x6_KHR
21=93b7  GL_COMPRESSED_RGBA_ASTC_8x8_KHR
22=93b8  GL_COMPRESSED_RGBA_ASTC_10x5_KHR
23=93b9  GL_COMPRESSED_RGBA_ASTC_10x6_KHR
24=93ba  GL_COMPRESSED_RGBA_ASTC_10x8_KHR
25=93bb  GL_COMPRESSED_RGBA_ASTC_10x10_KHR
26=93bc  GL_COMPRESSED_RGBA_ASTC_12x10_KHR
27=93bd  GL_COMPRESSED_RGBA_ASTC_12x12_KHR
28=93d0  GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR
29=93d1  GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR
30=93d2  GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR
31=93d3  GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR
32=93d4  GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR
33=93d5  GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR
34=93d6  GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR
35=93d7  GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR
36=93d8  GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR
37=93d9  GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR
38=93da  GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR
39=93db  GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR
40=93dc  GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR
41=93dd  GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR

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

관련 글

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

iPad Air 2(Apple A8X)의 부동소수점 연산능력

(원문 : iPad Air 2 (Apple A8X) の浮動小数点演算能力)

iPad Air 2(A8X)의 부동소수점 연산능력을 조사해보았습니다. 더 자세한 기록은 다음 페이지에 올려놓았습니다.

// iPad 2 Air (Apple A8X)

ARCH: ARMv8A
VFP: AArch64 NEON
SingleT SP max:  23.568 GFLOPS
SingleT DP max:  11.751 GFLOPS
MultiT  SP max:  68.591 GFLOPS
MultiT  DP max:  33.968 GFLOPS
CPU core: 3
FMA: Yes
NEON: Yes

↑정말로 CPU가 3 core였습니다. 모바일 기기에서는 좀처럼 보기 힘들고 Xbox360이나 Wii U 등 게임기에서 많이보이는 구성입니다.

원래 Cyclone은 Apple A7에서도 부동소수점 연산능력이 돌출된 CPU였는데, A8X에서도 거의 같은 경향을 보입니다. 부동소수점 연산능력은 스칼라와 벡터 모두 2 명령 동시 실행이 가능하고, NEON의 128bit 덧곱셈[각주:1]도 병렬로 실행합니다. 동작 클럭은 낮지만, 3 core가 됨으로써 다른 ARM Core의 4 core에 필적하는 수치를 보여줍니다. (아래 표의 (*1))

	      Apple A8X   Snapdragon 800   Tegra K1    Atom Z3745
               Cyclone      Krait 400     Cortex-A15   Silvermont
	      1.5GHz x3     2.2GHz x4     2.2GHz x4    1.83GHz x4
------------------------------------------------------------------
SingleT SP      23.568       17.128        17.136        8.946
SingleT DP      11.751        4.289         3.431        2.797
MultiT  SP(*1)  68.591       67.539        70.174       35.473
MultiT  DP      33.968       16.874        14.036       11.060

 * 수치는 GFLOPS, 값이 클수록 고속
 * 배정밀도(DP)에서 차가 크게 벌어진 것은 ARMv7A(32bit)에 NEON이 없기 때문
 * 최대치이므로 실제 애플리케이션 동작속도와는 다를 수 있음

명령별 로그를 더 자세히 살펴보면, A7에서 왠지 느렸던 배정밀도의 스칼라 덧곱셈 연산이 개선되었음을 알 수 있습니다.

// iPhone 5s (Apple A7)
배정밀도연산
                             실행시간 연산수   연산수
---------------------------------------------------------------
FPU fmul (64bit x1) n8      :  1.642   2436.1   2436.1
FPU fadd (64bit x1) n8      :  1.045   3827.0   3827.0
FPU fmadd (64bit x1) n8     :  3.915   2043.6   2043.6 --- (A-7)
NEON fmul.2d (64bit x2) n8  :  1.567   5105.1   5105.1
NEON fadd.2d (64bit x2) n8  :  1.034   7736.5   7736.5
NEON fmla.2d (64bit x2) n8  :  1.958   8172.1   8172.1 --- (B-7)

↑ Apple A7에서는 FPU fmadd의 덧곱셈(A-7)만 3.915로 이상하게 실행시간이 길었습니다. 같은 덧곱셈이라도 NEON fmla은 그렇게까지 떨어지지 않고, (B-7)을 보면 알 수 있듯 오히려 스칼라보다 고속으로 실행되었습니다.

// iPad Air 2 (Apple A8X)
배정밀도연산
                             실행시간 연산수   연산수
---------------------------------------------------------------
VFP fmul (64bit x1) n8      :  1.442   2773.8   2773.8
VFP fadd (64bit x1) n8      :  0.926   4321.2   4321.2
VFP fmadd (64bit x1) n8     :  1.772   4513.6   4513.6 --- (A-8)
NEON fmul.2d (64bit x2) n8  :  1.408   5681.0   5681.0
NEON fadd.2d (64bit x2) n8  :  0.922   8680.2   8680.2
NEON fmla.2d (64bit x2) n8  :  1.744   9175.5   9175.5 --- (B-8)

↑ Apple A8X에서는 스칼라의 배정밀도 덧곱셈(A-8)도 NEON(B-8)과 같은 속도로 실행되고 있어, Apple A7의 약점이 극복되어있음을 알 수 있습니다.

아래 페이지의 표에 이 연산능력의 차이를 정리했습니다.

관련 글

  1. 실수 두 값을 곱한 후 그 결과를 목표값에 더하는 연산(fd += fn * fm)의 의역 [본문으로]

+ Recent posts