LightBlog

vendredi 2 décembre 2016

Qualcomm Snapdragon 821 versus Apple A10 Fusion

The two leading mobile processor companies are Qualcomm and Apple. Qualcomm's processors are found in many of the leading handsets while Apple's processors is found at the heart of every recent iPhone and iPad. The latest and greatest System-on-a-Chip (SoC) from Qualcomm is the Snapdragon 821 and the current processor from Apple is the A10 Fusion. While both companies are certainly working on their next generation products, these two processors represent some of the best mobile processor technology that is available in a handset.

Yes, there are others like the Samsung Exynos 8890 and the Kirin 960 and I will be making a general SoC showdown piece just after I have finished this one. However today we turn our attention solely to the Qualcomm Snapdragon 821 and the Apple A10 Fusion, which is best?

And this is where we stumble, even before we get out of the gate. What does "best" mean? Best performance? Best power efficiency? Best GPU? Best wireless modems? There are lots of ways to characterize a SoC. So before we go on to look at aspects like performance and power efficiency, here is a side by side comparison of the features of these two SoCs.

Specifications

I will start with a caveat. Neither Qualcomm or Apple are very forthcoming about the internals of their processors. Qualcomm does a slightly better job than Apple, but still a lot of this information is what I have gleaned from various articles across the Internet. If you know of any extra information, please let me know.

  Snapdragon 821 A10 Fusion
Process Technology 14 nm 16 nm
CPU 64Bit Quad-core, 2x Kryo 2.4 GHz + 2x Kryo 2.0 GHz 64Bit Quad-core, 2x Hurricane 2.34 GHz + 2x Zephyr
Core scheduling Per core Per cluster
GPU Adreno 530 650MHz 6 core
RAM type LPDDR4 @ 1866MHz LPDDR4
4G LTE X12 LTE Cat 12/13 Not included. iPhone 7 uses third party modem chips
Charging Qualcomm Quick Charge 3.0 10W?
Graphic APIs OpenGL ES 3.2, Open CL 2.0,
Vulkan 1.0,
DX11.2
OpenGL ES 3.0, Metal
Video Up to 4K Ultra HD video capture @ 30FPS. Up to 4K Ultra HD video playback. 4K video recording at 30 fps. Video playback up to 4K, 30 frames per second
Codecs H.264 (AVC) +
H.265 (HEVC)
H.264 (AVC) + H.265 (for Facetime?)
Wi-Fi 802.11ac 802.11ac

So breaking it down a bit we see that both the Snapdragon 821 and the A10 Fusion are quad-core processors using Heterogeneous Multi-Processing (HMP). In a HMP SoC, not all the cores are equal (hence, heterogeneous). Both SoCs have two high performance cores and two energy efficient cores. This 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.

The Snapdragon 821 is Qualcomm's first HMP system using its own Kryo cores, however it 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.

Although the A10 is Apple's 4th generation 64-bit ARM compatible processor, this is the first time that Cupertino has designed a quad-core processor and the first time it has used HMP. One big difference between the Snapdragon 821 and the A10 Fusion is that the 821 can use all of its cores simultaneously where are the A10 can only swap between using the high performance core cluster and the energy efficient core cluster. This is similar to the situation with earlier implementations of big.LITTLE back in 2013.

Besides the CPU, the GPU is a vital component inside a SoC. Qualcomm uses its own in-house GPU and now so does Apple. This is the first time Apple is using its own GPU. Previously Apple used PoweVR GPUs from Imagination Technologies, however it has now started using its own design, which is probably based heavily on the PowerVR, but as usual there are no details available, in fact the GPU doesn't even have an official name! When it comes to API support, the Adreno 530 GPU from Qualcomm supports OpenGL ES 3.2 and Vulkan 1.0, whereas Apple supports OpenGL ES 3.0 and its own Metal API.

There are two more differences worth mentioning. First, the Snapdragon 821 supports Qualcomm's Quick Charge 3.0 technology, which allows handset makers to offer fast charging in their handsets (upto 18W), whereas Apple doesn't yet support any kind of fast charging. Second, the Snapdragon 821 includes Qualcomm's X12 LTE modem whereas the A10 Fusion doesn't have a built-in modem, instead it uses third party modems on auxiliary chips. 3 out of 4 iPhone 7 models use modems from Qualcomm.

Performance

This is one of the most hotly debated processor topics, not only on mobile but on the desktop, in servers and on supercomputers. Before we dive in there are a few things we need to understand. They key thing to remember is that energy efficiency and performance are not friends. The greater the performance the more power is used. There are various equations that specify the relationship between power and performance, the most notable being P=CV^2f, where P is Power, C is the capacitance of the process node, V is voltage (in this case raised to the power of 2) and f is the frequency.

So, if you run a CPU at a higher clock speed it uses more power. Likewise if it is built on a smaller fabrication process then it uses less power, as C will be less. Most crucially the lower the voltage the lower the power usage. On the desktop power usage isn't too much of a problem. A PC is connected to the mains and there are big cooling fans. Of course on mobile things are different. Smartphones run from batteries and they mustn't get too hot!

