The Future Of Mobile Tech

I was musing the other day about how octa-core phones are just downright stupid. I think I should have reworded that to include "in their current form".

Reading up on Microsoft's research into getting up to 7 days of life out of a phone battery got me thinking about how one might accomplish this.

While CPU tasks generally aren't a huge culprit. Use your phone unwisely and they can take their toll. Grab any device and download a ton of apps that run in the background and you'll see what I mean. Generally, actively working on the device will still kill it quicker, because the massive touch screen is the number 1 consumer of battery. Then you get things like mobile data connections and GPU which can kill a lot on their own, or speed the consumption further.

While the CPU is a rather lowly offender. Used "incorrectly" it can certainly eat its share of the battery too. And let's be honest. We all want our background tasks able to run as frequently as they can, even when we aren't looking at our phones. And that is because, when we do choose to look at our phones, we want all of the data to be as relevant as possible. CPU would be a bigger offender if it was being used as much as some of us would like.

I argued 8 core processors were not even really a Band-Aid solution. Most phones OS's get by fine on 2 cores. And if you toss Android in the mix, 4. Extra cores, in theory, allow workloads to be distributed across more cores and then keep most or all cores in lower power states.

But, the problem is, the way multi-core processors are made today is that all core are generally built as equals. And when you cram more high power cores in a small package. Something has to give. And in this case, technically two things. The first thing is top speed. The more cores you add, the slower in general the top speed is. As a result, the second thing is, the load each core has to reach to move up into the next power state gets tighter as well.

To take things to absurd levels. Let's say you have a single core chip that runs at 3GHZ. We will have 3 theoretical power states. Low at <= 10%, mid at <=50% and max power for any other core utilization. For sake of simplicity, we'll say, every time we double the number of cores our top speed decreases by 300 MHZ. Not a bad scale... just that things aren't so linear in reality. Now lets say we want a 512 core processor. That's 1*2*2*2*2*2*2*2*2*2, or doubling the cores 9 times. We now have a 512 core process that has a max speed of 200MHZ. Which means, if any application on any of those cores needs more than 20MHZ of power (likely) we'll go up a power state, and if they need more than 100MHZ (still quite likely) that core goes to full power. The example is silly, yes. But the point is true. As we crank out higher core counts, we ARE losing top speed. And as we lose top speed we shrink the viability of those lower power states. When faster processors are allowed to remain in lower power states, they are generally very efficient. But as you can see, the more cores we add, the less likely they are to remain in those lower power states unless the problem is purely in the quantity of background tasks (if I had 512 processes that all used 20MHZ or less CPU time, GREAT! but not gonna happen).

There is a solution to this problem. Don't make the cores all equal. We are dumping massive amounts of power, memory, etc... into phone processors, and at 8 cores the trade-offs have already stopped making sense. But, let's say you instead build an 8 core processor with 2 REALLY fast cores, 3 medium speed cores and 3 ultra low power cores and in addition to having power states managed by each core, allow the firmware to, on the fly, enable or disable cores as needed. This would require a rewrite at the OS level.

But, now you can start to imagine power management scenarios that would pay off in spades. The 2 fast cores would only be used when the phone is in use. These cores could have larger areas on the die for better heat dissipation and more memory than the other cores. Where the other cores could be used for background tasks under various scenarios. Ideally, the 3 medium power cores would only be used to offload excessive loads when the phone is running. When in sleep mode, the phone could be restricted to just the low power cores. The idea being here that the 3 slow cores could be low enough power parts that even if they were run 100% of the time there would be minimal impact on battery life. It could optionally allow work to be offloaded to the faster chips if the backlog grew big enough.

Obviously, this is just my take on it. The balance of the power in the cores could be adjusted. Typically multiples of 2 are what die manufacturers will work with, so maybe a 2-4-2 or 2-2-4 for fast-mid-slow type arrangement. Or perhaps more or less levels of processing power.

I think in the near future THIS is what we're going to see happen with mobile processors. A small number of super fast cores (2-4) and then an increasing number of auxiliary cores based on smaller, slower, but more efficient architectures. This should also help with the problem where single threaded performance decreases as number of cores increases. Frankly, I think even laptops and desktops could benefit from the approach. And I'm surprised we haven't seen it already on any real scale. We already do it with memory and the number of "levels" of memory is staggering with 2-4 levels on die memory, then RAM and then hard disk, so the precedence has existed for some time.

Comments

Popular Posts