tion that the effective control paths and
data dependencies are, for all intents
and purposes, opaque to compilers
used to build the applications (an interesting analysis is presented in Mitchell
et al. 3). Applications often simultaneously deploy what is viewed as distinct
functional idioms in application development. Manipulation of dynamic
and persistent databases, functionality implemented via remote servers
or peers, event-based programming,
graphical processing, other compute-intensive processing (of many flavors),
and more occur in many modern client
applications (that is, applications you
might be running on your laptop).
Moreover, multi-language development has become far less surprising for the past two decades. Driven
recently by Web-based application
development (and most likely to be
continued by parallel software development), the last 15 years or so have
seen new programming languages
successfully adopted commercially
at a rate of approximately one every 18 months. Consider Java, C#,
JavaScript, PHP, Perl, Python, Ruby,
Erlang, OCaml, and Haskell, to name
a few. Call it a Moore’s Law analogy
for programming tools (driven this
time by the economics of software development rather than silicon manufacturing). This may also surprise
many, especially C or C++ developers.
Productivity is one of the primary
drivers of software development technology, usually even more of a factor
than performance. For many market
segments, time to market or deployment is the biggest influencer of tool
use. Productivity is also another way to
quantify development costs. It is be-
The trend toward
increasing software
abstraction and
heterogeneity to
manage complexity
is accelerating.
cause of this emphasis on productivity
that we are not at a plateau; instead,
the trend toward increasing software
abstraction and heterogeneity to manage complexity is accelerating.
And that is the challenge that hardware and software developers face in
the age of mainstream highly parallel processing. Before diving into that,
I will take a diversion into the trends
driving increasing (software-exposed)
parallelism in hardware.
how hardware is changing
The oft-cited Moore’s Law has been
remarkably accurate at predicting the
macro trends in transistor scaling on
silicon manufacturing processes for
the past four decades. In a nutshell,
transistor densities double every two
years, indirectly to a doubling of performance for the same power budget.
For the most part, this performance
improvement was manifested for sin-gle-threaded applications running on
microprocessors. In this era, new features in microprocessors were evaluated by how effectively they used area
in return for performance.
However, in the last five years or so,
semiconductor manufacturers ran into
a power wall, which was essentially a
slowing of the power-scaling trend. In
another nutshell, whereas power density per area of silicon was roughly flat
from generation to generation, power
was increasing somewhat. There are
several physical reasons for this (some
discussed in Borkar1), but one manifestation was a slowing of voltage scaling trends (factoring in frequency,
power is effectively cubic in voltage).
So, in this era, new performance-ori-ented features in microprocessors are
largely evaluated by how they use the
power budget for performance.
Examples of power-efficient performance features are simpler cores that
increase IPC (instructions per cycle),
utilize less power-intensive techniques
for latency hiding like simultaneous
multithreading (rather than deeper,
more speculative execution), wider execution payload per instruction (as in
vector instructions, like Intel’s Streaming SIMD Extensions or SSE), and more
cores per die. (To be sure, microprocessor vendors are adding features that
enable many other important features,
like improved manageability, virtual-
Calendar
of Events
september 15–18
MobileHCi ’09: 11th
international Conference on
Human Computer interaction
with Mobile devices
and services,
Bonn, germany,
Contact: reinhard oppermann,
Email: reinhard.oppermann@
fit.fraunhofer.de
september 16–18
aCM symposium on document
Engineering,
Munich, germany,
Contact: Uwe M. Borghoff,
Email: uwe.borghoff@unibw.de
september 21–22
international Conference on
automotive User interfaces
and interactive Vehicular
applications,
Essen, germany,
Contact: albrecht schmidt,
Email: albrecht.schmidt.2006@
gmail.com
september 21–23
performance Metrics for
intelligent systems,
gaithersburg, Md,
Contact: Elena r Messina,
Email: Elena.messina@nist.gov
september 25–26
2009 information security
Curriculum development
Conference,
Kennesaw, ga,
Contact: Michael whitman,
Email: mwhitman@kennesaw.
edu
september 30–october 2
aCM symposium on applied
perception in graphics and
Visualization,
Chania, Crete,
Contact: Katerina Mania,
Email: k.mania@ced.tuc.gr
september 30–october 2
Mindtrek 2009,
tampere Finland,
Contact: artur r. Lugmayr,
Email: artur.lugmayr@tut.fi
september 30–october 2
European Conference on
Cognitive Ergonomics,
Helsinki, Finland,
Contact: Leena norros,
Email: leena.norros@vtt.fi