figure 1: cycle of innovation in the computer industry.
requires
Increased
processor
performance
Slower
programs
larger, more
feature-rich
software
High-level
languages and
programming
abstractions
larger
development
teams
figure 2: improvement in intel x86 processors; data from olukotum, 18
herb sutter, a principal architect at microsoft, and intel.
transistors (000) Clock speed (MHz)
10,000,000.00
1,000,000.00
100,000.00
10,000.00
1,000.00
100.00
10.00
1.00
0.10
1970
1975
1980
1985
1990
1995
2000
2005
2010
processor-performance growth and
whether multicore processors can satisfy the same needs. In short, how did
we use the benefits of Moore’s Law?
Will parallelism continue the cycle of
software innovation?
In 1965, Gordon Moore, a co-found-er of Intel, postulated that the number
of transistors that could be fabricated
on a semiconductor chip would double
every year, a forecast he subsequently
17
reduced to every second year. 10 Amazingly, this prediction still holds. Each
generation of transistor is smaller
and switches at a faster speed, allowing clock speed (and computer performance) to increase at a similar rate.
Moreover, abundant transistors enabled architects to improve processor
design by implementing sophisticated
microarchitectures. For convenience, I
call this combination of improvements
in computers Moore’s Dividend. Figure
2 depicts the evolution of Intel’s x86
processors. The number of transistors
in a processor increased at the rate predicted by Moore’s Law, doubling every
24 months while clock frequency grew
at a slightly slower rate.
These hardware improvements increased software performance. Figure 3
charts the highest SPEC integer benchmark score reported each month for
single-processor x86 systems. Over a
decade, integer processor performance
increased by 52 times its former level.
technology officer at Microsoft, memorably captured this wisdom with his four
laws of software, following the premise
that “software is a gas” due to its tendency to expand to fill the capacity of
any computer (see the sidebar “Nathan
Myhrvold’s Four Laws of Software”).
Support for this belief depends on
the metric for the “volume” of software.
Soon after Myhrvold published the
“laws,” the rate of growth of lines of code
(LoC) in Windows diverged dramatically from the Moore’s Law curve (see
Figure 4). This makes sense intuitively;
a software system might grow quickly
in its early days, as basic functionality
accrues, but exponential growth (such
as the factor-of-four increase in lines
of code between Windows 3. 1 and Windows 95 over three years) is difficult to
sustain without a similar increase in
developer headcount or remarkable—
unprecedented—improvement in software productivity.
Software volume is also measured
in other ways, including necessary
machine resources (such as processor speed, memory size, and capacity).
Figure 5 outlines the recommended
resources suggested by Microsoft for
several versions of Windows. With the
exception of disk space (which has increased faster than Moore’s Law), the
recommended configurations grew at
roughly the same rate as Moore’s Law.
How could software’s resource requirements grow faster than its literal size (in terms of LoC)? Software
changed and improved as computers
became more capable. To most of the
world, the real dividend of Moore’s
Law, and the reason to buy new computers, was this improvement, which
enabled software to do more tasks and
do them better than before.
myhrvold’s Laws
A common belief among software developers is that software grows at least at
the same rate as the platform on which
it runs. Nathan Myhrvold, former chief
how Was it spent?
Determining where and how Moore’s
Dividend was spent is difficult for a
number of reasons. Software evolves
over a long period, but no one systematically measures changing resource
consumption. It is possible to compare
released systems, but many aspects of
a system or application evolve between
releases and without close investigation, and it is difficult to attribute visible differences to a particular factor.
Here, I present some experimental
hypotheses that await further research