Which is the best Android smartphone SoC for 2016? We test the Snapdragon 821, the Exynos 8890, the MediaTek Helio X25, and the Kirin 960 to see which one is best. But before looking at these chips, let’s start with a high level look at mobile processor technology.
What is a SoC?
In the past the most important component was the CPU (Central Processing Unit), it was the brains of any computer system and all the other necessary peripherals were found in auxiliary chips connected to the CPU. These auxiliary chips included things like the GPU (Graphics Processing Unit), the memory controllers, and any specialized video or audio chips (like DSPs). There was even a time when a CPU didn’t have to include a Floating Point Unit (I’m looking at you i486SX), it was considered an optional extra. However today for mobile processors all these auxiliary bits and pieces have been moved onto the same silicon as the CPU, first came the FPU, then the memory controller, and now the GPU and DSPs as well.
A single chip, which includes lots of different functions, is known as a SoC or a System-on-a-Chip. The chips which power our smartphones are no longer just CPUs, but a CPU plus a GPU plus a memory controller plus a DSP plus a radio for GSM, 3G and 4G LTE comms. But it doesn’t stop there, on top of all that lot, you will find discrete bits of silicon for the GPS, USB, NFC, Bluetooth and for the camera.
At the moment there are four major Android smartphone SoC makers: Qualcomm, with its Snapdragon range; Samsung with its Exynos chips; MediaTek with its MT and Helio processors; and Huawei’s Kirin chips, made by its subsidiary HiSilicon.
All of these manufacturers make SoCs for every rung on the smartphone ladder including lower-cost, lower-performance SoCs for entry-level smartphones, all the way up to higher-cost, high-performance chips for flagship devices. Here are the current high-end offerings:
|Snapdragon 821||Exynos 8890||MediaTek Helio X25||HiSilicon Kirin 960|
MediaTek Helio X25:10
HiSilicon Kirin 960:8
Snapdragon 821:4x Kryo
Exynos 8890:4x Exynos M1
MediaTek Helio X25:2x Cortex-A72
HiSilicon Kirin 960:4x Cortex-A73
Snapdragon 821:2x Kryo - 2.4GHz
2x Kryo - 2.0GHz
Exynos 8890:M1 - 2.29/2.6GHz
A53 - 1.5GHz
MediaTek Helio X25:Cortex-A72 - 2.5GHz
Cortex-A53 - 2.0GHz
Cortex-A53 - 1.55GHz
HiSilicon Kirin 960:Cortex A73 - 2.4GHz
Cortex A53 - 1.8GHz
Snapdragon 821:ARMv8-A (32 / 64-bit)
Exynos 8890:ARMv8-A (32 / 64-bit)
MediaTek Helio X25:ARMv8-A (32 / 64-bit)
HiSilicon Kirin 960:ARMv8-A (32 / 64-bit)
Snapdragon 821:Adreno 530 @ 653 MHz
Exynos 8890:Mali T880MP12
MediaTek Helio X25:Mali-T880 MP4 @850MHz
HiSilicon Kirin 960:Mali-G71 MP8
Snapdragon 821:LPDDR4 1800MHz
Exynos 8890:LPDDR4 1800MHz
MediaTek Helio X25:LPDDR3 933MHz
HiSilicon Kirin 960:LPDDR4 1800MHz
MediaTek Helio X25:20nm
HiSilicon Kirin 960:16nm
Last year octa-core processors reigned supreme, however this year things are very different. We have quad-core, octa-core and deca-core processors. One thing that all the processors have in common is that they all use Heterogeneous Multi-Processing (HMP). In a HMP SoC, not all of the cores are equal (hence, heterogeneous). All these SoCs have high performance cores and energy efficient cores. The Snapdragon 821 uses a 2+2 configuration, while all the octa-processors in our lineup use a 4+4 configuration. The deca-core processor from MediaTek uses 2+4+4.
The HMP system was popularized on mobile by ARM with its big.LITTLE system. ARM has been a leader in this field and has contributed lots of source code to projects like the Linux kernel. If you want to know more about big.LITTLE then please read how the Samsung Galaxy S6 uses its octa-core processor.
There are three major designers of mobile GPUs: ARM, Qualcomm and Imagination. ARM’s range of GPUs are known as Mali and includes the Mali-T880, as found in the Exynos 8890, and the newer Mali-G71, as found in the Kirin 960. Qualcomm’s GPUs are branded under the Adreno name with the Snapdragon 820/821 using an Adreno 530. The third player in the GPU space is Imagination with its PowerVR range, however this year none of the SoCs under test have an Imagination GPU.
It is difficult to make a comparison between these GPUs just from the specifications. They all support at least OpenGL ES 3.1, they all support RenderScript, and they all boast high gigaFLOP numbers. The real test comes when running actual 3D games.
The Snapdragon 821 is Qualcomm’s flagship 64-bit processor. It is Qualcomm’s first HMP system using its own in-house ARM compatible cores, code-named Kryo. However Qualcomm has used HMP before in processors like the Snapdragon 810 which used four Cortex-A57 cores plus four Cortex-A53 cores. Qualcomm still uses ARM’s big.LITTLE system for other processors in its range including the Snapdragon 652, which uses four Cortex-A72 cores plus four Cortex-A53 cores. Bundled with the four Kryo CPU cores are the Adreno 530 GPU, the Hexagon 680 DSP and the X12 LTE Cat 12/13 modem.
The Snapdragon 821 is basically a revision of the Snapdragon 820, but with improved power savings (up to 5%) and increased performance (up to 10%). When it comes to power & performance the Snapdragon 821 is better than the Snapdragon 820, however when it comes to capabilities, functionality and features, the 821 and 820 are roughly equal.
Found in Samsung’s leading flagship devices like the Samsung Galaxy S7 Edge, the Samsung Galaxy S7, and in other devices like the Meizu Pro 6 plus, the Exynos 8890 is a 64-bit octa-core design, built from four Samsung M1 CPU cores clocked between 2.3 and 2.6GHz, four 1.6GHz ARM Cortex-A53 cores, and an ARM Mali-T880 MP12 GPU. This is the first chip from Samsung to feature in-house designed ARM compatible cores. The M1 CPU core is the result of a three year design cycle that was developed completely from scratch. The four Cortex A53 cores are the power efficient cores, while the four Samsung cores provide the grunt needed for intense applications.
MediaTek Helio X25
The Snapdragon 821 has four cores, the Exynos 889 has eight cores and the MediaTek Helio X25 has ten cores! In a traditional HMP system there are two clusters of cores, a high performance cluster and an energy efficient cluster. The MediaTek Helio X25 is the world’s first mobile processor with a tri-cluster CPU architecture. The three processor clusters, are each designed to more efficiently handle different types of workloads. “Much like adding gears to vehicles, dividing the cores into three clusters provides a more efficient allocation of tasks for optimum performance and extended battery life,” says MediaTek.
The three clusters are made up of two Cortex-A72 cores running at 2.5GHz, four Cortex-A53 cores running at 2.0GHz and a second set of Cortex-A53 cores running at a maximum of 1.55GHz. For the CPU it uses the Mali-T880 clocked at 850MHz. This is the same GPU as found in the Exynos 8890, however the X25 implementation has four rendering cores compared to the 12 in the Samsung.
Last year’s SoC roundup featured the Kirin 935 from Huawei, which uses eight Cortex-A53 cores and was therefore never going to be a performance champion. However this year Huawei has really upped its game and released two high-end processors. First came the Kirin 950/955, which is found in the Mate 8 (and others) and then came the Kirin 960, which is in the Mate 9. The Kirin 950 & 955 use the Cortex-A72 and the Mali-T880 just like the Helio X25. However the Kirin 960 has gone one step further and uses the Cortex-A73 and the new Mali-G71 GPU.
The Mali-G71 is based on a whole new GPU architecture called Bifrost. ARM’s mobile GPU products have been through two previous major architectural revisions. First came Utgard and then the Midgard GPUs, which include the Mali-T880, which if found in the Exynos variants of the Samsung Galaxy S7 as well the Huawei Mate 8, the Huawei P9 and so on.
Compared to the Mali-T880, the new G71 offers lots of improvements. It offers a 20% higher energy efficiency, on the same process node, tested under the same conditions. A 20% power saving is very impressive and when coupled with the 40% better performance density , which basically means more performance per square millimeter of silicon.
For these tests, I got hold of different phones using these SoCs. The phones are:
- Snapdragon 821 – Googel Pixel
- Exynos 8890 – Samsung Galaxy S7
- MediaTek Helio X25 – Meizu Pro 6
- Kirin 960 – Huawei Mate 9
Where appropriate I have also included scores for the Snapdragon 820, the Snapdragon 810 and the Exynos 7420. The phones I used are:
- Snapdragon 820 – Samsung Galaxy S7 (Qualcomm variant)
- Snapdragon 810 – Nexus 6P
- Exynos 7420 – Samsung Galaxy Note 5
As a caveat it is worth mentioning that there might be different phones available which better demonstrate the capabilities of each of these SoCs, for example maybe some people would prefer that I used the OnePlus 3T rather than the Pixel, or maybe the Droid Turbo 2 instead of the Nexus 6P. However these are the phones I have and I think they are a good representation of what the different SoCs can do.
Performance testing is a complex science in that it is hard to replicate the exact same conditions for each test run. Even variations in temperature can alter test results. One popular way to test the performance of a phone is to use benchmarks, apps which are specially written to test the performance of a device. I will use some of the most popular benchmarks like AnTuTu and Geekbench.
However I have also written some of my own benchmarks. I have three types of home brew benchmark. First is a couple of tests written to test the general speed of the SoC. One tests the SoCs processing power by calculating a large number of SHA1 hashes, performing a large bubblesort, shuffling a large table and then calculating the first 10 million primes. The other uses a 2D physics engine to simulate water being poured into a container and measuring the number of droplets that can be processed in 90 seconds. At 60 frames per second the maximum score is 10800.
My second type of test is a flyover written in Unity3D, this is designed to specifically test the CPU and GPU working together. My third set of tests are written in the C programming language (no Java here). They are the same benchmarks that I used in my article Java vs C app performance – Gary explains. There are three C language tests: The first test repeatedly calculates the SHA1 of a block of data. The second calculates the first 1 million primes using trial by division. The third repeatedly runs an arbitrary function which performs lots of different mathematical actions. In each case the time taken to complete the test (in seconds) is measured.
SHA1 is a cryptographic hash function that produces a fixed sized string which represents a block of data. The idea is that different blocks of data produce different hashes, even if they differ by only a byte or two. They are also a type of one-way function, which means you can’t calculate the original data block from the hash. Hashes are used in a variety of ways including in digital signatures, as message authentication codes (MACs), for fingerprinting, to detect duplicate data, to uniquely identifying files, and as checksums. Calculating a SHA1 hash is good for benchmarks as the source code is widely available and it is a relatively compute intensive task.
AnTuTu is one of the “standard” benchmarks for Android. It tests both CPU performance and GPU performance and then presents a final score. AnTuTu is good for getting a general feel for how well a SoC can perform, however it is worth noting that the test loads used by the benchmark are completely artificial and don’t reflect real life scenarios at all. But, as long as we take that into consideration then the numbers can be useful.
The AnTuTu results give us quite a bit of information, first of all we can see that all of this year’s processors are faster than last years. This might sound obvious but here is the actual proof. Secondly we see that there are four processors which score over 120000: The Snapdragon 821, the Snapdragon 820, the Exynos 8890 and the Kirin 960. As a minimum we are looking at a 30% increase in AnTuTu performance compared to last year’s Snapdragon 810.
The Snapdragon 821 is the winner here, plus there are strong results from the Exynos and the Kirin.
Geekbench is a set of benchmark tests which are available across multiple platforms. According to Primate Labs Inc. (the company behind Geekbench), the Geekbench CPU tests are written in cross-platform C and C++. The same code is used across all platforms, and the same compiler options are used on each platform. Geekbench yields two scores. A single core test score which shows the speed of an individual core, regardless of how many cores there are on the SoC. And a multi-core test score which evaluates the performance across all the available cores.
Again we can see a marked performance improvement over last year’s leading SoCs. For example the Exynos 8890 shows a 42% single core performance improvement over the Exynos 7420. The winner of the single-core tests is the Kirin 960 with its ARM Cortex-A73 cores followed closely by the Exynos 8890. In third place came the Helio X25 which features the ARM Cortex-A72.
I was keen to see the multi-core tests as we have quad-core, octa-core and deca-core processors in the line-up. The first thing to notice is the strong performance of last year’s leading processors (SD810 and Exynos 7420), which are both octa-core and both used four Cortex-A53 and four Cortex-A57 CPU cores. In contrast the quad-core Snapdragon 820 and 821 performed well when you consider that they have half as many cores, however it means that from a pure multi-tasking perspective the newer Snapdragons didn’t bring much to the table.
The performance of the MediaTek Helio X25 is disappointing considering it has 10 CPU cores. However the relatively low per-core performance of the Cortex-A53 cores can’t compete with faster cores, like the Cortex-A73, even if there are 8 of the them.
The overall winner is again the Kirin 960 with the Exynos 8890 coming in a solid second. At this point it seems to be clear that this is going to be a battle between the Samsung processor and the Huawei processor, with the possibility of the Snapdragon 821 putting up a good fight.
Basemark, Vellamo and Dhrystones
To round-out the standard benchmarks I used Basemark OS II and Vellamo. The former tests the CPU, GPU, memory and web performance, while the latter is more CPU focused. One of the tests for Vellamo is the classic Dhrystone test, which tests CPU integer performance. Since the Dhrystone benchmark tests the lowest fundamental workings of a CPU (i.e. integer calculations) I have separated it out in the chart below.
Starting with Basemark OS II we can see that the Snapdragon 810 performs better than the Snapdragon 820, however the 821 saves the day with a better score. The winners are again the Kirin 960 and the Exynos 8890. As for Vellamo there is a strong performance by the MediaTek X25 and the Kirin 960. However the winners are the Exynos 8890 and the Snapdragon 820. The Dhrystone tests from the Vellamo suite show that the Exynos 8890 is the integer king, followed by the X25 and the Snapdragon 820.
Hashes, bubble sorts, tables and primes
The first of my custom benchmarks tests the CPU without using the GPU. It is a four stage test that first calculates 100 SHA1 hashes on 4K of data, then it performs a large bubble sort on an array of 9000 items. Thirdly, it shuffles a large table one million times, and lastly it calculates the first 10 million primes. The total time needed to do all those things is displayed at the end of the test run. The results are below:
My first custom benchmark reflects what we saw earlier with the Kirin 960 coming in first followed by quick times from the Exynos 8890 and the Snapdragon 821. However the surprise result here is the MediaTek X25, which came in second. While the MediaTek Helio X25 didn’t do too well under AnTuTu or with the Geekbench multi-core test, it certainly has shone in the Geekbench single-core tests as well as the Vellamo benchmark, and now my first benchmark. Not bad considering that it only has two high performance cores (2 x Cortex-A72) and the rest of the cores use the Cortex-A53 design.
The second of my two custom benchmarks uses a 2D physics engine to simulate water being poured into a container. The idea here is that while the GPU will be used slightly for the 2D graphics, most of the work will be carried out by the CPU. The complexity of so many droplets of water will exercise the CPU. Two drops of water are added every frame and the game is designed to run at 60 frames per second. The benchmark measures how many droplets are actually processed and how many are missed. The maximum score is 10800. The full results follow:
My first iteration of this benchmark became obsolete in February this year when the Huawei Kirin 950 maxed out at 5400 drops of water, over a 90 second period at 60 fps. The Kirin 950 is an octa-core processor that includes 4 Cortex-A72 cores, clocked at 2.3GHz, four Cortex-A53 cores, clock at 1.8GHz, an ARM Mali T880 GPU and Huawei’s i5 co-processor. So I revamped the benchmark and doubled the number of water particles flowing during the 90 second test. The maximum score is now 10800, and it now looks like I will need to built a third revision as a Huawei processor has maxed out this version as well. The Kirin 960 scores the top score and is basically way ahead of the rest of the field. The Exynos 7420 puts in a strong performance coming in second place and the Exynos 8890 comes in third.
Unity 3D benchmarks
My third benchmark is written in Unity3D. It is a terrain flyover that yields a frame per second score for a pre-programmed pass over a rendered world. I call this benchmark Terrain 4. Why 4? Because it took me 4 versions to get it right!!!
This test is designed to push the GPU to its max. The terrain used for the flyover is deliberately difficult to render specifically so that the GPU will need to work hard for each frame. The winner here is the Adreno 530 found in the Qualcomm Snapdragon 821 and the 820. Next comes the ARM Mali G71 in the Kirin 960 and then the ARM Mali-T880 in the Exynos 8890. While the Helio X25 also has the same GPU than the Exynos its relatively low performance is because the Exynos has a 12 core version of the Mali-T880 whereas the X25 has a 4 core version.
For the NDK (i.e. C language) tests I took the C benchmark code (and app) which I used in my article Java vs C app performance – Gary explains and ran it on all the phones. These tests are written in C and compiled using the Android Native Development Kit. The first test repeatedly calculates the SHA1 of a block of data. The second calculates the first 1 million primes using trial by division. The third repeatedly runs an arbitrary function which performs lots of different mathematical actions (multiply, divide, with integers, with floating point numbers etc). In each case the time taken to complete the test (in seconds) is measured. Here are the results:
The results for the SHA1 tests are very close with the Snapdragon 820 winning overall. Next comes its new sibling the Snapdragon 821 and then there is a hair-breadths gap between the Kirin 960 and the Exynos 8890. This pattern is almost repeated again for the prime numbers test: First the Snapdragons, then the Kirin and then a challenge from the X25 which just manages to nudge out the Exynos. Finally the maths benchmark is won again by the Snapdragon twins followed by the Exynos 8890 and then the Kirin 960.
What about the Apple A10 Fusion?
All these processors are found in Android handsets, however the other important SoC of 2016 is the Apple A10 fusion. It is also a HMP processor with two high performance cores and two power efficient cores. It also features an unnamed 6 core GPU from Apple, likely based on the PowerVR GPU architecture from Imagination Technologies. I have already done a deep technical comparison of the Snapdragon 821 and the Apple A10, however what if we throw the Exynos 8890 and the Kirin 960 into the mix?
For Basemark OS II the A10 fusion breaks the 3000 barrier and comes out tops. It is followed by the Kirin 960 and then the Exynos 8890. For the Geekbench single-core tests the A10 fusion is also the winner with a score of 3399. As before, second place goes to the Kirin 960 and third place to the Exynos 8890. However things change when it comes to the multi-core tests. Both the Kirin 960 and the Exynos 8890 beat the Apple A10.
Using my 2D water simulation we already know that the Kirin 960 achieves the maximum possible score, something not repeated by the Apple A10. But how do the other SoCs compare? The A10 fusion scores 10202, while the Exynos 8890 scores 10244. In this test the A10 only managed to beat the Snapdragon 821. Interestingly, the Exynos 7420 scores 10478 which also beats the A10 comfortably.
This year’s show down had lots of interesting battles between the various quad-core, octa-core and deca-core processors. Coupled with the battle for GPU supremacy, the crown could have potentially gone to any of the contenders. So what did we learn? First that the processors of 2016 are faster than those of 2015, a trend which I hope will continue into 2017. It seems that this performance boost hasn’t been at the expense of battery life, which in no small part is due to the general move to a 14nm or 16nm process, a technology that was only used by the Exynos 7420 last year.
The MediaTek Helio X25 managed to do well in some of the benchmarks and came in second on one occasion. However overall it can’t compete, in terms of raw performance, with the Snapdragon, Exynos or Kirin.
When it comes to the GPU it seems that the Adreno 530 is the champion and because of the good GPU performance the Snapdragon 820 and 821 chips performed well in some of the general benchmarks like AnTuTu. However the Snapdragons struggled to keep up with the Kirin or Exynos in tests like Geekbench or Basemark. Having said that, the Snapdragon did well in my custom C language NDK tests.
But if you want raw CPU power then the winner if clearly the Huawei Kirin 960. It came first in five of the benchmarks and consistently came second or third for many of the others. Its closest rival is the Exynos 8890 which came first in two benchmarks (Vellamo and Dhrystones) and managed second place six times, meaning it is a good all round performer under many different conditions.[embed]https://www.youtube.com/watch?v=YqyYQ7aFrp4[/embed] [embed]https://www.youtube.com/watch?v=IBAIaNdbqcQ[/embed] [embed]https://www.youtube.com/watch?v=u2AmxhqBE4Y[/embed]
The problem with the Kirin and the Exynos is that they are only available in a limited number of smartphone models, whereas the Snapdragon 820 or 821 are more widely available. That means if you aren’t a Huawei or Samsung fan then the Snapdragon 820/821 will be a great processor for your handset.
So in a nutshell, the Kirin 960 – with its four ARM Cortex-A73 cores and its Mali-G71 GPU – is the best Android SoC at this time, the Exynos 8890 comes in a close second while the Snapdragon 821 is likely to be the popular choice due to its wider availability. The MediaTek X25 is also a good processor and is ideal for the top end of the mid tier market. Finally, processors like the Snapdragon 820 and the Exynos 7420 still have lots to offer.