※ 이 글은 오가사와라 히로유키(小笠原博之) 씨가 블로그에 적은 글을 번역한 것입니다. 사정에 따라 예고없이 삭제될 수 있으므로 양해부탁드립니다.
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. 자세한 것은 아래 페이지에 게재했습니다.