Friday, June 5, 2015

Smartphone platforms migrate to 64-bit (AArch64) mode

Recently, most existing and new mobile SoCs have started to become available configured in native 64-bit mode (AArch64) in conjuction with a 64-bit version of Android 5. Although SoCs targeting premium-level devices that are already shipping were the first to support AArch64 (including Tegra K1-64, Exynos 7420 and Snapdragon 810), recent entries in the Geekbench results database show that cost-sensitive platforms are also migrating to native 64-bit mode in upcoming smartphones.

This move involves Cortex-A53-based platforms such as MediaTek's MT6735, MT6752, MT6753 and MT6795, Qualcomm's Snapdragon 615 (MSM8939) as well as a new Snapdragon 410 (MSM8916) platform (which was previously limited to ARMv7), and HiSilicon's Kirin 620 and Kirin 930.

Initial ARMv8 platforms used hybrid AArch32 mode


Several ARMv8 based SoCs have been shipping for some time, but most have been using AArch32 mode, a hybrid mode which takes advantage of some of the architectural improvements in ARMv8 but does not expose native 64-bit mode to applications. Snapdragon 410 did not even take any advantage of ARMv8, running in 100% ARMv7 mode.

One reason why full AArch64 mode has not been adopted right away is that is does come with a performance penalty due to the increased storage requirements for program code and pointers, which puts greater demands on the memory subsystem of the SoC. Cost-sensitive smartphone models are especially sensitive to this due to a lower amount of RAM and smaller on-chip CPU caches. A decrease in the price of RAM chips has allowed the amount of RAM in cost-sensitive models to increase (e.g. more devices shipping with 2GB RAM), making AArch64 mode more appealing.

AArch64 also has benefits, in particular for floating point and data-intensive applications that use NEON vector instructions.

Comparison of CPU benchmark results


The migration to AArch64 mode across the board makes it easier to compare CPU benchmarks of different SoCs, which was previously made more difficult by the fact that some SoCs used AArch64 mode while others were still limited to AArch32.

In the following sections, I will return to Geekbench CPU test results and try to make apples-to-apples comparison for different groups of SoCs.

Quad-core Cortex-A53 SoCs


Quad-core SoCs included are MT6732, MT6735 and Snapdragon 410. Note that the version of Snapdragon 410 tested most likely reflects a newer silicon revision that has not yet widely appeared in end devices, since previous versions of Snapdragon 410 (MSM8916) were always limited to ARMv7 mode (seemingly being unable to run in AArch32 mode).

The following table shows selected integer tests results from Geekbench entries for the mentioned SoCs, running in AArch64 mode.

SoC        Geekbench  Clock  JPEG Compress (int)      Lua (int)
           ref        speed  Single IPC   Multi Par   Single IPC   Multi Par

MT6732     2705430    1.50    783   1.36  3108  3.97   795   1.29  3017  3.79
MT6735     2650175    1.30    646   1.36  2604  4.03   656   1.23  2047  3.12
MSM8916-64 2708213    1.21    626   1.34  2481  3.96   615   1.24  1280  2.08

The table below shows selected floating point and memory results.

SoC        Geekbench  Clock  Mandelbrot (float)       Stream Copy (memory)
           ref        speed  Single IPC   Multi Par   Single Multi

MT6732     2705430    1.50    631   1.23  2490  3.95  1030   1156
MT6735     2650175    1.30    526   1.19  2091  3.98   901    965
MSM8916-64 2708213    1.21    508   1.23  1969  3.88   447    505

The "IPC" value as shown in the tables is an index calculated from a comparison with the performance of common Cortex-A7-based SoCs, normalized to the same clock speed. The parallelism value ("Par") is the performance scaling from single-core to multi-core for the specific Geekbench subtest.

The IPC values are fairly consistent, as would be expected from the same CPU core (Cortex-A53) running the same ISA (instruction set architecture). When scaling to multiple cores, MT6732 does best, as shown by the scaling in the Lua benchmarks. This is not surprising as MT6732 is not an entry-level SoC given its cost structure, being better described as belonging to the mid-range segment. It is likely to have a better memory subsystem (in particular, a larger and faster L2 cache) than the other chips.

MediaTek's new entry-level chip, MT6735, apart from running at a somewhat higher clock speed (1.3 GHz vs 1.2 GHz), outperforms the 64-bit version of Snapdragon 410 when normalized to the same clock speed, which is especially evident in the Lua multi-core test and memory tests. The Lua results could be a reflection of L2 cache size and/or speed. Memory performance (based on the Stream Copy subtest) of both MediaTek chips is roughly double that of Snapdragon 410 (something which was already evident in the respective 32-bit platform results).

Mid-range octa-core Cortex-A53-based SoCs


