84

Laptops have usually at most four cores, and dualcores are probably more common. I have recently switched from quadcore to dualcore and I can confirm there is a limited number of usecases for quadcore, even with CPU intensive tasks.

On the other hands, at mobile phones, quadcores, hexacores and octacores seem to be common. Why? What tasks can utilize them?

I understand that big.LITTLE can be a part of the answer. That is, the main benefit of so many cores is not the ability to use all of them simultaneously, but rather using a core with power consumption appropriate for the current workload. However, for example, the Snapdragon 625 has eight Cortex-A53 cores, which does not seem to be a case for big.LITTLE.

Maybe the ARM architecture has a lower point of optimal performance per watt. That is, having a single core tuned for optimal performance per watt results in a lower performance on ARM than on Intel. So, more cores are used in order to deliver the performance. This is just a hypothesis.

But even in this case, I don't see what workload can efficiently use, say, eight cores on a mobile phone. On laptops, I can imagine a few like full (non-incremental) compilation of a project. But on phones?

  • Games can be performance-hungry, but they usually require GPU performance rather than CPU, don't they?
  • Theoretically, multiple cores could speed up Android Lollipop/Marshmallow AOT compilation when installing or when upgrading (i.e., the phase “Optimizing apps 3/121”). I am, however, not sure if this can utilize multiple cores. As far as I remember the code, only one app is being compiled at a time, but maybe there is some parallelism within the compilation process itself.
  • Also Android 7+ could utilize multiple cores when compiling. But since it reportedly compiles when idle and charging, the benefit seems to be rather minimal. At least when one charges the phone overnight – I really don't care if it takes 30minutes or two hours in such a scenario.
8
  • As I pointed out in my answer, keep in mind that you seems to be looking at things upside down. Many core/parallel execution is the norm, is not your phone which is an anomaly for having many core, it's the PC CPU which is an anomaly.
    – motoDrizzt
    Commented Jun 12, 2017 at 8:22
  • 4
    Your question is flawed, PCs can have more cores than phones. intel.com/content/www/us/en/products/processors/core/x-series/… And that's not even getting into server-class machines, which can have dozens or even hundreds of cores. (And some supercomputers get into the thousands-of-cores range.)
    – JAB
    Commented Jun 12, 2017 at 14:22
  • 3
    @JAB Sure, but I'm not talking about maximum number of cores, rather about typical number. For laptops, more than quadcores are pretty uncommon, but you could find some exception, maybe with Xeon. For mobile phones, even octacores seem to be relatively common.
    – v6ak
    Commented Jun 12, 2017 at 14:48
  • 4
    "I have recently switched from quadcore to dualcore and I can confirm there is a limited number of usecases for quadcore, even with CPU intensive tasks." - Can you expand and elaborate on how you came to that conclusion? Commented Jun 12, 2017 at 18:26
  • @Abdul It comes mostly from my observations (seeing system load using htop or a similar tool) and partially from my conclusions. Even some taksk where I would expect parallelization (e.g., rendering using OpenScad) are single-core. Firefox (ESR) usually consumes at most one core. Incremental compilation – I haven't measured it, but intuitively, there is not much opportunities for finding independent tasks. (Full compilation is a different case.)
    – v6ak
    Commented Jun 12, 2017 at 19:59

8 Answers 8

64

As you've already noted, the big.LITTLE combination strategy (technically, HMP, Heterogeneous Multi-Processing clusters) is the primary reason for so many (and sometimes overwhelmingly many) cores. A mobile device often runs into multiple scenarios, both heavy load and light load ones included.

An extreme consumer-class example is MediaTek's Helio X20, which has 2 performance-oriented A72 cores, 4 balanced A53 cores, plus 4 energy-efficient A35 cores. That's very flexible throughout different usage cases. However, I think 8 cores 2 clusters is usually enough.

There's also another desktop-like example, Qualcomm's Snapdragon 800 series (S 800, S 801, and S 805). There are only 4 cores of the same microarchitecture in each SoC, with 2 clocked higher and 2 clocked lower. Qualcomm made these SoCs because they were very confident of their own microarchitecture (Krait 400 and Krait 450).

