The Core Problem


How many core’s does your smartphone have?  I only have two in my Droid Bionic and as a phone nerd I must confess it’s embarrassing.

 CPU Core Quad cores are all the rage now, most coming with Jelly Bean / Android 4.1.  (Don’t even get me started on the Bionic’s OS level.  Let’s just say I’m sick of eating Gingerbread.)  And just because I’ve had the Bionic for a year and the iPhone 5 is coming out dual core, it really doesn’t make me feel any better.  Comparing specs to Apple‘s products has lost its fun.  Just too easy.

Anyway, some of the hottest and latest are LG‘s Optimus (about to be the next Nexus) and HTC’s One X+, both with quad core.  Very sexy.  Now you may ask, what is the core and why do I care?  And will I eventually have eight and sixteen cores?

Excellent questions.

We’ll start with a base assumption that you know what the CPU is, i.e., the chip that is the heart of a computer.  Historically, CPU’s would be said to have been single-core, meaning I issued instructions to the computer and it executed them one at a time.  For example I have four instructions I want the computer to execute: 1+1, 2+2, 3+3 and 4+4.  The classic CPU executes 1+1 and returns and answer of 2, executes 2+2 and returns and answer of 4, executes 3+3 and returns an answer of 6 and finally execute 4+4 and returns and answer of 8.

Dual-core CPU’s have twice the ability to process instructions by doing it in parallel.  In our above example, the dual-core CPU would execute 1+1 and 2+2 at the same time and return two answers, 2 and 4.  Then it would execute 3+3 and 4+4 at the same time and return 6 and 8 as answers.  In the same manner, a quad-core CPU could execute all four instructions at the same time and return four answers: 2, 4, 6 and 8… presumably in half the time of a dual-core and one fourth the time of a single-core.

So what’s not to love about that?  Dual is twice as fast a single and quad is four times as fast; octa-core (8) would be eight times as fast… right?  Not so fast (so to speak).

The general topic we’re discussing here is parallel processing and it is a computer science subject going back decades.  Performance does not increase linearly (at the same rate) as the number of cores, or CPU’s are added.  There are a number of bottlenecks that have sprouted many a doctoral dissertations, but let’s focus on the software.

In our example, if I had an octa-core processor and executed the same instructions, the performance would be exactly the same as the quad-core because I’ve only given it four things to do.  So you ask, why not give it eight things to do?  Easier said than done.  The math example was extremely simple (in computer science parlance called “embarrassingly parallel”).  Most of the time it’s not so easy to take what the user is requesting and break it up into instructions that are independent enough to be executed in parallel.  You end up with diminishing returns as more CPU cores are added.

This is not a new problem.  Today when you hear the term “supercomputer” it always means lots and lots of CPU’s or cores (think thousands) put together in some type of network with the tough work of making use of all that hardware left up to the programmers.  If all you needed the supercomputer to do was send and received text messages it wouldn’t be any faster than your phone.  The trick is to use it on problems that are inherently parallel, typically meaning huge mathematical simulations such as weather forecasting.

But computer languages and programmers are getting better and better at developing software that can make use of parallel processing.  For phones, the good news is that with such an infant industry new software is being written all the time and can make better use of the new hardware, as compared to software that’s been around for years and years that still “thinks” in terms of single-core.

So how many cores will satisfy my need?  Well, let’s not confuse “need” and “want”.  I want four.

 
Share

Leave a Reply

Your email address will not be published. Required fields are marked *