The Qualcomm Snapdragon 821 uses Samsung's 14nm fabrication process where as the Apple A10 uses TSMC's 16nm process. So technically the value of C will be higher on the A10, meaning more power is used. Both processors are clocked at around the same maximum clock speed (2.4 vs 2.34GHz) however we can't compare the clock frequencies of the smaller cores as the frequency for the A10 fusion isn't known (well not by me at least). At this point overall performance will come down to things like memory speeds, L1 and L2 cache sizes and the number of instructions per clock that the CPU can execute.

The other thing of note is the difference in OS and OS design. Android is based on Linux while iOS is based on BSD. Android uses Java while iOS uses Objective-C & Swift. So at one level trying to gauge the overall performance of the Snapdragon 821 and then compare it to the performance of the A10 Fusion while trying to eliminate any OS and architectural differences is hard.

I have run performance tests using the Google Pixel (for the Snapdragon 821) and the iPhone 7 (for the A10 fusion), which leads me to my last caveat, there could be faster Snapdragon 821 devices out there which might give slightly different results. Likewise the screen resolution differences between the iPhone 7 and the iPhone 7 Plus will have an impact on GPU performance. I have also read that the 32GB model of the iPhone 7 (which I am using) has slower internal storage than the 128GB or 256GB models.

I ran two sets of tests, first I used some of the various benchmark apps that exist on both Android and iOS (AnTuTu, Geekbench and Basemark OS II). Then I ran some of my own home brew benchmarks, but more about those later.

Here are the results:

s821-vs-a10-antutu-geekbench-etc-16x9

s821-vs-a10-antutu-geekbench-etc-16x9

As you can see the Apple A10 Fusion as used in the iPhone 7 is faster than the Snapdragon 821 as found in the Google Pixel. The difference in performance varies significantly. AnTuTu puts the difference at just 6% where was the Geekbench Single Core tests give the A10 a massive 126% advantage. The remaining tests says that the A10 is around 30% faster.

So let's breakdown the AnTuTu results a bit and see what are the strengths and weaknesses of each processor:

AnTuTu Test A10 Fusion Snapdragon 821
3D 44996 (28917, 16079) 56890 (36443, 20447)
UX 52071 (8168, 11180, 21587, 4528, 6617) 45278 (8209, 4833, 9027, 19639, 3570)
CPU 41655 (14512, 14632, 12511) 32403 (12204, 8129, 12070)
RAM 11568 6521

AnTuTu performs four types of test: 3D, UX, CPU and RAM. For the 3D part the Adreno 530 in the Snapdragon 821 performs better than the GPU in the A10 Fusion (44996 for the A10 vs 56890 for the 821). Although the Snapdragon wins the 3D tests, the A10 is the victor for the remaining tests. For some of the individual tests the Snapdragon 821 and the A10 are neck-and-neck (e.g. the CPU multi-core test and the UX data secure test), however there are tests where the A10 is clearly the winner. In particular the RAM tests shows quite a difference between the two processors.

My second set of tests use my own home brew set of benchmarks. Cross platform benchmarking is full of pitfalls and possible rabbit holes. The first problem is that Android uses Java as its principal development language where as iOS uses Objective-C or Swift. This means that an app written for one platform can't be easily ported to the other just by recompiling. Another problem is the use of run-time libraries. For example, if an app needs to manipulate some data (compress, encrypt, copy, whatever) there are various functions provided by the respective languages and the operating systems that can help with that. But for a benchmark that means that the app is now testing the efficiency of the run-time libraries and the OS and not necessarily the hardware.

There are various ways to write apps which work on both platforms. One is to use an SDK which supports multiple platforms, another is to use C. The C programming language is kind of the lingua-franca of the computing world. Almost every computer platform has a C compiler including Android, iOS, Windows, macOS, Linux, etc.

For my benchmarks I use both approaches. One set of tests uses the LUA programming language which is supported by various SDKs across Android and iOS. The other set of benchmarks uses C.

I have two LUA based tests. The first of my custom benchmarks tests the CPU without using the GPU. It calculates 100 SHA1 hashes on 4K of data and then does some other CPU stuff, I call it "Hashes, bubble sorts, tables and primes." The result is the time taken to complete the test.

s821-vs-a10-gds1-benchmark-16x9

s821-vs-a10-gds1-benchmark-16x9

As you can see the iPhone 7 is the clear winner by a significant margin. The second test is slightly different to the first in that it also involves some graphics, 2D graphics in this case. The benchmark uses a 2D physics engine to simulate water being poured into a container. The app is designed to run at 60 frames per second and two drops of water are added every frame. The benchmark measures how many droplets are actually processed and how many are missed, the maximum score is 10800. The Pixel scores 10178 while the iPhone 7 scores 10202.

s821-vs-a10-gds2-benchmark-16x9

s821-vs-a10-gds2-benchmark-16x9