For games, even if they seemingly demand GPU performance rather than CPU, they still put a heavy load on the CPU. A GPU cannot work alone without something else supplying it with data to be processed, and that's one of the major jobs that the CPU is doing while you're gaming. In most gaming cases, the GPU only renders graphics, while all other jobs like loading data, resources and assets, and calculating in-game mechanics like the system, environment and physics are done by the CPU. You won't observe a higher frame rate if you upgrade your GPU while sticking to a low-end CPU.

A secondary reason is how Android utilizes CPU resources. Android pretty much makes their own application environment. It uses nothing but codes (and APIs) from Java, but it has its own virtual machine named Dalvik, which was later replaced by ART (API Level 21). APKs have their executable codes in a "neutral" format, much like .class files in Java. Before they're run, the codes get compiled once more into the machine's native instructions[1]. The compilation process is multi-threaded and can utilize multi-cores for a performance boost.
And when an app is running, there are several other processes and mechanics (like the Garbage Collector) that run alongside, or parallel to the app. More cores can let the supportive processes run more efficiently, as well as the main app.
1. If you use a file type identifier, you'll find that "optimized" dex files are in ELF format, while the "neutral" dex files are just in a format of their own.

Another lesser reason is that ARM cores can't work as fast as an Intel x86 chip. The Intel x86 microarchitecture can be dated back to 1976, when the Intel 8086 chip started to be designed, which means that the x86 has developed over a long time. A single modern high-end ARM Cortex-A73 core is only as powerful as an Intel Clarkdale core, taking Core i5-660 as an example (GeekBench, single-core). This is because x86 is a CISC microarchitecture while ARM is a RISC microarchitecture. You surely don't want a phone that becomes laggy with only two or so active apps. More cores will help relieve the pressure. That's why dual-core SoCs are relatively popular only on smart watches. Who needs performance on a smart watch?

Interestingly, more cores will result in less power than a single core at the same load. The relationship between CPU frequency and power consumption is more than linear, so twice the frequency will always result in demanding more than twice, or even 3x or 4x as much power, while delivering less than twice the performance (due to other resource limitations like cache). So 4 cores can easily beat a single core at the same load, providing better performance and simultaneously demanding less power.

Further Reading:

15
  • 1
    I remember reading or watching somewhere that the Linux kernel had originally worked on good multi-core support with a focus in supercomputers, many years ago, and these efforts proved useful "in the future" (now) for smartphones, like a kind of "accident"
    – Marc.2377
    Commented Jun 12, 2017 at 19:31
  • 3
    This answer does not appear to actually answer the question, despite being accepted. This answer seems to be answering "Why might I want extra cores in my phone?" which is not the question at hand. It does not explain the difference between PC and Phone. The points given about why a phone may want more cores apply also to desktop computers, especially the points about gaming.
    – Aaron
    Commented Jun 12, 2017 at 21:36
  • 9
    The 1976 claim on x86 CPUs is somewhat misleading. ARM cores can be dated back to the Acorn RISC Machine project in 1983, only 7 years later, and in some ways being newer is an advantage, Acorn learned several things that were wrong with the development of x86 and similar CPU designs and incorporated that into ARM. Commented Jun 12, 2017 at 22:18
  • 2
    Also RISC vs CISC has nothing to do with it, Intel CPUs run a RISCish core internally (uops). The real difference is out or order vs in order execution. Commented Jun 12, 2017 at 22:31
  • 5
    The x86 thing is quite ... wrong. They're superscalar chips, basic implementations would not do anywhere near as good as the classic RISC pipeline used in most ARM chips. It's also worth noting that linking cores together with super-scalar designs is VERY hard due to out of order execution and the cache hierarchy. No one knew what they were missing so there wasn't really demand for it. If you notice some of Intels newer iterations are not in the high core count chips - they're on Broadwell, this is because they discarded sync stuff - out of space.
    – Alec Teal
    Commented Jun 13, 2017 at 21:57
15

The reason is as simple as much as complicate.

The short answer is "because the mobile phone market has never been and is not driven by Intel".

The long answer is way too long to resume here, but the basic concept is that Intel has dominated the PC market for years with all means possible, to the point of paying and corrupting (and being fined for this) to have his CPUs be the first and only choice for PC manufacturers.

