Whether hardware designers like it or not, software is more of a determining factor of hardware today than ever.
There is no argument about the increasing importance of software in system designs today, given the intimate and integral role it plays in directing the very hardware it is co-designed with.
There is also a very good case for certain kinds of software that lend themselves more to certain types of processors.
This, of course, depends on what is meant by the type of processor, asserted Colin Walls, embedded software technologist at Mentor Graphics.
He said if you are comparing an ARM with a PowerPC, from a software perspective, there’s no obvious way of selecting between those two until you’ve gotten to a certain point in the software design. “And actually, in that case, it might well be a hardware issue because, for example, power consumption might well be in favor of ARM over PowerPC — just as an example.”
When it comes to other processors, like DSPs and so forth, Walls reminded that these have specialist facilities for doing mathematical processing for processing signals of one kind or another — whether it’s audio, video, etc. — and then, different DSPs have different types of functionality. This functionality is driven by the kind of software that is being written because ultimately the software is imparting the functionality for the design as a whole. “And why would you use a DSP instead of, say, a regular ARM CPU? You’re doing something which requires mathematical processing of signals, which is quite specialized and by having hardware assistance to do it, you can do it much more efficiently, and a DSP is a processor with the hardware assistance integrated into its design.”
The same dynamic happens for a GPU, which are even more specialized. “A DSP handles any kind of signal, but a GPU would be looking at the specific mathematical transformations that are needed in controlling a graphical display, and a high degree of parallelism is likely in that context as well, which is another possibility and maybe customization — they tend to be a fantastically complex beasts. The difference between a GPU and a DSP is that a DSP could be the only processor in a design – it is very very unlikely that you would only have a GPU. You would have a some kind of processor and a GPU alongside it doing the heavy lifting up on the video side,” he explained.
Walls argued further for software. “If you have a design which ultimately has a priority on power consumption as lots of handheld devices might do, to make that as good as possible, the only part of the device that really knows what’s going on is the software and the software therefore is able to decide how much CPU power it needs, which peripheral devices need to be switched on and so forth. [As such,] the design must grant the software the capability of turning on and off peripherals, controlling the clock speed, and so forth. Therefore the software guys in that case should be dictating to the hardware guys, ‘Look, we need to do XYZ in order to achieve these design goals.’ That approach, that attitude could be there for the whole design in fact.”
Even simple things like how much memory to put on the device is impacted, he said. “A hardware guy would say these chips are quite cost-effective, surely a megabyte is enough. He may be right but the software guy is the one who would have a better guess at it.”
There’s always been a tension between hardware and software — and that’s not changing. While some engineering teams are more enlightened today, Walls argues there isn’t as much change in that area as might be expected — surprising considering what what modern design looks like.
In another five or 10 years, I would venture to say significant progress will have been made, given the incredible advances this industry regularly demonstrates.