Getting the most out of new designs will require some radically new ways of looking at software.
The easy stuff is over, not that anything was ever really easy in the semiconductor world. But getting the most from a chip in terms of lowering power and boosting performance will no longer be a function of the silicon alone.
Most software engineering has been done with existing languages and operating systems, but the well-known versions are aimed at general-purpose computing. They’re grossly inefficient for most tasks, and most of them are based on the need for regular communication between various components.
In the future, application code—not the operating system—will have to be written directly to the chip. That can be done in Verilog or some other language—with a superset of limited functionality built on top of that rather than underneath it. This is something along the lines of what Intel has started thinking about with its multicore development language, but even that relies heavily on hardware services that span a device and backward compatibility. The real gains in performance for the least amount of power will come from direct interaction with one or more cores for a very specific purpose.
Many engineers who developed chips for the military decades ago are familiar with this kind of hardware-software interaction, but it’s been largely absent from the industry because classical scaling on CMOS has made it possible to gain performance at every process node. That ended at 90nm, and short of a couple tricks such as moving from CMOS to SOI, straining silicon and adding more cores, the Moore’s Law roadmap will run out of steam. It still will be technologically possible to advance to future nodes, but the benefits in performance and lower power will disappear.
Radically changing software design could add a couple more nodes to the road map, as well as improve the performance and lower the power requirements of older process nodes. But it also will require significantly more complex modeling of the interactions of the software and the hardware rather than just making sure the software works with the hardware. Compatibility is only part of the problem. Efficiency in communication between hardware and software is the other piece, and that has never been fully developed.
In the ESL world, we will always live in interesting times. What remains to be seen is just how much of a curse this actually becomes.
Leave a Reply