Mauricio J. Serrano

dblp:21/1604 · DBLP profile ↗
← Back
21ranked-venue papers
4as first author
3since 2021 · last 2022
—ORCID · none

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

Software engineering, systems software and programming languages · 13 · 3 first-author · 1 since 2021Systems, architecture and hardware · 10 · 2 first-author · 1 since 2021Artificial intelligence and machine learning · 2 · 2 since 2021Graphics, computer vision, multimedia, augmented reality and games · 2 · 2 since 2021Applied, interdisciplinary, general and emerging computing · 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
5 papers
Hardware accelerators and domain-specific architectures · 60% Emerging computing paradigms · 28% Memory systems · 6%
Software engineering, system software, and programming languages
7 papers
Runtime systems and virtual machines · 45% Program analysis · 25% Compilers and program optimization · 18%
Artificial intelligence
1 paper
Deep learning architectures and training · 100%

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

TopicWeightPapersLastEvidence papers
Hardware accelerators and domain-specific architectures
machine learning accelerator
0.922021
RaPiD: AI Accelerator for Ultra-low Precision Training and Inference · ISCA 2021
Efficient AI System Design With Cross-Layer Approximate Computing · Proc. IEEE 2020
Hardware accelerators and domain-specific architectures › machine learning accelerator
DNN training accelerator
0.512021
RaPiD: AI Accelerator for Ultra-low Precision Training and Inference · ISCA 2021
Emerging computing paradigms
approximate computing
0.412020
Efficient AI System Design With Cross-Layer Approximate Computing · Proc. IEEE 2020
Hardware accelerators and domain-specific architectures
approximate computing accelerator
0.412020
Efficient AI System Design With Cross-Layer Approximate Computing · Proc. IEEE 2020
Emerging computing paradigms › approximate computing
cross-layer approximate computing
0.412020
Efficient AI System Design With Cross-Layer Approximate Computing · Proc. IEEE 2020
Energy-efficient computing › energy-efficient architecture
energy-efficient accelerator
0.112021
RaPiD: AI Accelerator for Ultra-low Precision Training and Inference · ISCA 2021
Machine learning › Deep learning architectures and training
neural network inference
0.112020
Efficient AI System Design With Cross-Layer Approximate Computing · Proc. IEEE 2020
Runtime systems and virtual machines › dynamic compilation › just-in-time compilation
trace-based compilation
0.112011
Improving the performance of trace-based systems by false loop filtering · ASPLOS 2011
Runtime systems and virtual machines › dynamic compilation › just-in-time compilation
trace selection
0.112011
Improving the performance of trace-based systems by false loop filtering · ASPLOS 2011
Program analysis › static analysis › pointer analysis
escape analysis
0.122003
Stack allocation and synchronization optimizations for Java using escape analysis · ACM Trans. Program. Lang. Syst. 2003
Escape Analysis for Java · OOPSLA 1999
Concurrent programming
lock elimination
0.122003
Stack allocation and synchronization optimizations for Java using escape analysis · ACM Trans. Program. Lang. Syst. 2003
Escape Analysis for Java · OOPSLA 1999
Program analysis › dynamic analysis › profiling
calling context profiling
0.112006
Accurate, efficient, and adaptive calling context profiling · PLDI 2006
Program analysis › dynamic analysis
profiling
0.112006
Accurate, efficient, and adaptive calling context profiling · PLDI 2006
Compilers and program optimization › parallel program optimization
synchronization optimization
0.122003
Stack allocation and synchronization optimizations for Java using escape analysis · ACM Trans. Program. Lang. Syst. 2003
Thin Locks: Featherweight Synchronization for Java · PLDI 1998
Runtime systems and virtual machines › virtual machine implementation
java virtual machine
0.022000
Quicksilver: a quasi-static compiler for Java · OOPSLA 2000
Thin Locks: Featherweight Synchronization for Java · PLDI 1998
Runtime systems and virtual machines
dynamic compilation
0.012004
Prefetch inection based on hardware monitoring and object metadata · PLDI 2004
Compilers and program optimization › dynamic optimization
profile-guided optimization
0.012004
Prefetch inection based on hardware monitoring and object metadata · PLDI 2004
Memory systems
cache
0.012004
Prefetch inection based on hardware monitoring and object metadata · PLDI 2004
Memory systems › cache
cache miss
0.012004
Prefetch inection based on hardware monitoring and object metadata · PLDI 2004
Memory systems › cache › prefetching
linked data structure prefetching
0.012004
Prefetch inection based on hardware monitoring and object metadata · PLDI 2004
Memory systems › cache
prefetching
0.012004
Prefetch inection based on hardware monitoring and object metadata · PLDI 2004
Concurrent programming
synchronization
0.021999
Escape Analysis for Java · OOPSLA 1999
Thin Locks: Featherweight Synchronization for Java · PLDI 1998
Program analysis
static analysis
0.012003
Stack allocation and synchronization optimizations for Java using escape analysis · ACM Trans. Program. Lang. Syst. 2003
Runtime systems and virtual machines › dynamic compilation
just-in-time compilation
0.012011
Improving the performance of trace-based systems by false loop filtering · ASPLOS 2011
Compilers and program optimization › compiler construction
compilation strategies
0.012000
Quicksilver: a quasi-static compiler for Java · OOPSLA 2000
Compilers and program optimization
interprocedural optimization
0.022006
Accurate, efficient, and adaptive calling context profiling · PLDI 2006
Quicksilver: a quasi-static compiler for Java · OOPSLA 2000
Runtime systems and virtual machines › runtime memory management
stack allocation
0.011999
Escape Analysis for Java · OOPSLA 1999
Runtime systems and virtual machines › managed runtime
java runtime
0.012003
Stack allocation and synchronization optimizations for Java using escape analysis · ACM Trans. Program. Lang. Syst. 2003
Processor architecture and microarchitecture
branch prediction
0.011994
The Impact of Unresolved Branches on Branch Prediction Scheme Performance · ISCA 1994
Processor architecture and microarchitecture › branch prediction
history-based branch prediction
0.011994
The Impact of Unresolved Branches on Branch Prediction Scheme Performance · ISCA 1994

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

