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

Nexus 9 Tegra K1과 ARM 64bit Denver

(원문 : Nexus 9 Tegra K1 と ARM 64bit Denver)

iPhone 5s에 뒤쳐진지 대략 1년, 64bit 대응 Android와 ARM64 단말이 발매되었습니다. Nexus 9의 CPU core는 NVIDIA의 Denver.

Processor	: NVIDIA Denver 1.0 rev 0 (aarch64)
processor	: 0
processor	: 1
Features	: fp asimd aes pmull sha1 sha2 crc32 
CPU implementer	: 0x4e
CPU architecture: AArch64
CPU variant	: 0x0
CPU part	: 0x000
CPU revision	: 0

Hardware	: Flounder
Revision	: 0000
Serial		: 0000000000000000

좀 보기 힘들지만 "processor" 행이 2개 있으므로 dual core입니다.

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

vfpbenchmark는 아래와 같습니다. single core 시의 부동소수점 연산능력은 SHILED Tablet(Cortex-A15 2.2GHz)과 거의 동등하여, 종합성능에서는 Core의 수만큼 떨어집니다. 어디까지나 32bit의 결과이고 나중에 64bit(AArch64)에서도 테스트해보려 합니다.

// Nexus 9
ARCH: ARMv7A
CPU core: 2
VFP: VFPv4-D32 NEON
FMA: Yes
NEON: Yes
  SingleT SP max: 17.799 GFLOPS
  SingleT DP max:  4.423 GFLOPS
  MultiT  SP max: 34.582 GFLOPS
  MultiT  DP max:  8.719 GFLOPS
ro.product.cpu.abi=arm64-v8a
ro.product.cpu.abilist=arm64-v8a,armeabi-v7a,armeabi
ro.product.cpu.abilist32=armeabi-v7a,armeabi
ro.product.cpu.abilist64=arm64-v8a

arm64-v8a, armeabi-v7a, armeabi 3개의 ABI에 대응합니다. Android가 현재 NDK에서 지원하는 ABI는 아래의 7종류입니다.

armeabi       ARMv5TE
armeabi-v7a   ARMv7A VFPv3-D16 softfp (VFPv3-D32, NEON, hard-float)
arm64-v8a     ARMv8A (AArch64)
x86           x86 (IA-32)
x86_64        x64
mips          MIPS32-R1
miips64       MIPS64

참고로 iOS에서 개발용의 lib를 만들면 5종류.

armv7         ARMv7A VFPv3-D32+NEON softfp
armv7s        ARMv7A VFPv4-D32+NEON softfp
arm64         ARMv8A (AArch64)
i386          x86    simulator
x86_64        x86_64 simulator

GPU는 OpenGL ES 3.1의 Context를 반환합니다.

GL_VERSION: OpenGL ES 3.1 NVIDIA 343.00
GL_RENDERER: NVIDIA Tegra
GL_VENDOR: NVIDIA Corporation
GL_SHADING_LANGUAGE_VERSION: OpenGL ES GLSL ES 3.10

대응하는 텍스처 포맷은 DXT, ETC1, ETC2/EAC, ASTC. 자세한 것은 아래 페이지에 게재했습니다.

+ Recent posts