Future Research in Computer Systems Architecture
Position Paper for NSF Workshop on
New Challenges and Directions for Systems Research
St. Louis, Missouri, July 31 - August 1, 1997
Mark D. Hill
Computer Sciences Department
University of Wisconsin-Madison
One important area of systems research deals with the interface between
computer hardware and software. Solid research in this area--often called
"computer architecture"--must penetrate beyond an interface to deal with
issues in one of more the following areas:
- hardware implementation (e.g., exploring how trends are leading
wire delays to dominating gate delays, thereby making global bypassing
more expensive),
- system software (e.g., translation lookaside buffer alternatives
to support large page sizes),
- compilers and instruction set architecture (e.g., scheduling loads
together for non-blocking caches),
- applications (e.g., large buffer pools for databases or reserved
memory bus bandwidth for multimedia), and
- sophisticated performance analysis methods (e.g., complex simulators,
mapping hardware performance counters back to application measures,
analytic models).
In my view, several important areas of research for the next 5-10 years are:
- Memory systems. Memory system behavior will continue to determine
SUSTAINED performance, as the gap between instructions per second and
memory latency continues to grow dramatically. Surprisingly, a load
today is far more complex than a floating-point divide. A load can
cause an effective address calculation, TLB access, L1 cache access (and
replacement), L2 cache access (and replacement), and memory access. In
shared memory multiprocessors, considerable coherence protocol activity
is also possible. More work is needed to make memory systems more
stable, especially in the presence of audio and video streams. Ken
Kennedy's keynote at PPoPP97 predicted ten levels of memory hierarchy
in large machines!
- Speculation everywhere. There are fundamental limits to what software can
know statically. Recent work on dynamic speculation has moved way beyond
branch prediction to path and value prediction. Value prediction opens up
the possibility of executing a program with k operations on the critical
path in less than k cycles.
- Support for new datatypes and applications. While the past belongs
to floating-point numbers and character strings, the future belongs to
graphics data aggregates (e.g, MMX (TM)), JPEG, MPEG, etc. It's not your
father's datatype any more! Furthermore, more support will be needed for
(de-)compression and (de-)encryption, the cornerstone of authenticated,
private communication in science and in life.
- Network-centric computing. More and more computers will facilitate
communication and only incidently compute (to transform the data streams
being communicated). Thus, networks, network interfaces, and methods of
virtualizing them without loss of performance or protection will become
more important. Someday two people should be able to have a video
conference with no operating system touching data after the initial
set up.
- Parallel computing. Parallel computers are entering the mainstream
with Quad Pentium Pro (TM) daughter boards. Nevertheless, many the our
nation's needs will require greater power than the market place and
Moore's law delivers. While parallel computing already has had some
spectacular successes, performance is not yet robustly good.
- High Availability. During my sabbatical in industry I grew to appreciate
the need to make computing more robust (since we are building much of our
nation's infrastructure on it), but, at the same time, the unwillingness of
customers pay for serious fault tolerance (a la deep space probes). The
compromise that needs to work is high availability, which allows some
components to crash, but keeps other components running and re-incorporating
recently-crashed components quickly. An example of what we need is a
network-of-workstations web server, which will occasionally drop
connections, but will almost always be up, and, at the same time,
not pay any overheads when all components are up.
Postscript
I would strongly advocate that academics, especially in systems
research take sabbaticals in industrial product groups. For more
information on this position and my experience, please see URL
"http://www.cs.wisc.edu/~markhill/nsf_es96_pos.ps".
Return to: Table of Contents