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

Neil Vachharajani

dblp:40/1197 · DBLP profile ↗
← Back
25ranked-venue papers
3as first author
0since 2021 · last 2015
—ORCID · none

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

Systems, architecture and hardware · 19 · 3 first-authorSoftware engineering, systems software and programming languages · 13Databases, data management, data science and information retrieval · 1

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
13 papers
Storage systems · 26% Performance modeling and evaluation · 17% Parallel and multicore computing · 16%
Software engineering, system software, and programming languages
6 papers
Compilers and program optimization · 31% Concurrent programming · 26% Debugging and program repair · 13%

Topics — the 30 heaviest of 42, each with the papers that count most for it

TopicWeightPapersLastEvidence papers
Storage systems › data reduction
deduplication and compression
0.212015
Purity: Building Fast, Highly-Available Enterprise Flash Storage from Commodity Components · SIGMOD Conference 2015
Storage systems › flash and SSD › flash memory
flash storage
0.212015
Purity: Building Fast, Highly-Available Enterprise Flash Storage from Commodity Components · SIGMOD Conference 2015
Storage systems
storage reliability
0.212015
Purity: Building Fast, Highly-Available Enterprise Flash Storage from Commodity Components · SIGMOD Conference 2015
Compilers and program optimization › dynamic optimization
profile-guided optimization
0.212013
Taming Hardware Event Samples for Precise and Versatile Feedback Directed Optimizations · IEEE Trans. Computers 2013
Concurrent programming
concurrency bugs
0.112011
RACEZ: a lightweight and non-invasive race detection tool for production applications · ICSE 2011
Concurrent programming › concurrency bug detection
data race detection
0.112011
RACEZ: a lightweight and non-invasive race detection tool for production applications · ICSE 2011
Debugging and program repair › runtime debugging
production debugging
0.112011
RACEZ: a lightweight and non-invasive race detection tool for production applications · ICSE 2011
Memory systems › cache management
cache sharing
0.112011
The impact of memory subsystem resource sharing on datacenter applications · ISCA 2011
Cloud and datacenter computing › datacenter workloads
datacenter applications
0.112011
The impact of memory subsystem resource sharing on datacenter applications · ISCA 2011
Memory systems › memory management
memory sharing
0.112011
The impact of memory subsystem resource sharing on datacenter applications · ISCA 2011
Parallel and multicore computing › task allocation
thread placement
0.112011
The impact of memory subsystem resource sharing on datacenter applications · ISCA 2011
Performance modeling and evaluation
workload characterization
0.112011
The impact of memory subsystem resource sharing on datacenter applications · ISCA 2011
Performance modeling and evaluation
simulation
0.122006
The Liberty Simulation Environment: A deliberate approach to high-level system modeling · ACM Trans. Comput. Syst. 2006
Microarchitectural exploration with Liberty · MICRO 2002
Processor architecture and microarchitecture
chip multiprocessor
0.122008
Support for High-Frequency Streaming in CMPs · MICRO 2006
Performance scalability of decoupled software pipelining · ACM Trans. Archit. Code Optim. 2008
Compilers and program optimization › parallelization
automatic parallelization
0.112007
Revisiting the Sequential Programming Model for Multi-Core · MICRO 2007
Program synthesis and code generation
inductive program synthesis
0.112007
Shape analysis with inductive recursion synthesis · PLDI 2007
Program verification › program logic
separation logic
0.112007
Shape analysis with inductive recursion synthesis · PLDI 2007
Program analysis › static analysis › pointer analysis
shape analysis
0.112007
Shape analysis with inductive recursion synthesis · PLDI 2007
Parallel and multicore computing › parallelization strategies
automatic thread extraction
0.112007
Revisiting the Sequential Programming Model for Multi-Core · MICRO 2007
Parallel and multicore computing
parallel programming models
0.112007
Revisiting the Sequential Programming Model for Multi-Core · MICRO 2007
Compilers and program optimization
instruction scheduling
0.112006
Automatic instruction scheduler retargeting by reverse-engineering · PLDI 2006
Electronic design automation › system-level design
high-level system modeling
0.112006
The Liberty Simulation Environment: A deliberate approach to high-level system modeling · ACM Trans. Comput. Syst. 2006
Parallel and multicore computing › parallel computing › parallel communication
inter-thread communication
0.112006
Support for High-Frequency Streaming in CMPs · MICRO 2006
Electronic design automation › hardware verification and test
fault detection
0.112005
Software-controlled fault tolerance · ACM Trans. Archit. Code Optim. 2005
Hardware reliability and fault tolerance › error detection
transient fault detection
0.112005
Design and Evaluation of Hybrid Fault-Detection Systems · ISCA 2005
Processor architecture and microarchitecture
performance monitoring unit
0.012013
Taming Hardware Event Samples for Precise and Versatile Feedback Directed Optimizations · IEEE Trans. Computers 2013
Systems and software security
information flow control
0.012004
RIFLE: An Architectural Framework for User-Centric Information-Flow Security · MICRO 2004
Programming languages and type systems
type inference
0.012004
The liberty structural specification language: a high-level modeling language for component reuse · PLDI 2004
Processor architecture and microarchitecture
hardware-assisted security
0.012004
RIFLE: An Architectural Framework for User-Centric Information-Flow Security · MICRO 2004
Electronic design automation › hardware description language
structural description language
0.012004
The liberty structural specification language: a high-level modeling language for component reuse · PLDI 2004

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

