※ 이 글은 오가사와라 히로유키(小笠原博之) 씨가 블로그에 적은 글을 번역한 것입니다. 사정에 따라 예고없이 삭제될 수 있으므로 양해부탁드립니다.
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 덧곱셈도 병렬로 실행합니다. 동작 클럭은 낮지만, 3 core가 됨으로써 다른 ARM Core의 4 core에 필적하는 수치를 보여줍니다. (아래 표의 (*1)) 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의 약점이 극복되어있음을 알 수 있습니다.
아래 페이지의 표에 이 연산능력의 차이를 정리했습니다.
관련 글
- Android x86 Binary Translator를 테스트해보다
- Atom Bay Trail의 부동소수점 연산능력
- VFP Benchmark v1.1 부동소수점 연산명령의 속도 (NEON/SSE/AVX)
- ARM CPU의 VFP Benchmark앱 부동소수점 연산속도 계측
- iPhone 5s A7 CPU의 부동소수점 연산속도 (2) (arm64/AArch64/64bit)
- iPhone 5s A7 CPU의 부동소수점 연산속도 (32bit)
- Nexus 10 CPU Cortex-A15의 속도
- Nexus 10 CPU Cortex-A15의 부동소수점 연산속도
- Qualcomm APQ8064 GPU Adreno 320의 속도
- Qualcomm APQ8064 Krait/A6 swift의 부동소수점 연산능력
- ARM Cortex-A8의 NEON과 부동소수연산 최적화
- benchmark 관련
- 실수 두 값을 곱한 후 그 결과를 목표값에 더하는 연산(fd += fn * fm)의 의역 [본문으로]