The octa-core Cortex-A53-based SoCs targeting the mid-range segment include MediaTek's performance-oriented MT6752, the recent cost-reduced MT6753, Qualcomm's Snapdragon 615 (MSM8939), and HiSilicon's Kirin 620 (Hi6210).

These SoCs use different CPU clock speed configurations. MediaTek's MT6752 and MT6753 run all cores at the same maximum clock speed, 1.66 GHz for MT6752 and (at least in the tested device) seemingly only about 1.1 GHz for MT6753, even though Geekbench reports a maximum clock speed of 1.3 GHz. HiSilicon's Kirin 620 can run all cores up to a maximum speed of 1.2 GHz.

Qualcomm's Snapdragon 615 uses a pseudo-big.LITTLE, hierarchical architecture with one performance cluster of four cores running up to 1.65 GHz in the most recent version of the platform (previous versions ran up to 1.5 GHz), with the other power-efficient cluster running at a significantly lower clock speed. MediaTek's annnouncement of the MT6755 (Helio P10) shows that MediaTek is also transitioning to a hierarchical CPU clusters for new chips, similar to Snapdragon 615.

Having one power-optimized CPU cluster helps power efficiency for low CPU demand scenarios such as smartphone standby or light usage. The fact that Snapdragon 615 is not very power efficient, despite the low-clocked cluster, in mostly due to the low-performance 28LP manufacturing process used.

The following table shows selected integer tests results from Geekbench entries for the mentioned SoCs, running in AArch64 mode.

SoC        Geekbench  Clock  JPEG Compress (int)      Lua (int)
           ref        speed  Single IPC   Multi Par   Single IPC   Multi Par

MSM8939    2704276    1.65    837   1.32  4269  5.10   789   1.16   667  0.85
MT6752     2709869    1.69    890   1.37  6719  7.55   907   1.31  6531  7.20
MT6753     2699665    1.10?   572   1.35  4298  7.51   587   1.30  4282  7.29
Hi6210     2704356    1.20    630   1.36  3473  5.51   626   1.27  2156  3.44

The table below shows selected floating point and memory results.

SoC        Geekbench  Clock  Mandelbrot (float)       Stream Copy (memory)
           ref        speed  Single IPC   Multi Par   Single Multi

MSM8939    2704276    1.65    661   1.17  4019  6.08    512   569
MT6752     2709869    1.69    714   1.24  5637  7.89   1024  1158
MT6753     2699665    1.10?   463   1.23  3597  7.77    802   958
Hi6210     2704356    1.20    506   1.24  3419  6.76    833  1030

IPC values are fairly consistent for MT6752, Hi6210 and MT6753 (when a likely clock speed of 1.1 GHz is assumed), but Snapdragon 615 consistently shows somewhat lower IPC, possibly related to the earlier revision (r0p1) of the Cortex-A53 core used. It is also possible that, similar to what seems to be the case for the MT6753 entry used (Meizu M2 note), the actual maximum CPU clock speed is lower than the one advertised and reported to Geekbench.

Multi-core performance scaling approaches 8.0 for the MediaTek chips, which can be expected due to the symmetrical CPU cluster configuration. Multi-core scaling for Kirin 620 is lower than expected for the integer tests, especially Lua, possibly due to L2 cache performance constraints.

Snapdragon 615, due to half the cores being clocked at a lower clock speed, shows a lower scaling factor, however the Lua scaling is particularly low, the benchmark score in fact often being worse than the single-core result, while being only modestly higher in other cases. This could be due to L2 cache constraints for one of the clusters and associated synchronisation issues in the multi-threading implementation used by the Geekbench test.

Looking at memory performance, MT6752 has the highest performance, closely followed by MT6753 and Hi6210. Qualcomm's Snapdragon 615 is well behind, probably due to the older/slower interconnect bus used.

MT6753 benchmark results suggests performance issue


Even though a clock speed of 1.30 GHz is reported to Geekbench by the operating system in the MT6753-equipped Meizu M2 Note, actual Geekbench subtest results are not consistent with a Cortex-A53 core running at that clock speed. There is variability in the results between different runs, which could be caused by thermal throttling. Many of the results seem to correspond to an effective clock speed of approximately 1.10 GHz, although for some runs the score of certain tests (including JPEG Compress) does approach the level expected for a clock speed of 1.3 GHz. Most of the time however, performance is significantly lower than expected, as if the clock speed is throttled to around 1.1 GHz for long periods of time.

The lower than expected performance could be related to the manufacturing process. The MT6753 was designed with cost-reduction in mind, and may use TSMC's 28LP process which has low cost but lower performance. Qualcomm's Snapdragon 410 and 615 also use this process, limiting their performance (and in the case of Snapdragon 615 resulting in heat production). MT6753 was announced as supporting a clock speed up to 1.5 GHz, and the lower-than-expected attainable clock speed may force MediaTek to adjust the specifications for the chip if the issue is not resolved.

Sources: Geekbench browser

Updated 6 June 2015.