interprocedural optimization · 0.3heuristics · 0.3hardware event sampling · 0.3speculative parallelization · 0.1compiler optimization · 0.1program instrumentation · 0.1adaptive mapping heuristics · 0.1performance scalability analysis · 0.1separation logic · 0.1inductive program synthesis · 0.1timing control abstraction · 0.1streaming-aware memory enhancement · 0.1reverse engineering · 0.1heuristic probing · 0.1component-based reuse · 0.1binary translation · 0.0
YearPublicationVenuePosition
2015 Purity: Building Fast, Highly-Available Enterprise Flash Storage from Commodity Components
abstract
Although flash storage has largely replaced hard disks in consumer class devices, enterprise workloads pose unique challenges that have slowed adoption of flash in ``performance tier'' storage appliances. In this paper, we describe Purity, the foundation of Pure Storage's Flash Arrays, the first all-flash enterprise storage system to support compression, deduplication, and high-availability.
John Colgrove, John D. Davis, John Hayes, Ethan L. Miller, Cary Sandvig, Russell Sears, Ari Tamches, Neil Vachharajani, Feng Wang 0003
SIGMOD Conference8
2013 Flash in an enterprise storage array - 10x performance for less than disk
Neil Vachharajani
Hot Chips Symposium1
2013 Taming Hardware Event Samples for Precise and Versatile Feedback Directed Optimizations
abstract
Feedback-directed optimization (FDO) is effective in improving application runtime performance, but has not been widely adopted due to the tedious dual-compilation model, the difficulties in generating representative training data sets, and the high runtime overhead of profile collection. The use of hardware-event sampling overcomes these drawbacks by providing a lightweight approach to collect execution profiles in the production environment, which naturally consumes representative input. Yet, hardware event samples are typically not precise at the instruction or basic-block granularity. These inaccuracies lead to missed performance when compared to instrumentation-based FDO. In this paper, we use Performance Monitoring Unit (PMU)-based sampling to collect the instruction frequency profiles. By collecting profiles using multiple events, and applying heuristics to predict the accuracy, we improve the accuracy of the profile. We also show how emerging techniques can be used to further improve the accuracy of the sample-based profile. Additionally, these emerging techniques are used to collect value profiles, as well as to assist a lightweight interprocedural optimizer. All these profiles are represented in a portable form, thus they can be used across different platforms. We demonstrate that sampling-based FDO can achieve an average of 92 percent of the performance gains obtained using instrumentation-based exact profiles for both SPEC CINT2000 and CINT2006 benchmarks. The overhead of collection is only 0.93 percent on average, while compiler-based instrumentation incurs 2.0-351.5 percent overhead (and 10x overhead on an industrial web search application).
Dehao Chen, Neil Vachharajani, Robert Hundt, Xinliang D. Li, Stéphane Eranian
IEEE Trans. Computers2
2011 MAO - An extensible micro-architectural optimizer
abstract
Performance matters, and so does repeatability and predictability. Today's processors' micro-architectures have become so complex as to now contain many undocumented, not understood, and even puzzling performance cliffs. Small changes in the instruction stream, such as the insertion of a single NOP instruction, can lead to significant performance deltas, with the effect of exposing compiler and performance optimization efforts to perceived unwanted randomness. This paper presents MAO, an extensible micro-architectural assembly to assembly optimizer, which seeks to address this problem for x86/64 processors. In essence, MAO is a thin wrapper around a common open source assembler infrastructure. It offers basic operations, such as creation or modification of instructions, simple data-flow analysis, and advanced infra-structure, such as loop recognition, and a repeated relaxation algorithm to compute instruction addresses and lengths. This infrastructure enables a plethora of passes for pattern matching, alignment specific optimizations, peep-holes, experiments (such as random insertion of NOPs), and fast prototyping of more sophisticated optimizations. MAO can be integrated into any compiler that emits assembly code, or can be used standalone. MAO can be used to discover micro-architectural details semi-automatically. Initial performance results are encouraging.
Robert Hundt, Easwaran Raman, Martin Thuresson, Neil Vachharajani
CGO4
2011 RACEZ: a lightweight and non-invasive race detection tool for production applications
abstract
Concurrency bugs, particularly data races, are notoriously difficult to debug and are a significant source of unreliability in multithreaded applications. Many tools to catch data races rely on program instrumentation to obtain memory instruction traces. Unfortunately, this instrumentation introduces significant runtime overhead, is extremely invasive, or has a limited domain of applicability making these tools unsuitable for many production systems. Consequently, these tools are typically used during application testing where many data races go undetected.
Tianwei Sheng, Neil Vachharajani, Stéphane Eranian, Robert Hundt
ICSE2
2011 The impact of memory subsystem resource sharing on datacenter applications
abstract
In this paper we study the impact of sharing memory resources on five Google datacenter applications: a web search engine, bigtable, content analyzer, image stitching, and protocol buffer. While prior work has found neither positive nor negative effects from cache sharing across the PARSEC benchmark suite, we find that across these datacenter applications, there is both a sizable benefit and a potential degradation from improperly sharing resources. There are four main contributions of this paper. First, we present a study of the importance of thread-to-core mapping for applications in the datacenter as threads can be mapped to share or to not share caches and bus bandwidth. Second, we investigate the impact of co-locating threads from multiple applications with diverse memory behavior and discover that the best mapping for a given application changes de- pending on its co-runner. Third, we investigate the application characteristics that impact performance in the various thread-to-core mapping scenarios. Finally, we present both a heuristics-based and an adaptive approach to arrive at good thread-to-core decisions in the datacenter. We observe performance swings of up to 25% for web search, and 40% for other key applications, simply based on how application threads are mapped to cores. By employing our adaptive thread to core mapper the performance of the datacenter applications presented in this work improved by up to 22% over status quo thread-to-core mapping and performs within 3% of optimal.
Lingjia Tang, Jason Mars, Neil Vachharajani, Robert Hundt, Mary Lou Soffa
ISCA3
2011 Hardware Performance Monitoring for the Rest of Us: A Position and Survey
Tipp Moseley, Neil Vachharajani, William Jalby
NPC2
2010 Taming hardware event samples for FDO compilation
abstract
Feedback-directed optimization (FDO) is effective in improving application runtime performance, but has not been widely adopted due to the tedious dual-compilation model, the difficulties in generating representative training data sets, and the high runtime overhead of profile collection. The use of hardware-event sampling to generate estimated edge profiles overcomes these drawbacks. Yet, hardware event samples are typically not precise at the instruction or basic-block granularity. These inaccuracies lead to missed performance when compared to instrumentation-based [email protected] In this paper, we use multiple hardware event profiles and supervised learning techniques to generate heuristics for improved precision of basic-block-level sample profiles, and to further improve the smoothing algorithms used to construct edge profiles. We demonstrate that sampling-based FDO can achieve an average of 78% of the performance gains obtained using instrumentation-based exact edge profiles for SPEC2000 benchmarks, matching or beating instrumentation-based FDO in many cases. The overhead of collection is only 0.74% on average, while compiler based instrumentation incurs 6.8%-53.5% overhead (and 10x overhead on an industrial web search application), and dynamic instrumentation incurs 28.6%-1639.2% overhead.
Dehao Chen, Neil Vachharajani, Robert Hundt, Shih-Wei Liao, Vinodha Ramasamy, Paul Yuan
CGO2
2010 Contention aware execution: online contention detection and response
abstract
Cross-core application interference due to contention for shared on-chip and off-chip resources pose a significant challenge to providing application level quality of service (QoS) guarantees on commodity multicore micro-architectures. Unexpected cross-core interference is especially problematic when considering latency-sensitive applications that are present in the web service data center application domains, such as web-search. The commonly used solution is to simply disallow the co-location of latency-sensitive applications and throughput-oriented batch applications on a single chip, leaving much of the processing capabilities of multicore micro-architectures underutilized. In this work we present a Contention Aware Execution Runtime (CAER) environment that provides a lightweight runtime solution that minimizes cross-core interference due to contention, while maximizing utilization. CAER leverages the ubiquitous performance monitoring capabilities present in current multicore processors to infer and respond to contention and requires no added hardware support. We present the design and implementation of the CAER environment, two separate contention detection heuristics, and approaches to respond to contention online. We evaluate our solution using the SPEC2006 benchmark suite. Our experiments show that when allowing co-location with CAER, as opposed to disallowing co-location, we are able to increase the utilization of the multicore CPU by 58% on average. Meanwhile CAER brings the overhead due to allowing co-location from 17% down to just 4% on average.
Jason Mars, Neil Vachharajani, Robert Hundt, Mary Lou Soffa
CGO2
2008 Spice: speculative parallel iteration chunk execution
abstract
The recent trend in the processor industry of packing multiple processor cores in a chip has increased the importance of automatic techniques for extracting thread level parallelism. A promising approach for extracting thread level parallelism in general purpose applications is to apply memory alias or value speculation to break dependences amongst threads and executes them concurrently.
Easwaran Raman, Neil Vachharajani, Ram Rangan, David I. August
CGO2
2008 Performance scalability of decoupled software pipelining
abstract
Any successful solution to using multicore processors to scale general-purpose program performance will have to contend with rising intercore communication costs while exposing coarse-grained parallelism. Recently proposed pipelined multithreading (PMT) techniques have been demonstrated to have general-purpose applicability and are also able to effectively tolerate inter-core latencies through pipelined interthread communication. These desirable properties make PMT techniques strong candidates for program parallelization on current and future multicore processors and understanding their performance characteristics is critical to their deployment. To that end, this paper evaluates the performance scalability of a general-purpose PMT technique called decoupled software pipelining (DSWP) and presents a thorough analysis of the communication bottlenecks that must be overcome for optimal DSWP scalability.
Ram Rangan, Neil Vachharajani, Guilherme Ottoni, David I. August
ACM Trans. Archit. Code Optim.2
2007 Speculative Decoupled Software Pipelining
Neil Vachharajani, Ram Rangan, Easwaran Raman, Matthew J. Bridges, Guilherme Ottoni, David I. August
PACT1
2007 Revisiting the Sequential Programming Model for Multi-Core
abstract
Single-threaded programming is already considered a complicated task. The move to multi-threaded programming only increases the complexity and cost involved in software development due to rewriting legacy code, training of the programmer, increased debugging of the program, and efforts to avoid race conditions, deadlocks, and other problems associated with parallel programming. To address these costs, other approaches, such as automatic thread extraction, have been explored. Unfortunately, the amount of parallelism that has been automatically extracted is generally insufficient to keep many cores busy. This paper argues that this lack of parallelism is not an intrinsic limitation of the sequential programming model, but rather occurs for two reasons. First, there exists no framework for automatic thread extraction that brings together key existing state-of-the-art compiler and hardware techniques. This paper shows that such a framework can yield scalable parallelization on several SPEC CINT2000 benchmarks. Second, existing sequential programming languages force programmers to define a single legal program outcome, rather than allowing for a range of legal outcomes. This paper shows that natural extensions to the sequential programming model enable parallelization for the remainder of the SPEC CINT2000 suite. Our experience demonstrates that, by changing only 60 source code lines, all of the C benchmarks in the SPEC CINT2000 suite were parallelizable by automatic thread extraction. This process, constrained by the limits of modern optimizing compilers, yielded a speedup of 454% on these applications.
Matthew J. Bridges, Neil Vachharajani, Yun Zhang 0005, Thomas B. Jablin, David I. August
MICRO2
2007 Shape analysis with inductive recursion synthesis
abstract
Separation logic with recursively defined predicates allows for concise yet precise description of the shapes of data structures. However, most uses of separation logic for program analysis rely on pre-defined recursive predicates, limiting the class of programs analyzable to those that manipulate only a priori data structures. This paper describes a general algorithm based on inductive program synthesis that automatically infers recursive shape invariants, yielding a shape analysis based on separation logic that can be applied to any program.
Bolei Guo, Neil Vachharajani, David I. August
PLDI2
2006 Selective Runtime Memory Disambiguation in a Dynamic Binary Translator
Bolei Guo, Youfeng Wu, Cheng Wang 0013, Matthew J. Bridges, Guilherme Ottoni, Neil Vachharajani, David I. August
CC6
2006 Support for High-Frequency Streaming in CMPs
abstract
As the industry moves toward larger-scale chip multiprocessors, the need to parallelize applications grows. High inter-thread communication delays, exacerbated by over-stressed high-latency memory subsystems and ever-increasing wire delays, require parallelization techniques to create partially or fully independent threads to improve performance. Unfortunately, developers and compilers alike often fail to find sufficient independent work of this kind. Recently proposed pipelined streaming techniques have shown significant promise for both manual and automatic parallelization. These techniques have wide-scale applicability because they embrace inter-thread dependences (albeit acyclic dependences) and tolerate long-latency communication of these dependences. This paper addresses the lack of architectural support for this type of concurrency, which has blocked its adoption and hindered related language and compiler research. We observe that both manual and automatic techniques create high-frequency streaming threads, with communication occurring every 5 to 20 instructions. Even while easily tolerating inter-thread transit delays, high-frequency communication makes thread performance very sensitive to intrathread delays from the repeated execution of the communication operations. Using this observation, we define the design-space and evaluate several mechanisms to find a better trade-off between performance and operating system, hardware, and design costs. From this, we find a light-weight streaming-aware enhancement to conventional memory subsystems that doubles the speed of these codes and is within 2% of the best-performing, but heavy-weight, hardware solution.
Ram Rangan, Neil Vachharajani, Adam Stoler, Guilherme Ottoni, David I. August, George Z. N. Cai
MICRO2
2006 Automatic instruction scheduler retargeting by reverse-engineering
abstract
In order to generate high-quality code for modern processors, a compiler must aggressively schedule instructions, maximizing resource utilization for execution efficiency. For a compiler to produce such code, it must avoid structural hazards by being aware of the processor's available resources and of how these resources are utilized by each instruction. Unfortunately, the most prevalent approach to constructing such a scheduler, manually discovering and specifying this information, is both tedious and error-prone. This paper presents a new approach which, when given a processor or processor model, automatically determines this information. After establishing that the problem of perfectly determining a processor's structural hazards through probing is not solvable, this paper proposes a heuristic algorithm that discovers most of this information in practice. This can be used either to alleviate the problems associated with manual creation or to verify an existing specification. Scheduling with these automatically derived structural hazards yields almost all of the performance gain achieved using perfect hazard information.
Matthew J. Bridges, Neil Vachharajani, Guilherme Ottoni, David I. August
PLDI2
2006 The Liberty Simulation Environment: A deliberate approach to high-level system modeling
abstract
In digital hardware system design, the quality of the product is directly related to the number of meaningful design alternatives properly considered. Unfortunately, existing modeling methodologies and tools have properties which make them less than ideal for rapid and accurate design-space exploration. This article identifies and evaluates the shortcomings of existing methods to motivate the Liberty Simulation Environment (LSE). LSE is a high-level modeling tool engineered to address these limitations, allowing for the rapid construction of accurate high-level simulation models. LSE simplifies model specification with low-overhead component-based reuse techniques and an abstraction for timing control. As part of a detailed description of LSE, this article presents these features, their impact on model specification effort, their implementation, and optimizations created to mitigate their otherwise deleterious impact on simulator execution performance.
Manish Vachharajani, Neil Vachharajani, David A. Penry, Jason A. Blome, Sharad Malik, David I. August
ACM Trans. Comput. Syst.2
2005 SWIFT: Software Implemented Fault Tolerance
abstract
To improve performance and reduce power, processor designers employ advances that shrink feature sizes, lower voltage levels, reduce noise margins, and increase clock rates. However, these advances make processors more susceptible to transient faults that can affect correctness. While reliable systems typically employ hardware techniques to address soft-errors, software techniques can provide a lower-cost and more flexible alternative. This paper presents a novel, software-only, transient-fault-detection technique, called SWIFT. SWIFT efficiently manages redundancy by reclaiming unused instruction-level resources present during the execution of most programs. SWIFT also provides a high level of protection and performance with an enhanced control-flow checking mechanism. We evaluate an implementation of SWIFT on an Itanium 2 which demonstrates exceptional fault coverage with a reasonable performance cost. Compared to the best known single-threaded approach utilizing an ECC memory system, SWIFT demonstrates a 51% average speedup.
George A. Reis, Neil Vachharajani, Ram Rangan, David I. August
CGO3
2005 Design and Evaluation of Hybrid Fault-Detection Systems
abstract
As chip densities and clock rates increase, processors are becoming more susceptible to transient faults that can affect program correctness. Up to now, system designers have primarily considered hardware-only and software-only fault-detection mechanisms to identify and mitigate the deleterious effects of transient faults. These two fault-detection systems, however, are extremes in the design space, representing sharp trade-offs between hardware cost, reliability, and performance. In this paper, we identify hybrid hardware/software fault-detection mechanisms as promising alternatives to hardware-only and software-only systems. These hybrid systems offer designers more options to fit their reliability needs within their hardware and performance budgets. We propose and evaluate CRAFT, a suite of three such hybrid techniques, to illustrate the potential of the hybrid approach. For fair, quantitative comparisons among hardware, software, and hybrid systems, we introduce a new metric, mean work to failure, which is able to compare systems for which machine instructions do not represent a constant unit of work. Additionally, we present a new simulation framework which rapidly assesses reliability and does not depend on manual identification of failure modes. Our evaluation illustrates that CRAFT, and hybrid techniques in general, offer attractive options in the fault-detection design space.
George A. Reis, Neil Vachharajani, Ram Rangan, David I. August, Shubhendu S. Mukherjee
ISCA3
2005 Software-controlled fault tolerance
abstract
Traditional fault-tolerance techniques typically utilize resources ineffectively because they cannot adapt to the changing reliability and performance demands of a system. This paper proposes software-controlled fault tolerance, a concept allowing designers and users to tailor their performance and reliability for each situation. Several software-controllable fault-detection techniques are then presented: SWIFT, a software-only technique, and CRAFT, a suite of hybrid hardware/software techniques. Finally, the paper introduces PROFiT, a technique which adjusts the level of protection and performance at fine granularities through software control. When coupled with software-controllable techniques like SWIFT and CRAFT, PROFiT offers attractive and novel reliability options.
George A. Reis, Neil Vachharajani, Ram Rangan, David I. August, Shubhendu S. Mukherjee
ACM Trans. Archit. Code Optim.3
2004 RIFLE: An Architectural Framework for User-Centric Information-Flow Security
abstract
Even as modern computing systems allow the manipulation and distribution of massive amounts of information, users of these systems are unable to manage the confidentiality of their data in a practical fashion. Conventional access control security mechanisms cannot prevent the illegitimate use of privileged data once access is granted. For example, information provided by a user during an online purchase may be covertly delivered to malicious third parties by an untrustworthy web browser. Existing information-flow security mechanisms do provide this assurance, but only for programmer-specified policies enforced during program development as a static analysis on special-purpose type-safe languages. Not only are these techniques not applicable to many commonly used programs, but they leave the user with no defense against malicious programmers or altered binaries. In this paper, we propose RIFLE, a runtime information-flow security system designed from the user's perspective. By addressing information-flow security using architectural support, RIFLE gives users a practical way to enforce their own information-flow security policy on all programs. We prove that, contrary to statements in the literature, run-time systems like RIFLE are no less secure than existing language-based techniques. Using a model of the architectural framework and a binary translator, we demonstrate RIFLE's correctness and illustrate that the performance cost is reasonable.
Neil Vachharajani, Matthew J. Bridges, Ram Rangan, Guilherme Ottoni, Jason A. Blome, George A. Reis, Manish Vachharajani, David I. August
MICRO1
2004 The liberty structural specification language: a high-level modeling language for component reuse
abstract
Rapid exploration of the design space with simulation models is essential for quality hardware systems research and development. Despite striking commonalities across hardware systems, designers routinely fail to achieve high levels of reuse across models constructed in existing general-purpose and domain-specific languages. This lack of reuse adversely impacts hardware system design by slowing the rate at which ideas are evaluated. This paper presents an examination of existing languages to reveal their fundamental limitations regarding reuse in hardware modeling. With this understanding, a solution is described in the context of the design and implementation of the Liberty Structural Specification Language (LSS), the input language for a publicly available high-level digital-hardware modeling tool called the Liberty Simulation Environment. LSS is the first language to enable low-overhead reuse by simultaneously supporting static inference based on hardware structure and flexibility via parameterizable structure. Through LSS, this paper also introduces a new type inference algorithm and a new programming language technique, called use-based specialization, which, in a manner analogous to type inference, customizes reusable components by statically inferring structural properties that otherwise would have had to have been specified manually.
Manish Vachharajani, Neil Vachharajani, David I. August
PLDI2
2003 Compiler Optimization-Space Exploration
abstract
To meet the demands of modern architectures, optimizing compilers must incorporate an ever larger number of increasingly complex transformation algorithms. Since code transformations may often degrade performance or interfere with subsequent transformations, compilers employ predictive heuristics to guide optimizations by predicting their effects a priori. Unfortunately, the unpredictability of optimization interaction and the irregularity of today's wide-issue machines severely limit the accuracy of these heuristics. As a result, compiler writers may temper high variance optimizations with overly conservative heuristics or may exclude these optimizations entirely. While this process results in a compiler capable of generating good average code quality across the target benchmark set, it is at the cost of missed optimization opportunities in individual code segments. To replace predictive heuristics, researchers have proposed compilers which explore many optimization options, selecting the best one a posteriori. Unfortunately, these existing iterative compilation techniques are not practical for reasons of compile time and applicability. We present the Optimization-Space Exploration (OSE) compiler organization, the first practical iterative compilation strategy applicable to optimizations in general-purpose compilers. Instead of replacing predictive heuristics, OSE uses the compiler writer's knowledge encoded in the heuristics to select a small number of promising optimization alternatives for a given code segment. Compile time is limited by evaluating only these alternatives for hot code segments using a general compile-time performance estimator An OSE-enhanced version of Intel's highly-tuned, aggressively optimizing production compiler for IA-64 yields a significant performance improvement, more than 20% in some cases, on Itanium for SPEC codes.
Spyridon Triantafyllis, Manish Vachharajani, Neil Vachharajani, David I. August
CGO3
2002 Microarchitectural exploration with Liberty
abstract
To find the best designs, architects must rapidly simulate many design alternatives and have confidence in the results. Unfortunately, the most prevalent simulator construction methodology, hand-writing monolithic simulators in sequential programming languages, yields simulators that are hard to retarget, limiting the number of designs explored, and hard to understand, instilling little confidence in the model. Simulator construction tools have been developed to address these problems, but analysis reveals that they do not address the root cause, the error-prone mapping between the concurrent, structural hardware domain and the sequential, functional software domain. This paper presents an analysis of these problems and their solution, the Liberty Simulation Environment (LSE). LSE automatically constructs a simulator from a machine description that closely resembles the hardware, ensuring fidelity in the model. Furthermore, through a strict but general component communication contract, LSE enables the creation of highly reusable component libraries, easing the task of rapidly exploring ever more exotic designs.
Manish Vachharajani, Neil Vachharajani, David A. Penry, Jason A. Blome, David I. August
MICRO2