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

Erik M. Nystrom

dblp:21/3146 · DBLP profile ↗
← Back
8ranked-venue papers
2as first author
0since 2021 · last 2006
—ORCID · none

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

Systems, architecture and hardware · 6Software engineering, systems software and programming languages · 4 · 2 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
5 papers
Processor architecture and microarchitecture · 70% Memory systems · 18% Parallel and multicore computing · 10%
Software engineering, system software, and programming languages
5 papers
Compilers and program optimization · 81% Program analysis · 19%

Topics — the 17 heaviest of 19, each with the papers that count most for it

TopicWeightPapersLastEvidence papers
Processor architecture and microarchitecture
instruction-level parallelism
0.122006
Beating In-Order Stalls with "Flea-Flicker" Two-Pass Pipelining · IEEE Trans. Computers 2006
Field-testing IMPACT EPIC research results in Itanium 2 · ISCA 2004
Processor architecture and microarchitecture
latency hiding
0.112006
Beating In-Order Stalls with "Flea-Flicker" Two-Pass Pipelining · IEEE Trans. Computers 2006
Memory systems › memory access latency
load latency
0.112006
Beating In-Order Stalls with "Flea-Flicker" Two-Pass Pipelining · IEEE Trans. Computers 2006
Processor architecture and microarchitecture
pipelining
0.112006
Beating In-Order Stalls with "Flea-Flicker" Two-Pass Pipelining · IEEE Trans. Computers 2006
Parallel and multicore computing
runtime optimization
0.122001
An Architectural Framework for Runtime Optimization · IEEE Trans. Computers 2001
A hardware mechanism for dynamic extraction and relayout of program hot spots · ISCA 2000
Memory systems › cache
cache miss tolerance
0.012003
Beating in-order stalls with "flea-flicker" two-pass pipelining · MICRO 2003
Processor architecture and microarchitecture › microprocessor design › processor core design
in-order core
0.012003
Beating in-order stalls with "flea-flicker" two-pass pipelining · MICRO 2003
Processor architecture and microarchitecture › pipelining
pipeline stall
0.012003
Beating in-order stalls with "flea-flicker" two-pass pipelining · MICRO 2003
Program analysis
dynamic analysis
0.012002
Vacuum packing: extracting hardware-detected program phases for post-link optimization · MICRO 2002
Compilers and program optimization › binary rewriting
post-link optimization
0.012002
Vacuum packing: extracting hardware-detected program phases for post-link optimization · MICRO 2002
Compilers and program optimization › dynamic optimization
profile-guided optimization
0.012002
Vacuum packing: extracting hardware-detected program phases for post-link optimization · MICRO 2002
Processor architecture and microarchitecture
branch prediction
0.012001
An Architectural Framework for Runtime Optimization · IEEE Trans. Computers 2001
Processor architecture and microarchitecture
instruction fetch
0.012000
A hardware mechanism for dynamic extraction and relayout of program hot spots · ISCA 2000
Processor architecture and microarchitecture › instruction fetch
trace cache
0.012000
A hardware mechanism for dynamic extraction and relayout of program hot spots · ISCA 2000
Compilers and program optimization
instruction scheduling
0.012006
Beating In-Order Stalls with "Flea-Flicker" Two-Pass Pipelining · IEEE Trans. Computers 2006
Performance modeling and evaluation
benchmarking
0.012004
Field-testing IMPACT EPIC research results in Itanium 2 · ISCA 2004
Compilers and program optimization
dynamic optimization
0.012001
An Architectural Framework for Runtime Optimization · IEEE Trans. Computers 2001

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

