Demonstration venue · read-only. Every page can be browsed; the buttons that would change it are switched off. Create an account to run TaxoReview on your own data. A simulation from public publication records: the people listed were not invited and did not agree to review.
? Tutorial for this page

David W. Wall

dblp:93/179 · DBLP profile ↗
← Back
12ranked-venue papers
8as first author
0since 2021 · last 1994
—ORCID · none

Domains — the database's venue-derived domains; a paper can count in several

Software engineering, systems software and programming languages · 11 · 7 first-authorSystems, architecture and hardware · 5 · 2 first-authorComputer networks · 1 · 1 first-author

Expertise — from the expertise taxonomy: the topics of the expert's papers under the CCF categories. A weight counts papers with recency: 1 for a paper about the topic, 0.3 when the topic is its context, halved every five years.

Computer architecture, parallel and distributed computing, and storage systems
9 papers
Processor architecture and microarchitecture · 69% Performance modeling and evaluation · 21% Memory systems · 8%
Software engineering, system software, and programming languages
6 papers
Compilers and program optimization · 92% Debugging and program repair · 8%

Topics — the 28 heaviest of 29, each with the papers that count most for it

TopicWeightPapersLastEvidence papers
Compilers and program optimization › interprocedural optimization
link-time optimization
0.031994
Link-Time Optimization of Address Calculation on a 64-bit Architecture · PLDI 1994
Experience with a Software-Defined Machine Architecture · ACM Trans. Program. Lang. Syst. 1992
The Mahler Experience: Using and Intermediate Language as the Machine Description · ASPLOS 1987
Processor architecture and microarchitecture
instruction-level parallelism
0.021991
Limits of Instruction-Level Parallelism · ASPLOS 1991
Available Instruction-Level Parallelism for Superscalar and Superpipelined Machines · ASPLOS 1989
Compilers and program optimization
instruction scheduling
0.021992
Experience with a Software-Defined Machine Architecture · ACM Trans. Program. Lang. Syst. 1992
The Mahler Experience: Using and Intermediate Language as the Machine Description · ASPLOS 1987
Processor architecture and microarchitecture
instruction set architecture
0.041994
A Unified Vector/Scalar Floating-Point Architecture · ASPLOS 1989
Link-Time Optimization of Address Calculation on a 64-bit Architecture · PLDI 1994
Experience with a Software-Defined Machine Architecture · ACM Trans. Program. Lang. Syst. 1992
Compilers and program optimization › loop optimization
address arithmetic optimization
0.011994
Link-Time Optimization of Address Calculation on a 64-bit Architecture · PLDI 1994
Compilers and program optimization › instruction scheduling
pipeline scheduling
0.011992
Experience with a Software-Defined Machine Architecture · ACM Trans. Program. Lang. Syst. 1992
Compilers and program optimization › dynamic optimization
profile-guided optimization
0.011991
Predicting Program Behavior Using Real or Estimated Profiles · PLDI 1991
Processor architecture and microarchitecture › superscalar processor
wide-issue processor
0.011991
Limits of Instruction-Level Parallelism · ASPLOS 1991
Memory systems › memory hierarchy
cache hierarchy
0.011990
Generation and Analysis of Very Long Address Traces · ISCA 1990
Performance modeling and evaluation
workload characterization
0.011990
Generation and Analysis of Very Long Address Traces · ISCA 1990
Processor architecture and microarchitecture › register file
register file design
0.011989
A Unified Vector/Scalar Floating-Point Architecture · ASPLOS 1989
Processor architecture and microarchitecture
superscalar processor
0.011989
Available Instruction-Level Parallelism for Superscalar and Superpipelined Machines · ASPLOS 1989
Compilers and program optimization
register allocation
0.011988
Register Windows versus Register Allocation · PLDI 1988
Processor architecture and microarchitecture
register file
0.011988
Register Windows versus Register Allocation · PLDI 1988
Processor architecture and microarchitecture › register file
register window
0.011988
Register Windows versus Register Allocation · PLDI 1988
Compilers and program optimization
intermediate representation
0.011987
The Mahler Experience: Using and Intermediate Language as the Machine Description · ASPLOS 1987
Compilers and program optimization › register allocation
interprocedural register allocation
0.011987
The Mahler Experience: Using and Intermediate Language as the Machine Description · ASPLOS 1987
Debugging and program repair › software debugging
debugging optimized code
0.011985
A Note on Hennessy's "Symbolic Debugging of Optimized Code" · ACM Trans. Program. Lang. Syst. 1985
Debugging and program repair › automated debugging
symbolic debugging
0.011985
A Note on Hennessy's "Symbolic Debugging of Optimized Code" · ACM Trans. Program. Lang. Syst. 1985
Processor architecture and microarchitecture
abstract machine
0.011992
Experience with a Software-Defined Machine Architecture · ACM Trans. Program. Lang. Syst. 1992
Performance modeling and evaluation
simulation
0.011991
Limits of Instruction-Level Parallelism · ASPLOS 1991
Performance modeling and evaluation › simulation › discrete-event simulation
trace-driven simulation
0.011991
Limits of Instruction-Level Parallelism · ASPLOS 1991
Distributed computing theory
message passing
0.011982
Messages as Active Agents · POPL 1982
Graph algorithms and graph theory › graph algorithms
network algorithms
0.011982
Messages as Active Agents · POPL 1982
High-performance computing › code optimization
compiler optimization
0.011989
Available Instruction-Level Parallelism for Superscalar and Superpipelined Machines · ASPLOS 1989
Processor architecture and microarchitecture
vector processing
0.011989
A Unified Vector/Scalar Floating-Point Architecture · ASPLOS 1989
Processor architecture and microarchitecture › pipelining
delayed branch
0.011987
The Mahler Experience: Using and Intermediate Language as the Machine Description · ASPLOS 1987
Compilers and program optimization
compiler optimization
0.011985
A Note on Hennessy's "Symbolic Debugging of Optimized Code" · ACM Trans. Program. Lang. Syst. 1985