Having the total control of the market has allowed Intel to inflate the CPU prices while artificially deciding which features and how much processing power the users should have wanted, and if you analyse a bit Intel history you'll notice that its main strength is basically in the increase of CPUs frequency, so it mostly never tried to do something really smart or innovative; and it didn't need it, because it can just say to people "you don't need more cores, but I have this juicy new CPUs which runs 100 MHz faster". At the same time, it could sell multicore CPUs in the server market at absurdly high prices (because servers have always needed tons of parallel power, to the point that there is a current trend in trying to realize servers that use...guess what? Hundred of your cheap phone CPUs working in parallel)

This, in turn, has reflected into the developers community which has never caught up with the importance of parallel programming, so that many if not most of the them never bothered using more than one thread at time -or, to express it in a non technical way, having their software do more than one task at time. Which, by the way, makes sense when 99% of your customers base has two cores at max. Sadly, this is had led to the legend that parallel algorithms are really difficult to implement and applies only to a small subset of problems.

Instead, finally, the mobile market has never seen Intel success; quite the contrary, actually, as it happens most of the time that Intel tries to do something different from the usual X86 architecture. So, lacking is influence and control of the market, the other CPUs producer have gone in the direction that has been the normality for ages outside the PC market: parallel computing.

14
  • 12
    Are you sure you're answering the right question?
    – iBug
    Commented Jun 11, 2017 at 23:32
  • 7
    @iBug This answer applies to the OP's question better than the accepted answer. The accepted answer is the one that is not answering the right question.
    – Aaron
    Commented Jun 12, 2017 at 18:07
  • 6
    "inflate the CPU prices artificially" -> If Intel was artificially inflating the prices, why their competition use similar priced hardware and why ARM powered computers suck so hard when compared to Intel hardware? This intel-hating is ridiculous. Making CPU's is hard. The thing that made ARM so popular among mobile devices was the big.LITTLE idea, something they conceived before Intel.
    – T. Sar
    Commented Jun 12, 2017 at 18:38
  • 6
    Intel doesn't control the PC chip market and hasn't for many years. And the reason chip designers shifted from faster clocks to more cores is that faster clocks were hitting some fundamental physical limitations. More cores was a much harder problem to solve, so they put it off until it was the most cost effective way to keep increasing performance. Commented Jun 12, 2017 at 20:26
  • 6
    This is more of a rant about evil Intel corporation, which IMO is not well-deserved since ARM screws independent chip makers with licenses just as well. Commented Jun 13, 2017 at 10:41
9

There are two factors going on, one very practical and the other historical.

The practical reason is the use of mixed architectures in phones. Power consumption is critical for phones and phones spend a lot of time in modes where they require very little performance. It makes sense to have some cores optimized for minimal power consumption when little performance is needed while having some cores optimized to provide maximum performance when it's needed.

The other reason is largely historical. Until 2005 or so, desktop CPUs were all single cores. Improving desktop CPU performance consisted almost exclusively in making a core that can execute as many instructions per second as possible. Even today, so much desktop software cannot take full advantage of multiple cores that many would prefer a CPU with 4 cores over an 8 core CPU with cores 20% slower.

Getting as much performance out of a single core as possible requires huge amounts of CPU real estate. This is real estate that could otherwise be used to provide more cores. This is why Intel's newest Kaby Lake CPUs max out at 4 cores and people buy them because each core is faster than their predecessor's cores. For many, they are an upgrade even from CPUs with a higher core count.

Over time, expect to see much more desktop software fully optimized to support more cores. As that happens, the engineering tradeoffs will start to favor more cores over faster cores on desktops. While cores will almost certainly still get faster, you'll start to see people preferring an 8 core CPU over a 4 core CPU even if each core is 20% slower. Chip designers will follow the market.

5

It's crucial for a phone to be able to provide computational power in short bursts (we need certain apps to be fast) but to also avoid overheating (heat dissipation is much more difficult for phones than for laptops or PCs). In order to accomplish this, architects design phones to use a single core when the workload is light and provide extra cores to boost performance when it is needed. If phones were to use fewer large cores, overheating would become a problem even when the workload is fairly light.