For the C language tests I took the C benchmark code which I used in my article Java vs C app performance – Gary explains and recompiled it for iOS. The actual iOS app is written in Objective-C, for the UI etc, however the benchmark code is exactly the same C code as run on Android using the NDK.

See also:

Java vs C app performance – Gary explains

May 3, 2016

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 functions (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:

s821-vs-a10-c-benchmark-16x9

s821-vs-a10-c-benchmark-16x9

As you can see in this case the Snapdragon 821 beats the Apple A10 fusion in every test. Now this is a bit of a conundrum. If the previous benchmarks were more ambiguous, giving the lead sometimes to the Snapdragon and sometimes to the A10 then this could just one of the results that tips in favor of the Qualcomm processor. However, almost unanimously the benchmarks declared the A10 the faster processor.

So why do my C language benchmarks show a clear victory for the Snapdragon 821? There are a number of possible answers: a) The C compiler in the Android NDK is better than the C compiler in Xcode, or b) due to the HMP nature of both processors then it is possible that the "big" cores on the A10 didn't get a chance to run and the tests executed on the smaller cores, or c) there are some unknown performance optimizations that normally run that didn't kick-in, or d) there is something wrong with my iOS app (as I am not that familiar with iOS app development).

Power

As I have mentioned above, it is possible to create a high performance processor if you can afford to use lots of energy and you have a way to dissipate the heat. On mobile that isn't possible, so it is important to look at the efficiency aspects of both processors. Testing the power efficiency of a mobile processor is hard. There are various ways to do it including dismantling the phone and connecting lots of wires to the circuit board! However for this test I will try to get an idea using software and a bit of math.

First of all I set each phone's display to minimum brightness and left it on the home screen doing "nothing". After an hour I looked at the battery usage to try and gauge how much the display consumes with the processor practically idle. The Pixel used 5% of its battery and the iPhone used 4%. This sounds about right as the screen on the Pixel is bigger, has a higher resolution (i.e. more pixels to power) and is slightly brighter when on minimum. The iPhone 7 has a 1960 mAh battery and the Pixel has a 2770 mAh unit. That means that the iPhone used 78 mAh to power the screen for 1 hour while the Pixel used 138 mAh.

I then ran Epic Citadel for one hour (in the guided tour mode) on both phones. The iPhone 7 used 20% of its battery and so did the Pixel. We know that 4% and 5% respectively of that usage was for the screen, so the iPhone used 16% of 1960 mAh and the Pixel used 15% of 2770 mAh. That works out to 319 mAh for the iPhone and 415 mAh for the Pixel. This result is to be expected as the GPU on the Pixel is working harder than the GPU on the iPhone as it has more pixels (no pun intended) to render per frame. In fact the Pixel has double the number of pixels than the iPhone, that is a lot of work for the GPU!

I performed a similar test for video playback. Using VLC on both Android and iOS I played a video file for one hour. The iPhone used 11% of its battery while the Pixel used 10%. So the iPhone used 7% of 1960 mAh and the Pixel used 5% of 2770 mAh. That works out to 137 mAh for the iPhone and 138 mAh for the Pixel.

pixel-vs-iphone-battery-usage-16x9

pixel-vs-iphone-battery-usage-16x9

Unfortunately that means it is hard to definitely declare the winner here. The iPhone has a smaller battery which some might take as proof that it is more power efficient, however it also has a lower resolution display. It is interesting to note that the iPhone 7 Plus has a bigger battery than the Pixel but the same resolution display. When playing 3D games the iPhone 7 uses less power, however the GPU is working less (maybe 50% less). When playing video both devices uses almost identical amounts of battery power.

Wrap-up

Millions of Qualcomm and Apple processors are being used right now in handsets all across the globe. When taken as a whole package including the CPU, GPU, ISP, DSP, and modem there are pros and cons on both sides. Clearly both processors are advanced pieces of tech. The Snapdragon 821 is the more rounded processor since it contains an integrated LTE modem, the same type of modem that is used by the iPhone 7, plus support for quick charging and more graphic APIs (OpenGL ES 3.2 + Vulkan). And this fits with Qualcomm's business model, the Snapdragon series are mobile processors that are sold to OEMs to build phones, tablets, set-top boxes, media players, whatever. The A10 is designed specifically for one thing, the iPhone (and maybe later the iPad).

As for performance, it seems clear that the A10 Fusion has the upper-hand, however not by much, but that does depend on the workload. In some of AnTuTu sub-tests the Snapdragon 821 matched the performance of the A10 and for my home brew tests written in C then the Snapdragon 821 actually beat the A10!

In terms of power efficiency it is hard to say, power is used by some many components in a smartphone including the CPU, GPU, memory, various Wi-Fi and cellular radios, etc. But from what I see there isn't much between the two SoCs.

As a final word, I know this article will stir up various "fanboy" sentiments, all I can ask is that you remember that there are lots of problems in the world and lots of reasons why people get angry with each other, however which smartphone you use shouldn't be one of them.



from Android Authority http://ift.tt/2gW3h0f
via IFTTT

Aucun commentaire:

Enregistrer un commentaire