quantization · 0.9pruning · 0.9mixed-precision arithmetic · 0.9custom number representation · 0.9performance modeling · 0.5call-stack comparison · 0.1hardware performance monitoring · 0.1garbage collection · 0.1JIT compiler analysis · 0.1connection graph · 0.1stack walking · 0.1sampling · 0.1adaptive bursting · 0.1interprocedural analysis · 0.0dynamic compilation · 0.0simulation · 0.0asymptotic time complexity analysis · 0.0
YearPublicationVenuePosition
2022 Accelerating Inference and Language Model Fusion of Recurrent Neural Network Transducers via End-to-End 4-bit Quantization
abstract
We report on aggressive quantization strategies that greatly accelerate inference of Recurrent Neural Network Transducers (RNN-T).We use a 4 bit integer representation for both weights and activations and apply Quantization Aware Training (QAT) to retrain the full model (acoustic encoder and language model) and achieve near-iso-accuracy.We show that customized quantization schemes that are tailored to the local properties of the network are essential to achieve good performance while limiting the computational overhead of QAT.Density ratio Language Model fusion has shown remarkable accuracy gains on RNN-T workloads but it severely increases the computational cost of inference.We show that our quantization strategies enable using large beam widths for hypothesis search while achieving streaming-compatible runtimes and a full model compression ratio of 7.6× compared to the full precision model.Via hardware simulations, we estimate a 3.4× acceleration from FP16 to INT4 for the end-to-end quantized RNN-T inclusive of LM fusion, resulting in a Real Time Factor (RTF) of 0.06.On the NIST Hub5 2000, Hub5 2001, and RT-03 test sets, we retain most of the gains associated with LM fusion, improving the average WER by >1.5%.
Andrea Fasoli, Chia-Yu Chen, Mauricio J. Serrano, Swagath Venkataramani, George Saon, Brian Kingsbury, Kailash Gopalakrishnan
INTERSPEECH3
2021 4-Bit Quantization of LSTM-Based Speech Recognition Models
abstract
We investigate the impact of aggressive low-precision representations of weights and activations in two families of large LSTM-based architectures for Automatic Speech Recognition (ASR): hybrid Deep Bidirectional LSTM -Hidden Markov Models (DBLSTM-HMMs) and Recurrent Neural Network -Transducers (RNN-Ts).Using a 4-bit integer representation, a naïve quantization approach applied to the LSTM portion of these models results in significant Word Error Rate (WER) degradation.On the other hand, we show that minimal accuracy loss is achievable with an appropriate choice of quantizers and initializations.In particular, we customize quantization schemes depending on the local properties of the network, improving recognition performance while limiting computational time.We demonstrate our solution on the Switchboard (SWB) and CallHome (CH) test sets of the NIST Hub5-2000 evaluation.DBLSTM-HMMs trained with 300 or 2000 hours of SWB data achieves <0.5% and <1% average WER degradation, respectively.On the more challenging RNN-T models, our quantization strategy limits degradation in 4-bit inference to 1.3%.
Andrea Fasoli, Chia-Yu Chen, Mauricio J. Serrano, Xiao Sun 0013, Naigang Wang, Swagath Venkataramani, George Saon, Brian Kingsbury, Wei Zhang 0022, Zoltán Tüske, Kailash Gopalakrishnan
Interspeech3
2021 RaPiD: AI Accelerator for Ultra-low Precision Training and Inference
abstract
The growing prevalence and computational demands of Artificial Intelligence (AI) workloads has led to widespread use of hardware accelerators in their execution. Scaling the performance of AI accelerators across generations is pivotal to their success in commercial deployments. The intrinsic error-resilient nature of AI workloads present a unique opportunity for performance/energy improvement through precision scaling. Motivated by the recent algorithmic advances in precision scaling for inference and training, we designed RaPiD1, a 4-core AI accelerator chip supporting a spectrum of precisions, namely, 16 and 8-bit floating-point and 4 and 2-bit fixed-point. The 36mm2RaPiD chip fabricated in 7nm EUV technology delivers a peak 3.5 TFLOPS/W in HFP8 mode and 16.5 TOPS/W in INT4 mode at nominal voltage. Using a performance model calibrated to within 1% of the measurement results, we evaluated DNN inference using 4-bit fixed-point representation for a 4-core 1 RaPiD chip system and DNN training using 8-bit floating point representation for a 768 TFLOPs AI system comprising 4 32-core RaPiD chips. Our results show INT4 inference for batch size of 1 achieves 3 - 13.5 (average 7) TOPS/W and FP8 training for a mini-batch of 512 achieves a sustained 102 - 588 (average 203) TFLOPS across a wide range of applications.
Swagath Venkataramani, Vijayalakshmi Srinivasan, Wei Wang 0333, Sanchari Sen, Ankur Agrawal, Monodeep Kar, Shubham Jain 0004, Alberto Mannari, Hoang Tran, Eri Ogawa, Kazuaki Ishizaki, Hiroshi Inoue, Marcel Schaal, Mauricio J. Serrano, Jungwook Choi, Xiao Sun 0013, Naigang Wang, Chia-Yu Chen, Allison Allain, James Bonanno, Nianzheng Cao, Robert Casatuta, Matthew Cohen, Bruce M. Fleischer, Michael Guillorn, Howard Haynie, Jinwook Jung, Mingu Kang, Kyu-Hyoun Kim, Siyu Koswatta, Sae Kyu Lee, Martin Lutz, Silvia M. Müller, Jinwook Oh, Ashish Ranjan 0001, Zhibin Ren, Scot Rider, Kerstin Schelm, Michael Scheuermann, Joel Silberman, Vidhi Zalani, Xin Zhang 0025, Ching Zhou, Matthew M. Ziegler, Vinay Shah, Moriyoshi Ohara, Pong-Fei Lu, Brian W. Curran, Sunil Shukla, Leland Chang, Kailash Gopalakrishnan
ISCA16
2020 Efficient AI System Design With Cross-Layer Approximate Computing
abstract
Advances in deep neural networks (DNNs) and the availability of massive real-world data have enabled superhuman levels of accuracy on many AI tasks and ushered the explosive growth of AI workloads across the spectrum of computing devices. However, their superior accuracy comes at a high computational cost, which necessitates approaches beyond traditional computing paradigms to improve their operational efficiency. Leveraging the application-level insight of error resilience, we demonstrate how approximate computing (AxC) can significantly boost the efficiency of AI platforms and play a pivotal role in the broader adoption of AI-based applications and services. To this end, we present RaPiD, a multi-tera operations per second (TOPS) AI hardware accelerator core (fabricated at 14-nm technology) that we built from the ground-up using AxC techniques across the stack including algorithms, architecture, programmability, and hardware. We highlight the workload-guided systematic explorations of AxC techniques for AI, including custom number representations, quantization/pruning methodologies, mixed-precision architecture design, instruction sets, and compiler technologies with quality programmability, employed in the RaPiD accelerator.
Swagath Venkataramani, Xiao Sun 0013, Naigang Wang, Chia-Yu Chen, Jungwook Choi, Mingu Kang, Ankur Agarwal, Jinwook Oh, Shubham Jain 0004, Tina Babinsky, Nianzheng Cao, Thomas W. Fox, Bruce M. Fleischer, George Gristede, Michael Guillorn, Howard Haynie, Hiroshi Inoue, Kazuaki Ishizaki, Michael J. Klaiber, Shih-Hsien Lo, Gary W. Maier, Silvia M. Müller, Michael Scheuermann, Eri Ogawa, Marcel Schaal, Mauricio J. Serrano, Joel Silberman, Christos Vezyrtzis, Wei Wang 0333, Fanchieh Yee, Matthew M. Ziegler, Ching Zhou, Moriyoshi Ohara, Pong-Fei Lu, Brian W. Curran, Sunil Shukla, Vijayalakshmi Srinivasan, Leland Chang, Kailash Gopalakrishnan
Proc. IEEE26
2011 Improving the performance of trace-based systems by false loop filtering
abstract
Trace-based compilation is a promising technique for language compilers and binary translators. It offers the potential to expand the compilation scopes that have traditionally been limited by method boundaries.Detecting repeating cyclic execution paths and capturing the detected repetitions into traces is a key requirement for trace selection algorithms to achieve good optimization and performance with small amounts of code. One important class of repetition detection is cyclic-path-based repetition detection, where a cyclic execution path (a path that starts and ends at the same instruction address) is detected as a repeating cyclic execution path.However, we found many cyclic paths that are not repeating cyclic execution paths, which we call false loops. A common class of false loops occurs when a method is invoked from multiple call-sites. A cycle is formed between two invocations of the method from different call-sites, but which does not represent loops or recursion. False loops can result in shorter traces and smaller compilation scopes, and degrade the performance.We propose false loop filtering, an approach to reject false loops in the repetition detection step of trace selection, and a technique called false loop filtering by call-stack-comparison, which rejects a cyclic path as a false loop if the call stacks at the beginning and the end of the cycle are different.We applied false loop filtering to our trace-based Java™ JIT compiler that is based on IBM's J9 JVM. We found that false loop filtering achieved an average improvement of 16% and 10% for the DaCapo benchmark when applied to two baseline trace selection algorithms, respectively, with up to 37% improvement for individual benchmarks. In the end, with false loop filtering, our trace-based JIT achieves a performance comparable to that of the method-based J9 JVM/JIT using the corresponding optimization level.
Hiroshige Hayashizaki, Peng Wu 0001, Hiroshi Inoue, Mauricio J. Serrano, Toshio Nakatani
ASPLOS4
2009 Building Approximate Calling Context from Partial Call Traces
abstract
We present an approach for building calling context information useful for program understanding, performance analysis and optimizations. Our approach exploits a lightweight profiling mechanism providing partial call traces. The goal is to reconstruct calling context information as accurately as possible, and to help the user navigate through it. We propose three steps to merge partial call traces into a smaller number of partial calling context trees. We intend to minimize errors such that the final partial contexts represent actual components of the real calling context tree with a very high probability. The first step concatenates call traces based on their common sequences. The second step converts call traces into partial calling context trees, and the last step merges partial context trees through maximal matching. To gauge how well the merged trees represent the full calling context tree, several criteria are presented. Our results indicate that call traces are successfully merged into a small number of large calling context trees. The merged trees are highly accurate.We have also developed a semi-automatic tool to navigate across partial calling context trees for program understanding and performance analysis purposes. Our results for several Java benchmarks show that our merging strategies exhibit a maximum 1% inaccuracy when compared to the exact solution.
Mauricio J. Serrano, Xiaotong Zhuang
CGO1
2009 Placement optimization using data context collected during garbage collection
abstract
We present a study on data context for object-oriented programs. We first introduce several data structures related to data context that can properly organize object fields, object types and the access sequence in a compact manner. Our approach combines the collection of data context with commonly used garbage collectors in a virtual machine environment. The garbage collector maintains extra runtime data for the building of data contexts with minimal overhead. To save memory space and also the time spent on retrieving data, a shorter representation is proposed which sacrifices a small amount of accuracy. To further demonstrate the usefulness of data context for dynamic optimizations, we implemented a placement optimization that captures data accesses that frequently miss, and places relevant objects to reduce data cache misses and improve performance.
Mauricio J. Serrano, Xiaotong Zhuang
ISMM1
2008 Perfdiff: a framework for performance difference analysis in a virtual machine environment
abstract
Although applications running on virtual machines, such as Java, can achieve platform independence, performance evaluation and analysis becomes difficult due to extra intermediate layers and the dynamic nature of virtual execution environment.
Xiaotong Zhuang, Mauricio J. Serrano, Jong-Deok Choi
CGO3
2007 Call-chain Software Instruction Prefetching in J2EE Server Applications
Priya Nagpurkar, Harold W. Cain, Mauricio J. Serrano, Jong-Deok Choi, Chandra Krintz
PACT3
2006 Accurate, efficient, and adaptive calling context profiling
abstract
Calling context profiles are used in many inter-procedural code optimizations and in overall program understanding. Unfortunately, the collection of profile information is highly intrusive due to the high frequency of method calls in most applications. Previously proposed calling-context profiling mechanisms consequently suffer from either low accuracy, high overhead, or both. We have developed a new approach for building the calling context tree at runtime, called adaptive bursting. By selectively inhibiting redundant profiling, this approach dramatically reduces overhead while preserving profile accuracy. We first demonstrate the drawbacks of previously proposed calling context profiling mechanisms. We show that a low-overhead solution using sampled stack-walking alone is less than 50% accurate, based on degree of overlap with a complete calling-context tree. We also show that a static bursting approach collects a highly accurate profile, but causes an unacceptable application slowdown. Our adaptive solution achieves 85% degree of overlap and provides an 88% hot-edge coverage when using a 0.1 hot-edge threshold, while dramatically reducing overhead compared to the static bursting approach.
Xiaotong Zhuang, Mauricio J. Serrano, Harold W. Cain, Jong-Deok Choi
PLDI2
2004 Whole-Stack Analysis and Optimization of Commercial Workloads on Server Systems
C. Richard Attanasio, Jong-Deok Choi, Niteesh Dubey, Kattamuri Ekanadham, Manish Gupta 0002, Tatsushi Inagaki, Kazuaki Ishizaki, Joefon Jann, Robert D. Johnson, Toshio Nakatani, Pratap Pattnaik, Mauricio J. Serrano, Stephen E. Smith, Ian M. Steiner, Yefim Shuf
NPC13
2004 Prefetch inection based on hardware monitoring and object metadata
abstract
Cache miss stalls hurt performance because of the large gap between memory and processor speeds - for example, the popular server benchmark SPEC JBB2000 spends 45% of its cycles stalled waiting for memory requests on the Itanium® 2 processor. Traversing linked data structures causes a large portion of these stalls. Prefetching for linked data structures remains a major challenge because serial data dependencies between elements in a linked data structure preclude the timely materialization of prefetch addresses. This paper presents Mississippi Delta (MS Delta), a novel technique for prefetching linked data structures that closely integrates the hardware performance monitor (HPM), the garbage collector's global view of heap and object layout, the type-level metadata inherent in type-safe programs, and JIT compiler analysis. The garbage collector uses the HPM's data cache miss information to identify cache miss intensive traversal paths through linked data structures, and then discovers regular distances (deltas) between these linked objects. JIT compiler analysis injects prefetch instructions using deltas to materialize prefetch addresses.We have implemented MS Delta in a fully dynamic profile-guided optimization system: the StarJIT dynamic compiler [1] and the ORP Java virtual machine [9]. We demonstrate a 28-29% reduction in stall cycles attributable to the high-latency cache misses targeted by MS Delta and a speedup of 11-14% on the cache miss intensive SPEC JBB2000 benchmark.
Ali-Reza Adl-Tabatabai, Richard L. Hudson, Mauricio J. Serrano, Sreenivas Subramoney
PLDI3
2003 Stack allocation and synchronization optimizations for Java using escape analysis
abstract
This article presents an escape analysis framework for Java to determine (1) if an object is not reachable after its method of creation returns, allowing the object to be allocated on the stack, and (2) if an object is reachable only from a single thread during its lifetime, allowing unnecessary synchronization operations on that object to be removed. We introduce a new program abstraction for escape analysis, the connection graph , that is used to establish reachability relationships between objects and object references. We show that the connection graph can be succinctly summarized for each method such that the same summary information may be used in different calling contexts without introducing imprecision into the analysis. We present an interprocedural algorithm that uses the above property to efficiently compute the connection graph and identify the nonescaping objects for methods and threads. The experimental results, from a prototype implementation of our framework in the IBM High Performance Compiler for Java, are very promising. The percentage of objects that may be allocated on the stack exceeds 70% of all dynamically created objects in the user code in three out of the ten benchmarks (with a median of 19%); 11% to 92% of all mutex lock operations are eliminated in those 10 programs (with a median of 51%), and the overall execution time reduction ranges from 2% to 23% (with a median of 7%) on a 333-MHz PowerPC workstation with 512 MB memory.
Jong-Deok Choi, Manish Gupta 0002, Mauricio J. Serrano, Vugranam C. Sreedhar, Samuel P. Midkiff
ACM Trans. Program. Lang. Syst.3
2002 Value-Profile Guided Stride Prefetching for Irregular Code
Youfeng Wu, Mauricio J. Serrano, Rakesh Krishnaiyer, Wei Li 0015, Jesse Fang
CC2
2001 A framework for efficient reuse of binary code in Java
abstract
This paper presents a compilation framework that enables efficient sharing of executable code across distinct Java Virtual Machine (JVM) instances. High-performance JVMs rely on run-time compilation, since static compilation cannot handle many dynamic features of Java. These JVMs suffer from large memory footprints and high startup costs, which are serious problems for embedded devices (such as hand held personal digital assistants and cellular phones) and scalable servers. A recently proposed approach called quasi-static compilation overcomes these difficulties by reusing precompiled binary images after performing validation checks and stitching on them (i.e., adapting them to a new execution context), falling back to interpretation or dynamic compilation whenever necessary. However, the requirement in our previous design to duplicate and modify the executable binary image for stitching is a major drawback when targeting embedded systems and scalable servers. In this paper, we describe a new approach that allows stitching to be done on an indirection table, leaving the executable code unmodified and therefore writable to readonly memory. On embedded devices, this saves precious space in writable memory. On scalable servers, this allows a single image of the executable to be shared among multiple JVMs, thus improving scalability. Furthermore, we describe a novel technique for dynamically linking classes that uses traps to detect when a class should be linked and initialized. Like back-patching, the technique allows all accesses after the first to proceed at full speed, but unlike back-patching, it avoids the modification of running code. We have implemented this approach in the Quicksilver quasi-static com-
Pramod G. Joisha, Samuel P. Midkiff, Mauricio J. Serrano, Manish Gupta 0002
ICS3
2001 Register-sensitive selection, duplication, and sequencing of instructions
abstract
In this paper, we present a new framework for selecting, duplicating and sequencing instructions so as to decrease register pressure. The motivation for this work is to target current and future high-performance processors where reductions in register pressure in the compiled programs can lead to improved performance.
Vivek Sarkar, Mauricio J. Serrano, Barbara B. Simons
ICS2
2000 Quicksilver: a quasi-static compiler for Java
abstract
This paper presents the design and implementation of the Quicksilver1 quasi-static compiler for Java. Quasi-static compilation is a new approach that combines the benefits of static and dynamic compilation, while maintaining compliance with the Java standard, including support of its dynamic features. A quasi-static compiler relies on the generation and reuse of persistent code images to reduce the overhead of compilation during program execution, and to provide identical, testable and reliable binaries over different program executions. At runtime, the quasi-static compiler adapts pre-compiled binaries to the current JVM instance, and uses dynamic compilation of the code when necessary to support dynamic Java features. Our system allows interprocedural program optimizations to be performed while maintaining binary compatibility. Experimental data obtained using a preliminary implementation of a quasi-static compiler in the Jalapeño JVM clearly demonstrates the benefits of our approach: we achieve a runtime compilation cost comparable to that of baseline (fast, non-optimizing) compilation, and deliver the runtime program performance of the highest optimization level supported by the Jalapeño optimizing compiler. For the SPECjvm98 benchmark suite, we obtain a factor of 104 to 158 reduction in the runtime compilation overhead relative to the Jalapeño optimizing compiler. Relative to the better of the baseline and the optimizing Jalapeño compilers, the overall performance (taking into account both runtime compilation and execution costs) is increased by 9.2% to 91.4% for the SPECjvm98 benchmarks with size 100, and by 54% to 356% for the (shorter running) SPECjvm98 benchmarks with size 10.
Mauricio J. Serrano, Rajesh Bordawekar, Samuel P. Midkiff, Manish Gupta 0002
OOPSLA1
1999 Escape Analysis for Java
abstract
This paper presents a simple and efficient data flow algorithm for escape analysis of objects in Java programs to determine (i) if an object can be allocated on the stack; (ii) if an object is accessed only by a single thread during its lifetime, so that synchronization operations on that object can be removed. We introduce a new program abstraction for escape analysis, the connection graph, that is used to establish reachability relationships between objects and object references. We show that the connection graph can be summarized for each method such that the same summary information may be used effectively in different calling contexts. We present an interprocedural algorithm that uses the above property to efficiently compute the connection graph and identify the non-escaping objects for methods and threads. The experimental results, from a prototype implementation of our framework in the IBM High Performance Compiler for Java, are very promising. The percentage of objects that may be allocated on the stack exceeds 70% of all dynamically created objects in three out of the ten benchmarks (with a median of 19%), 11% to 92% of all lock operations are eliminated in those ten programs (with a median of 51%), and the overall execution time reduction ranges from 2% to 23% (with a median of 7%) on a 333 MHz PowerPC workstation with 128 MB memory.
Jong-Deok Choi, Manish Gupta 0002, Mauricio J. Serrano, Vugranam C. Sreedhar, Samuel P. Midkiff
OOPSLA3
1998 Thin Locks: Featherweight Synchronization for Java
abstract
Language-supported synchronization is a source of serious performance problems in many Java programs. Even single-threaded applications may spend up to half their time performing useless synchronization due to the thread-safe nature of the Java libraries. We solve this performance problem with a new algorithm that allows lock and unlock operations to be performed with only a few machine instructions in the most common cases. Our locks only require a partial word per object, and were implemented without increasing object size. We present measurements from our implementation in the JDK 1.1.2 for AIX, demonstrating speedups of up to a factor of 5 in micro-benchmarks and up to a factor of 1.7 in real programs.
David F. Bacon, Ravi B. Konuru, Chet Murthy, Mauricio J. Serrano
PLDI4
1994 The Impact of Unresolved Branches on Branch Prediction Scheme Performance
abstract
Examines the benefits of the early resolution of branch instructions and the impact of unresolved branches on history-based branch prediction schemes by using two new metrics that are more revealing than branch prediction accuracy alone. The authors first briefly review a number of branch prediction schemes and introduce two new branch prediction scheme performance metrics. They then utilize these metrics to gauge the improvement in branch prediction scheme performance when only the outcomes of unresolved branches are predicted. Finally, they examine two approaches for handling multiple unresolved branches in history-based branch prediction schemes, and determine that prediction accuracy remains quite stable when older branch histories are used.>
Adam R. Talcott, Wayne Yamamoto, Mauricio J. Serrano, Roger C. Wood, Mario Nemirovsky
ISCA3
1993 Optimal Architectures and Algorithms for Mesh-Connected Parallel Computers with Separable Row/Column Buses
abstract
A two-dimensional mesh of processing elements (PE's) with separable row and column buses (i.e., broadcast mechanisms for rows and columns that can be logically divided into a number of local buses through the use of PE-controlled switches) has been shown to be quite effective for semigroup computation, prefix computation, and a wide class of other computations that do not require excessive communication or data routing. For meshes with separable row/column buses, the authors show how semigroup and prefix computations can be performed with the same asymptotic time complexity without the provision of buses for every row and every column and discuss the VLSI implications of this new architecture.>
Mauricio J. Serrano, Behrooz Parhami
IEEE Trans. Parallel Distributed Syst.1