Time For Change
There have been many predictions about just how important software will become over the next decade. The simple truth is that while the software used to create hardware has made great strides, the applications running on the hardware have not. For the better part of three decades, hardware engineers have been bailing out these applications developers.
Apps developers add the functionality, hardware engineers make it work. Apps developers add bloat, hardware engineers compensate for it and speed it up. Apps developers create more features, hardware engineers figure out ways to time them so they work properly.
The problem now is that hardware engineers are running out of tricks. The power budget has made scaling extremely difficult, except with multiple cores, and so far it doesn’t look as if much of the software will be able to use more than a couple cores. In fact, the real contribution may come from real-time operating systems and hardware accelerators, rather than the applications.
While it’s true that chipmakers are hiring more software engineers than hardware engineers these days, they’re not hiring applications engineers. And it’s the apps engineers who are falling down on the job, if indeed the job can be done at all. There’s plenty of need for multithreaded, parallelized software applications, and so far there aren’t a whole lot of them.
Virtualization can help take advantage of multiple cores, but it does nothing for speeding up performance or reducing the amount of power used by applications. And one application per core can cause timing nightmares if there are several in use at the same time, not to mention drain the battery because of the overhead needed to manage them.
It may be time for chipmakers to start thinking through the software conundrum and how to make software run more efficiently. After decades of letting the apps developers handle it, they haven’t gotten very far.
–Ed Sperling










November 6th, 2009 at 6:08 pm
I can see your frustration, but apps will no more be solved by hardware engineers applying inline assembly language and Perl scripts to apps software.
When you describe current apps developers, you are describing “scripting language of the day” kiddies, who don’t have clue what a Link Map is. I wonder how many of them even understand a stack or a tree?
There are those among us who write efficient embedded firmware, if we get the chance.
Unfortunately all too often logic designers, who refuse to step in a lab, burn 90% of the budget both in time and resources, before we are able to get a look at their of idea what hardware is needed to write efficient firmware.
November 8th, 2009 at 1:56 am
Even though it is very important to make applications run efficiently, generally its the application features that create the real product differentiation. Therefore application engineers may be indispensable.
November 10th, 2009 at 9:05 am
Could it be that we’ve put the cart beside the horse? In most cases I’ve seen the chip is designed and the applications added to it. At best, the applications are developed concurrently, but without clear direction from hardware. If the functionality was determined BEFORE the chip was designed, then you could make decisions about what the architecture of the chip should be.
Of course, to do that, you would have to have a clear idea of what the end user actually wants, and that would require market research. And there is no budget for that.