instruction marking · 0.1profiling · 0.1in situ evaluation · 0.1out-of-order execution · 0.1instruction profiling · 0.1hardware speculation · 0.1branch target buffer · 0.1code replication · 0.0code extraction · 0.0
YearPublicationVenuePosition
2006 Beating In-Order Stalls with "Flea-Flicker" Two-Pass Pipelining
abstract
While compilers have generally proven adept at planning useful static instruction-level parallelism for in-order microarchitectures, the efficient accommodation of unanticipateable latencies, like those of load instructions, remains a vexing problem. Traditional out-of-order execution hides some of these latencies, but repeats scheduling work already done by the compiler and adds additional pipeline overhead. Other techniques, such as prefetching and multithreading, can hide some anticipateable, long-latency misses, but not the shorter, more diffuse stalls due to difficult-to-anticipate, first or second-level misses. Our work proposes a microarchitectural technique, two-pass pipelining, whereby the program executes on two in-order back-end pipelines coupled by a queue. The "advance" pipeline often defers instructions dispatching with unready operands rather than stalling. The "backup" pipeline allows concurrent resolution of instructions deferred by the first pipeline allowing overlapping of useful "advanced" execution with miss resolution. An accompanying compiler technique and instruction marking further enhance the handling of miss latencies. Applying our technique to an Itanium 2-like design achieves a speedup of 1.38x in mcf, the most memory-intensive SPECint2000 benchmark, and an average of 1.12 x across other selected benchmarks, yielding between 32 percent and 67 percent of an idealized out-of-order design's speedup at a much lower design cost and complexity.
Ronald D. Barnes, John W. Sias, Erik M. Nystrom, Sanjay J. Patel, Nacho Navarro, Wen-Mei W. Hwu
IEEE Trans. Computers3
2004 Field-testing IMPACT EPIC research results in Itanium 2
abstract
Explicitly-Parallel Instruction Computing (EPIC) provides architectural features, including predication and explicit control speculation, intended to enhance the compiler's ability to expose instruction-level parallelism (ILP) in control-intensive programs. Aggressive structural transformations using these features, though described in the literature, have not yet been fully characterized in complete systems. Using the Intel Itanium 2 microprocessor, the SPECint2000 benchmarks and the IMPACT Compiler for IA-64, a research compiler competitive with the best commercial compilers on the platform, we provide an in situ evaluation of code generated using aggressive, EPIC-enabled techniques in a reality-constrained microarchitecture. Our work shows a 1.13 average speedup (up to 1.50) due to these compilation techniques, relative to traditionally-optimized code at the same inlining and pointer analysis levels, and a 1.55 speedup (up to 2.30) relative to GNU GCC, a solid traditional compiler. Detailed results show that the structural compilation approach provides benefits far beyond a decrease in branch misprediction penalties and that it both positively and negatively impacts instruction cache performance. We also demonstrate the increasing significance of runtime effects, such as data cache and TLB, in determining end performance and the interaction of these effects with control speculation.
John W. Sias, Sain-Zee Ueng, Geoff A. Kent, Ian M. Steiner, Erik M. Nystrom, Wen-Mei W. Hwu
ISCA5
2004 Importance of heap specialization in pointer analysis
abstract
Specialization of heap objects is critical for pointer analysis to effectively analyze complex memory activity. This paper discusses heap specialization with respect to call chains. Due to the sheer number of distinct call chains, exhaustive specialization can be cumbersome. On the other hand, insufficient specialization can miss valuable opportunities to prevent spurious data flow, which results in not only reduced accuracy but also increased overhead.In determining whether further specialization will be fruitful, an object's escape information can be exploited. From empirical study, we found that restriction based on escape information is often, but not always, sufficient at prohibiting the explosive nature of specialization.For in-depth case study, four representative benchmarks are selected. For each benchmark, we vary the degree of heap specialization and examine its impact on analysis results and time. To provide better visibility into the impact, we present the points-to set and pointed-to-by set sizes in the form of histograms.
Erik M. Nystrom, Wen-Mei W. Hwu
PASTE1
2004 Bottom-Up and Top-Down Context-Sensitive Summary-Based Pointer Analysis
Erik M. Nystrom, Wen-Mei W. Hwu
SAS1
2003 Beating in-order stalls with "flea-flicker" two-pass pipelining
abstract
Accommodating the uncertain latency of load instructions is one of the most vexing problems in in-order microarchitecture design and compiler development. Compilers can generate schedules with a high degree of instruction-level parallelism but cannot effectively accommodate unanticipated latencies; incorporating traditional out-of-order execution into the microarchitecture hides some of this latency but redundantly performs work done by the compiler and adds additional pipeline stages. Although effective techniques, such as prefetching and threading, have been proposed to deal with anticipable, long latency misses, the shorter, more diffuse stalls due to difficult-to-anticipate, first- or second-level misses are less easily hidden on in-order architectures. This paper addresses this problem by proposing a microarchitectural technique, referred to as two-pass pipelining, wherein the program executes on two in-order back-end pipelines coupled by a queue. The "advance" pipeline executes instructions greedily, without stalling on unanticipated latency dependences (executing independent instructions while otherwise blocking instructions are deferred). The "backup" pipeline allows concurrent resolution of instructions that were deferred in the other pipeline, resulting in the absorption of shorter misses and the overlap of longer ones. This paper argues that this design is both achievable and a good use of transistor resources and shows results indicating that it can deliver significant speedups for in-order processor designs.
Ronald D. Barnes, Erik M. Nystrom, John W. Sias, Sanjay J. Patel, Nacho Navarro, Wen-Mei W. Hwu
MICRO2
2002 Vacuum packing: extracting hardware-detected program phases for post-link optimization
abstract
This paper presents Vacuum Packing, a new approach to profile-based program optimization. Instead of using traditional aggregate or summarized execution profile weights, this approach uses a transparent hardware profiler to automatically detect execution phases and record branch profile information for each new phase. The code extraction algorithm then produces code packages that are specially formed for their corresponding phases. The algorithm compensates for the incomplete and often incoherent branch profile information that arises due to the nature of hardware profilers. The technique avoids unnecessary code replication by focusing on hot code, making efficient connections between the original code and the new code, linking code packages at select points to facilitate phase transitions, and providing a platform for efficient optimization. We demonstrate that using a concise set of profile information from a hardware profiler, we can generate code packages, specialized for each phase of execution, that capture more than 80% of the average total program execution. We further show that the approach is very effective in extracting code regions that capture the phasing behavior of programs, that the code size increase is moderate, and that the code regions benefit from sample optimizations.
Ronald D. Barnes, Erik M. Nystrom, Matthew C. Merten, Wen-Mei W. Hwu
MICRO2
2001 An Architectural Framework for Runtime Optimization
abstract
Wide-issue processors continue to achieve higher performance by exploiting greater instruction-level parallelism. Dynamic techniques such as out-of-order execution and hardware speculation have proven effective at increasing instruction throughput. Runtime optimization promises to provide an even higher level of performance by adaptively applying aggressive code transformations on a larger scope. This paper presents a new hardware mechanism for generating and deploying runtime optimized code. The mechanism can be viewed as a filtering system that resides in the retirement stage of the processor pipeline, accepts an instruction execution stream as input, and produces instruction profiles and sets of linked, optimized traces as output. The code deployment mechanism uses an extension to the branch prediction mechanism to migrate execution into the new code without modifying the original code. These new components do not add delay to the execution of the program except during short bursts of reoptimization. This technique provides a strong platform for runtime optimization because the hot execution regions are extracted, optimized, and written to main memory for execution and because these regions persist across context switches. The current design of the framework supports a suite of optimizations, including partial function inlining (even into shared libraries), code straightening optimizations, loop unrolling, and peephole optimizations.
Matthew C. Merten, Andrew R. Trick, Ronald D. Barnes, Erik M. Nystrom, Christopher N. George, John C. Gyllenhaal, Wen-Mei W. Hwu
IEEE Trans. Computers4
2000 A hardware mechanism for dynamic extraction and relayout of program hot spots
abstract
This paper presents a new mechanism for collecting and deploying runtime optimized code. The code-collecting component resides in the instruction retirement stage and lays out hot execution paths to improve instruction fetch rate as well as enable further code optimization. The code deployment component uses an extension to the Branch Target Buffer to migrate execution into the new code without modifying the original code. No significant delay is added to the total execution of the program due to these components. The code collection scheme enables safe runtime optimization along paths that span function boundaries. This technique provides a better platform for runtime optimization than trace caches, because the traces are longer and persist in main memory across context switches. Additionally, these traces are not as susceptible to transient behavior because they are restricted to frequently executed code. Empirical results show that on average this mechanism can achieve better instruction fetch rates using only 12KB of hardware than a trace cache requiring 15KB of hardware, while producing long, persistent traces more suited to optimization.
Matthew C. Merten, Andrew R. Trick, Erik M. Nystrom, Ronald D. Barnes, Wen-Mei W. Hwu
ISCA3