Channels ▼


The Future of Computing


There is another compelling reason to believe that big, hot, and insanely fast CPUs will die out due to natural selection. As people become more and more aware of "green" concepts and conscious of power consumption our eyes will finally open to extremely bloated code that out GHz-rated CPUs execute at the same rate as MHz-rated processors in specialized devices. The proper question to ask would be "How much power does your software require?", where power means electricity with the implication of the high energy cost. Indeed that would mean that slow and bloated software is expensive software for it requires CPU to run at full blast. To make this point more clear think of a datacenter with a thousand blade servers with each server sporting several CPUs and hard disks. Bloated and slow software that we have today implies that the operating cost of the datacenter is high for it needs a thousand blade servers, thousand terabyte disks, and gigabytes and gigabytes of memory with cooling and power cost of 10 million a year. Now let's say if we are to optimize our software to reduce RAM, disk, and CPU performance requirements by an order of magnitude (which is easily achieved if we scrap interpreted and otherwise "managed" code with inefficient memory management model and multi-layered libraries and invest in compiler and optimizer development) and reduce the number of servers 10 times? Or instead replacing huge blade servers with gigahertz CPUs with compact pocket-size microblades outfitted with megahertz-rated CPUs, few megabytes of RAM and a microdrive?

Needless to say, there is amble room for software optimization that has been ignored for decades since the increases in CPU performance allowed us to neglect it. Yet now the situation with energy resources is such that slow and bloated software means higher costs both in direct electric power required by CPU to process it and indirectly in power consumed by RAM, enormous hard drives and cumulative cooling costs. Furthermore recent tendency to aggregate multiple software components running on shared computational resource (that is, a server) under control of a multitasking OS should be reversed in favor of completely isolated software components running on low-power dedicated hardware. Thus if we are to begin optimizing our code we are likely to see blade server racks replaced with microblade server racks where each microblade is performing a dedicated task, consuming less power; and where the total number of microblades is much greater than the number of initial "macro" blades.

Indeed such complete isolation of software components (database instances, web applications, network services, and the like) that are currently squeezed together on the same server should greatly improve system robustness due to the possibility of real-time component hot-swap or upgrade and completely eliminating software installation, deployment and patch conflicts that plague large servers of today.

When and if that happens depends on two factors energy costs and code optimization efficiency. The former drives the latter. Therefore further increase in energy prices is likely to result in gradual reduction of the role of CPU in computer system, more optimized code and return towards single-processor/single-task special-purpose computing paradigm. On the other hand this vision may never materialize if a technological breakthrough occurs on manufacturing side that would allow further CPU speed increases without the increased energy dissipation (quantum computing, advances in superconductors, photonics, and so on). However, one thing is clear -- the role of CPU performance is definitely waning, and if a radical new technology fails to materialize quickly we will be compelled to write more efficient code for power consumption costs and reasons.

Related Reading

More Insights

Currently we allow the following HTML tags in comments:

Single tags

These tags can be used alone and don't need an ending tag.

<br> Defines a single line break

<hr> Defines a horizontal line

Matching tags

These require an ending tag - e.g. <i>italic text</i>

<a> Defines an anchor

<b> Defines bold text

<big> Defines big text

<blockquote> Defines a long quotation

<caption> Defines a table caption

<cite> Defines a citation

<code> Defines computer code text

<em> Defines emphasized text

<fieldset> Defines a border around elements in a form

<h1> This is heading 1

<h2> This is heading 2

<h3> This is heading 3

<h4> This is heading 4

<h5> This is heading 5

<h6> This is heading 6

<i> Defines italic text

<p> Defines a paragraph

<pre> Defines preformatted text

<q> Defines a short quotation

<samp> Defines sample computer code text

<small> Defines small text

<span> Defines a section in a document

<s> Defines strikethrough text

<strike> Defines strikethrough text

<strong> Defines strong text

<sub> Defines subscripted text

<sup> Defines superscripted text

<u> Defines underlined text

Dr. Dobb's encourages readers to engage in spirited, healthy debate, including taking us to task. However, Dr. Dobb's moderates all comments posted to our site, and reserves the right to modify or remove any content that it determines to be derogatory, offensive, inflammatory, vulgar, irrelevant/off-topic, racist or obvious marketing or spam. Dr. Dobb's further reserves the right to disable the profile of any commenter participating in said activities.

Disqus Tips To upload an avatar photo, first complete your Disqus profile. | View the list of supported HTML tags you can use to style comments. | Please read our commenting policy.