Methods — techniques the papers use, named apart from their topics

whole-program optimization · 0.0instrumentation · 0.0compiler back-end and linker cooperation · 0.0static estimation · 0.0profiling · 0.0trace-driven simulation · 0.0simulation · 0.0link-time optimization · 0.0link-time code modification · 0.0code reorganization · 0.0symbolic execution · 0.0
YearPublicationVenuePosition
1994 Link-Time Optimization of Address Calculation on a 64-bit Architecture
abstract
Compilers for new machines with 64-bit addresses must generate code that works when the memory used by the program is large. Procedures and global variables are accessed indirectly via global address tables, and calling conventions include code to establish the addressability of the appropriate tables. In the common case of a program that does not require a lot of memory, all of this can be simplified considerably, with a corresponding reduction in program size and execution time. We have used our link-time code modification system OM to perform program transformations related to global address use on the Alpha AXP. Though simple, many of these are whole-program optimizations that can be done only when we can see the entire program at once, so link-time is an ideal occasion to perform them. This paper describes the optimizations performed and shows their effects on program size and performance. Relatively modest transformations, possible without moving code, improve the p...
Amitabh Srivastava, David W. Wall
PLDI2
1992 Experience with a Software-Defined Machine Architecture
abstract
We have built a system in which the compiler back end and the linker work together to present an abstract machine at a considerably higher level than the actual machine. The intermediate language translated by the back end is the target language of all high-level compilers and is also the only assembly language generally available. This lets us do intermodule register allocation, which would be harder if some of the code in the program had come from a traditional assembler, out of sight of the optimizer. We do intermodule register allocation and pipeline instruction scheduling at link time, using information gathered by the compiler back end. The mechanism for analyzing and modifying the program at link time is also useful in a wide array of instrumentation tools.
David W. Wall
ACM Trans. Program. Lang. Syst.1
1991 Limits of Instruction-Level Parallelism
abstract
Growing interest in ambitious multiple-issue machines and heavilypipelined machines requires a careful examination of how much instructionlevel parallelism exists in typical programs. Such an examination is complicated by the wide variety of hardware and software techniques for increasing the parallelism that can be exploited, including branch prediction, register renaming, and alias analysis. By performing simulations based on instruction traces, we can model techniques at the limits of feasibility and even beyond. This paper presents the results of simulations of 18 different test programs under 375 different models of available parallelism analysis. This paper replaces Technical Note TN-15, an earlier version of the same material.
David W. Wall
ASPLOS1
1991 Predicting Program Behavior Using Real or Estimated Profiles
abstract
There is a growing interest in optimizations that depend on or benefit from an execution profile that tells where time is spent. How well does a profile from one run describe the behavior of a different run, and how does this compare with the behavior predicted statically by examining the program itself ? This paper defines two abstract measures of how well a profile predicts actual behavior. According to these measures, real profiles indeed do better than estimated profiles, usually. A perfect profile from an earlier run with the same data set, however, does better still, sometimes by a factor of two. Using such a profile is unrealistic, and can lead to inflated expectations of a profile-driven optimization. i 1. Introduction Many people have built or speculated on systems that use a run-time profile to guide code optimization. Applications include the selection of variables to promote to registers [7,8], placement of code sequences to improve cache behavior [3,6], and pre...
David W. Wall
PLDI1
1990 Generation and Analysis of Very Long Address Traces
abstract
Existing methods of generating and analyzing traces suffer from a variety of limitations including complexity, inaccuracy, short length, inflexibility, or applicability only to CISC machines. We use a trace generation mechanism based on link-time code modification which is simple to use, generates accurate long traces of multi-user programs, runs on a RISC machine, and can be flexibly controlled. On-the-fly analysis of the traces allows us to get accurate performance data for large second-level caches. We compare the performance of systems with 512K to 16M second-level caches, and show that for today's large programs, second-level caches of more than 4MB may be unnecessary. We also show that set associativity in second-level caches of more than 1MB does not significantly improve system performance. In addition, our experiments also provide insights into first-level and second-level cache line size.
Anita Borg, Richard E. Kessler, David W. Wall
ISCA3
1989 A Unified Vector/Scalar Floating-Point Architecture
abstract
In this paper we present a unified approach to vector and scalar computation, using a single register file for both scalar operands and vector elements. The goal of this architecture is to yield improved scalar performance while broadening the range of vectorizable applications. For example, reduction operations and recurrences can be expressed in vector form in this architecture. This approach results in greater overall performance for most applications than does the approach of emphasizing peak vector performance. The hardware required to support the enhanced vector capability is insignificant, but allows the execution of two operations per cycle for vectorized code. Moreover, the size of the unified vector/scalar register file required for peak performance is an order of magnitude smaller than traditional vector register files, allowing efficient on-chip VLSI implementation. The results of simulations of the Livermore Loops and Linpack using this architecture are presented.
Norman P. Jouppi, Jonathan Bertoni, David W. Wall
ASPLOS3
1989 Available Instruction-Level Parallelism for Superscalar and Superpipelined Machines
abstract
Superscalar machines can issue several instructions per cycle. Superpipelined machines can issue only one instruction per cycle, but they have cycle times shorter than the latency of any functional unit. In this paper these two techniques are shown to be roughly equivalent ways of exploiting instruction-level parallelism. A parameterizable code reorganization and simulation system was developed and used to measure instruction-level parallelism for a series of benchmarks. Results of these simulations in the presence of various compiler optimizations are presented. The average degree of superpipelining metric is introduced. Our simulations suggest that this metric is already high for many machines. These machines already exploit all of the instruction-level parallelism available in many non-numeric applications, even without parallel instruction issue or higher degrees of pipelining.
Norman P. Jouppi, David W. Wall
ASPLOS2
1988 Register Windows versus Register Allocation
abstract
A large register set can be exploited by keeping variables and constants in registers instead of in memory. Hardware register windows and compile-time or link-time global register allocation are ways to do this. A measure of the effectiveness of any of these register management schemes is how thoroughly they remove loads and stores. This measure must also count extra loads and stores executed because of window overflow or conflicts between procedures.
David W. Wall
PLDI1
1987 The Mahler Experience: Using and Intermediate Language as the Machine Description
abstract
Division of a compiler into a front end and a back end that communicate via an intermediate language is a well-known technique. We go farther and use the intermediate language as the official description of a family of machines with simple instruction sets and addressing capabilities, hiding some of the inconvenient details of the real machine from the users and the front end compilers.To do this credibly, we have had to hide not only the existence of the details but also the performance consequences of hiding them. The back end that compiles and links the intermediate language tries to produce code that does not suffer a performance penalty because of the details that were hidden from the front end compiler. To accomplish this, we have used a number of link-time optimizations, including instruction scheduling and interprocedural register allocation, to hide the existence of such idiosyncracies as delayed branches and non-infinite register sets. For the most part we have been sucessful.
David W. Wall, Michael L. Powell
ASPLOS1
1985 A Note on Hennessy's "Symbolic Debugging of Optimized Code"
abstract
article Free Access Share on A note on Hennessy's “symbolic debugging of optimized code” Authors: David Wall Computer Science Department, Whitmore Laboratory, The Pennsylvania State University, University Park, PA Computer Science Department, Whitmore Laboratory, The Pennsylvania State University, University Park, PAView Profile , Amitabh Srivastava Computer Science Department, Whitmore Laboratory, The Pennsylvania State University, University Park, PA Computer Science Department, Whitmore Laboratory, The Pennsylvania State University, University Park, PAView Profile , Fred Templin Computer Science Department, Whitmore Laboratory, The Pennsylvania State University, University Park, PA Computer Science Department, Whitmore Laboratory, The Pennsylvania State University, University Park, PAView Profile Authors Info & Claims ACM Transactions on Programming Languages and SystemsVolume 7Issue 1pp 176–181https://doi.org/10.1145/2363.215005Published:02 January 1985Publication History 14citation167DownloadsMetricsTotal Citations14Total Downloads167Last 12 Months14Last 6 weeks2 Get Citation AlertsNew Citation Alert added!This alert has been successfully added and will be sent to:You will be notified whenever a record that you have chosen has been cited.To manage your alert preferences, click on the button below.Manage my AlertsNew Citation Alert!Please log in to your account Save to BinderSave to BinderCreate a New BinderNameCancelCreateExport CitationPublisher SiteeReaderPDF
David W. Wall, Amitabh Srivastava, Fred Templin
ACM Trans. Program. Lang. Syst.1
1983 Construction of centered shortest-path trees in networks
abstract
Abstract Many researchers in the area of distributed networks have found it convenient to assume the existence of a facility for routing broadcast messages to all the nodes in the network. We are investigating an approach called center‐based forwarding which routes messages via the branches of the shortest‐path tree for some node near the center of the network. In this article we show that this approach results in broadcasts that finish with low delay; we then explain how to construct centered trees in a loosely coupled network environment.
David W. Wall, Susan S. Owicki
Networks1
1982 Messages as Active Agents
abstract
Network algorithms are usually stated from the viewpoint of the network nodes, but they can often be stated more clearly from the viewpoint of an active message, a process that intentionally moves from node to node. This paper gives some examples of this notion, and then discusses a means of implementing it. This implementation applied in both directions also demonstrates the logical equivalence of the two viewpoints.
David W. Wall
POPL1