Source: A graduate-level computer architecture course.

3
  • Truth being told, the ability to provide computational power (if that's what you mean by energy) in short bursts is crucial for desktop as well. That's why they have TurboBoost on Intel chips. Commented Jun 13, 2017 at 10:34
  • Yes, computational power is what I meant. True, all devices that can expect to have a bursty workload at some point in time (including phones and desktops) need to be able to handle it. The main difference is heat dissipation. Commented Jun 13, 2017 at 19:35
  • I agree with what you said, just wanted to point out that bursty workload is not specific to phones. Commented Jun 15, 2017 at 7:08
2

First, Java virtual machine can historically benefit from multi-core more than typical desktop software. Even if you write a single-threaded app in Java, it will run faster on a multicore because most of the garbage collector code will run alongside with your app.

Second, a lot of things are going on in the background on your phone: automatic updates, ad downloads, antivirus software, management of GSM module, etc. On a laptop, all these tasks would barely keep one core busy, but ARM cores are much less powerful, so you may want to have at least a couple of those dedicated to background tasks if you want a responsive system.

Finally, there's marketing. Not many users are capable of assessing whether they would benefit from 8 cores, but an 8-core smartphone certainly sounds more expensive than 2 or 4 core one.

10
  • 2
    I keep seeing statements along the line of "ARM cores are much less powerful" - what does that exactly mean? They have less clockspeed? Commented Jun 13, 2017 at 11:46
  • 2
    @Abdul less operations per second. x86 chips can execute several operations at once, so they outperform ARM even for the same clock speed. Check out this comparison: the top ARM chip (GT-I9100) is about 10 times slower than the top x86 chip (i7-2920XM). Commented Jun 13, 2017 at 12:08
  • Is "operations per second" synonymous with FLOPS? Commented Jun 13, 2017 at 12:21
  • @Abdul Not necessarily. In fact, aside from games and physics simulations, floating point is not used that much. Also, many ARM chips achieve decent FLOPS by crippling the precision, so it's not the one true measurement either. Commented Jun 13, 2017 at 12:30
  • Android apps don't run on Java virtual machine. They run on Dalvik VM
    – phuclv
    Commented Jun 13, 2017 at 16:56
1

The answers so far explain some facets of the problem leading to this overwhelmingly many number of CPU cores on Android phones. Read that again; Android phones. The iPhone has managed to stuck to just a couple of cores for ages and still performs much smoother than any Android flagship.

The designers of Android made a huge gamble when deciding to chose the Java programming and as a consequence the JVM as the runtime of applications. Java, due to its design principles solves the problem of needing to compile and build code for each CPU architecture before it could be run on it by sacrificing performance. Java introduces a heavyweight and bulky virtual machine usually called the JVM. The JVM actually emulates a CPU at software level to avoid the need to compile code separately for each device. Think of the JVM as a virtual CPU which has the same properties regardless of the device running it so the code need only be compiled once for the JVM and could then be run on every device. This allows manufacturers to throw any hardware they want before needing to worry about application compatibility. This also allows devices them to fill the market with both crappy low-end devices and quality high-end ones and eventually dominate it.

The JVM itself is merely a specification and people are free to develop their own JVM as long as it adheres to this spec. The original android JVM was called Dalvik. Nowadays Google has replaced that with ART.

Now what is the problem with JVM? It is a heavy piece of software which consumes a whole lot of computing resources. Add to this some other properties of the Java language such as Garbage Collection and the JVM's resource consumption simply becomes too much for a device with modest hardware power. Each application and system service open on your device is itself an instance of the ART JVM and by now you could conclude that managing them all requires some really capable hardware. Thing will get even worse when there is the need to draw user interfaces.

Each application runs on a number of Threads. Each CPU core can run only one thread at a time. Each app has one main thread on which it does the stuff related to the user interface. There could be many more threads per application for doing file access, network, etc. There are generally more apps (and system services) open than there are CPU cores and as a result there are usually much more threads than there are CPU cores. So each core has to switch between processing different threads constantly, doing a little of each one and going to next. This switching takes a lot of time for the CPU and in case of the applications being essentially JVMs, this task becomes even more exhaustive. By increasing the number of cores you simple reduce the number of applications (and therefore threads) each core needs to worry about and that increases the general performance.

Based on this explanation one could deduce that android needs powerful hardware to run smoothly. The early generations of Android devices were famous for lagging, crashing and many other unfortunate things. But over the years these problems have been mostly solved by relying on powerful hardware.

On the other hand, iOS application are compiled to native machine code and hence don't need the virtualization. The language used and the operating system are also more efficient and hence allow these devices to remain smooth without the need for some overkill chipset.

7
  • This is a nice explanation why mobile phones are much more powerful than desktops. Or aren't they?
    – maaartinus
    Commented Jun 13, 2017 at 14:50
  • “This allows manufacturers to throw any hardware they want before needing to worry about application compatibility.” – good point, but I am not sure if this was the intention for a system intended (originally) for cameras.
    – v6ak
    Commented Jun 13, 2017 at 19:59
  • “There could be many more threads per application for doing file access, network, etc” – those are rather I/O-bound, not consuming much CPU. Sometimes, I/O is handled just by one thread, because CPU is much faster than I/O devices.
    – v6ak
    Commented Jun 13, 2017 at 20:01
  • “The early generations of Android devices were famous for lagging, crashing and many other unfortunate things” – I remember running Marshmallow on such phone (Xperia Mini Pro), and I think that there are many other reasons for being slow than CPU. They run on low RAM had slower flash devices like MTD (much slower than microSD cards for some operations), older Androids had a less efficient “JVM” (which is not technically a JVM). Sure, better CPU also helps, but I would be far from such conclusion.
    – v6ak
    Commented Jun 13, 2017 at 20:10
  • Also, programming style like performing I/O (or other long operations) in UI thread can make apps laggy regardless of CPU performance. AFAIK, this style is quite common in early Android apps. Such apps can be laggy even with modern phones. They will be probably less laggy, but that's more due to faster flash memories than faster CPUs or more cores.
    – v6ak
    Commented Jun 14, 2017 at 6:39
0

Resuming all above, i can say that use cases of PC and phone are quite different. PC most times used in single or couple of apps (of course browser with bunch of tabs require many cpu cores, can lag even on top i-3), phones used to multitask. At least network connection, UI draw, system triggers, notifications. If you open task manager on PC there are many of processes too, but they use less than few % of cpu power even on old Core 2 duo. 4 cores is pretty cheap (MTK 65x2 was cost 1$ at start for OEM) It`s also RISK vs CISC when last lack on performance per core. Energy efficient != powerful, as we can see here. Multi-core is perfect for mobile,because no serious heavy single tread load, and multi-task aimed experience (but we can see that iPhones need less cores and RAM due to good software like in this video or others )

2
  • Many of this is often performed on laptop, too. And multitasking doesn't have to be CPU-demanding. Difference in manufacturing costs might cause some differences and might be a reason for fewer cores for lowend CPUs, but I doubt that manufacturing costs is the only reason why not all i7s have at least four cores. I believe that manufacturing costs are just a tiny fraction of price of those CPUs.
    – v6ak
    Commented Jun 14, 2017 at 17:25
  • @v6ak, problem is that x86 cores is bigger and more complicated, CPUs from intell (or amd) are just not good enough to be top model. In fact, most of them is got blocked some parts and become junior i7 or Pentiums. ARM cores looks less tricky so not so many models arrive each year. Still true octa core was Samsung Exynos Octa 7xxx, MTK Helio X10, Latest (X30) even propose little(4).Middle(4).BIG(2) , we can her in ads that it is a 10 core processor, cheap marketing does it thing.
    – Flippy
    Commented Jun 14, 2017 at 18:27
-1

I think one of the main driving factors beyond a 4 or 8 (for big:little configurations) is just marketing at the moment.

One huge problem of the high core count is when you consider the size of the memory. Normally in desktop apps when you want to improve the utilization of multiple cores you need to duplicate structures and use much more memory then in a single threaded application.

This does not happen because RAM is very expensive (especially in the 2017/2018 RAM crisis situation). Marketing wants high numbers but controlling want to cut on component prices. If you see a balance which is less than 1 Gigabyte of RAM per core then you see a failed compromise.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .