Koen De Bosschere

dblp:b/KoenraadDeBosschere · also Koenraad De Bosschere · DBLP profile ↗
← Back
102ranked-venue papers
12as first author
0since 2021 · last 2020
0000-0002-6338-4297ORCID · verified

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

Systems, architecture and hardware · 52 · 3 first-authorSoftware engineering, systems software and programming languages · 38 · 6 first-authorSecurity and privacy · 6Theory of computation · 3 · 2 first-authorApplied, interdisciplinary, general and emerging computing · 3Graphics, computer vision, multimedia, augmented reality and games · 2

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.

Software engineering, system software, and programming languages
15 papers
Runtime systems and virtual machines · 37% Compilers and program optimization · 34% Program analysis · 19%
Network and information security
4 papers
Hardware security and side channels · 56% Systems and software security · 44%
Computer architecture, parallel and distributed computing, and storage systems
14 papers
Memory systems · 28% Processor architecture and microarchitecture · 19% Embedded and real-time systems · 18%

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

TopicWeightPapersLastEvidence papers
Runtime systems and virtual machines
dynamic compilation
0.522020
Adaptive Compiler Strategies for Mitigating Timing Side Channel Attacks · IEEE Trans. Dependable Secur. Comput. 2020
Using hpm-sampling to drive dynamic compilation · OOPSLA 2007
Hardware security and side channels
side-channel attack
0.412020
Adaptive Compiler Strategies for Mitigating Timing Side Channel Attacks · IEEE Trans. Dependable Secur. Comput. 2020
Hardware security and side channels › side-channel countermeasures
timing attack resistance
0.412020
Adaptive Compiler Strategies for Mitigating Timing Side Channel Attacks · IEEE Trans. Dependable Secur. Comput. 2020
Systems and software security
memory safety
0.312017
Taming Parallelism in a Multi-Variant Execution Environment · EuroSys 2017
Systems and software security › software diversity
multi-variant execution
0.312017
Taming Parallelism in a Multi-Variant Execution Environment · EuroSys 2017
Runtime systems and virtual machines › virtual machine implementation
java virtual machine
0.242007
Java object header elimination for reduced memory consumption in 64-bit virtual machines · ACM Trans. Archit. Code Optim. 2007
Javana: a system for building customized Java program analysis tools · OOPSLA 2006
How java programs interact with virtual machines at the microarchitectural level · OOPSLA 2003
Systems and software security › software protection
code obfuscation
0.212014
Pushing Java Type Obfuscation to the Limit · IEEE Trans. Dependable Secur. Comput. 2014
Compilers and program optimization › dynamic optimization
adaptive compilation
0.112020
Adaptive Compiler Strategies for Mitigating Timing Side Channel Attacks · IEEE Trans. Dependable Secur. Comput. 2020
Runtime systems and virtual machines › dynamic compilation
just-in-time compilation
0.112020
Adaptive Compiler Strategies for Mitigating Timing Side Channel Attacks · IEEE Trans. Dependable Secur. Comput. 2020
Program analysis › static analysis › interprocedural analysis
whole-program analysis
0.122007
A practical interprocedural dominance algorithm · ACM Trans. Program. Lang. Syst. 2007
Link-time binary rewriting techniques for program compaction · ACM Trans. Program. Lang. Syst. 2005
Embedded and real-time systems › embedded software
embedded virtualization
0.112010
Compilation and virtualization in the HiPEAC vision · DAC 2010
Cloud and datacenter computing
virtualization
0.112010
Compilation and virtualization in the HiPEAC vision · DAC 2010
Performance modeling and evaluation
workload characterization
0.132006
Method-level phase behavior in java workloads · OOPSLA 2004
How java programs interact with virtual machines at the microarchitectural level · OOPSLA 2003
Javana: a system for building customized Java program analysis tools · OOPSLA 2006
Hardware security and side channels › side-channel attack
timing side channel
0.112009
Practical Mitigations for Timing-Based Side-Channel Attacks on Modern x86 Processors · SP 2009
Compilers and program optimization › program transformation › control flow transformation
if-conversion
0.112009
Practical Mitigations for Timing-Based Side-Channel Attacks on Modern x86 Processors · SP 2009
Compilers and program optimization
binary rewriting
0.122005
Link-time binary rewriting techniques for program compaction · ACM Trans. Program. Lang. Syst. 2005
Sifting out the mud: low level C++ code reuse · OOPSLA 2002
Compilers and program optimization › interprocedural optimization
link-time optimization
0.122005
Link-time binary rewriting techniques for program compaction · ACM Trans. Program. Lang. Syst. 2005
Sifting out the mud: low level C++ code reuse · OOPSLA 2002
Operating systems › system security › operating system security › protection mechanism › isolation
process isolation
0.112017
Taming Parallelism in a Multi-Variant Execution Environment · EuroSys 2017
Compilers and program optimization › parallelization
automatic parallelization
0.112008
Extracting coarse-grain parallelism in general-purpose programs · PPoPP 2008
Compilers and program optimization › parallelization
coarse-grain parallelism extraction
0.112008
Extracting coarse-grain parallelism in general-purpose programs · PPoPP 2008
Memory systems
cache
0.122005
XOR-Based Hash Functions · IEEE Trans. Computers 2005
A Technique for High Bandwidth and Deterministic Low Latency Load/Store Accesses to Multiple Cache Banks · HPCA 2000
Program analysis › static analysis › interprocedural analysis
context-sensitive analysis
0.112007
A practical interprocedural dominance algorithm · ACM Trans. Program. Lang. Syst. 2007
Program analysis
data flow analysis
0.112007
A practical interprocedural dominance algorithm · ACM Trans. Program. Lang. Syst. 2007
Compilers and program optimization › compiler analysis
dominator trees
0.112007
A practical interprocedural dominance algorithm · ACM Trans. Program. Lang. Syst. 2007
Runtime systems and virtual machines
object representation
0.112007
Java object header elimination for reduced memory consumption in 64-bit virtual machines · ACM Trans. Archit. Code Optim. 2007
Compilers and program optimization › dynamic optimization
profile-guided optimization
0.112007
Using hpm-sampling to drive dynamic compilation · OOPSLA 2007
Program analysis
dynamic analysis
0.112006
Javana: a system for building customized Java program analysis tools · OOPSLA 2006
Program analysis › dynamic analysis
dynamic binary instrumentation
0.112006
Javana: a system for building customized Java program analysis tools · OOPSLA 2006
Program analysis › dynamic analysis
profiling
0.112006
Javana: a system for building customized Java program analysis tools · OOPSLA 2006
Compilers and program optimization › code size reduction
code compaction
0.112005
Link-time binary rewriting techniques for program compaction · ACM Trans. Program. Lang. Syst. 2005

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

offline profiling · 0.9JIT compilation · 0.9lockstep monitoring · 0.6diversified program variants · 0.6object factory insertion · 0.4interface merging · 0.4class hierarchy flattening · 0.4if-conversion · 0.3compiler backend defense · 0.3loop analysis · 0.2XOR-based hash functions · 0.1hardware performance monitor sampling · 0.1benchmarking · 0.1instrumentation · 0.1dynamic binary instrumentation · 0.1link-time analysis · 0.1cost-effectiveness evaluation · 0.1greedy algorithm · 0.0
YearPublicationVenuePosition
2020 Effective and efficient Java-type obfuscation
abstract
Summary To protect valuable assets embedded in software against reverse‐engineering attacks, software obfuscations aim at raising the apparent complexity of programs and at removing information that is useful for attackers. In this work, we propose to combine five transformations that obfuscate the type hierarchy of Java applications and eliminate much of the type information that can be inferred from the Java bytecode. We rely on some existing algorithms, present adaptations, and introduce new algorithms for some of the transformations, which are all made available in an open‐source prototype implementation ready for take‐up. We present an extensive experimental evaluation on benchmarks of real‐world complexity, using complementary metrics that cover the protection strength against both human and tool‐based reverse‐engineering attack methods. The results indicate that the obfuscation is effective as well as much more efficient than the previous state of the art. For the first time, this makes these obfuscations practically viable in real‐world deployment scenarios.
Christophe Foket, Koen De Bosschere, Bjorn De Sutter
Softw. Pract. Exp.2
2020 Adaptive Compiler Strategies for Mitigating Timing Side Channel Attacks
abstract
Existing compiler techniques can transform code to make its timing behavior independent of sensitive values to prevent information leakage through time side channels. Those techniques are hampered, however, by their static nature and dependence on details of the processor targeted during the compilation. This paper presents a dynamic compiler approach based on offline profiles and JIT compiler strategies. This approach reduces overhead significantly and enables a trade-off between provided protection and overhead. Furthermore, it supports adaptive policies in which the protection adapts to run-time changes in the requirements. A prototype implementation in the Jikes Research VM is evaluated on RSA encryption, HMAC key verification, and IDEA encryption.
Jeroen Van Cleemput, Bjorn De Sutter, Koen De Bosschere
IEEE Trans. Dependable Secur. Comput.3
2017 Taming Parallelism in a Multi-Variant Execution Environment
abstract
Exploit mitigations, by themselves, do not stop determined and well-resourced adversaries from compromising vulnerable software through memory corruption. Multi-variant execution environments (MVEEs) add additional assurance by executing multiple, diversified copies (variants) of the same program in lockstep while monitoring their behavior for signs of attacks (divergence). While executing multiple copies of the same program requires additional computational resources, modern MVEEs run many workloads at near-native speed and can detect adversaries before they leak secrets or achieve persistence on the host system.
Stijn Volckaert, Bart Coppens 0001, Bjorn De Sutter, Koen De Bosschere, Per Larsen, Michael Franz
EuroSys4
2017 Calling hardware procedures in a reconfigurable accelerator using RPC-FPGA
abstract
RPC-FPGA is a remote procedure call protocol implementation of the Open Network Computing ONC-RPC specification for use in FPGA accelerators. The implementation involves the generation of High-Level Synthesis (HLS) interface stubs to call a hardware procedure and stream the data between the processor and the FPGA. The RPC protocol is extended to accept variable-length arrays with multiple dimensions. This extension is required to support optimizing nested loop transformations on multidimensional arrays stored in the reconfigurable logic. The major benefits of RPC-FPGA are: hardware procedures running on an FPGA accelerator become accessible for any client in the network, multiple hardware procedures run in a truly parallel fashion and the development time of the communication interface between the processor and the FPGA is largely reduced. Using RPC-FPGA a speedup gain of 17 to 20 is demonstrated on a square matrix multiplication of N=4096 with network speeds 100 Mbps and 1 Gbps respectively.
Erik H. D'Hollander, Bruno Chevalier, Koen De Bosschere
FPT3
2016 SOFIA: Software and control flow integrity architecture
Ruan de Clercq, Ronald De Keulenaer, Bart Coppens 0001, Bohan Yang 0001, Pieter Maene, Koen De Bosschere, Bart Preneel, Bjorn De Sutter, Ingrid Verbauwhede
DATE6
2016 Evaluation of dynamic binary translation techniques for full system virtualisation on ARMv7-A
Niels Penneman, Danielius Kudinskas, Alasdair Rawsthorne, Bjorn De Sutter, Koen De Bosschere
J. Syst. Archit.5
2014 Pushing Java Type Obfuscation to the Limit
abstract
Bytecoded .Net and Java programs reveal type information through encoded type hierarchies, casts, field declarations and method signatures. This facilitates bytecode verification, but it also helps reverse engineers. To obfuscate the type information, we combine three transformations. Class hierarchy flattening removes as much of the type hierarchy from programs as possible. Interface merging and object factory insertion further remove type information from casts, method signatures, and object creation sites. We evaluate these techniques with a prototype tool for Java bytecode. On real-life programs from the DaCapo benchmark suite, we demonstrate that our approach effectively hinders human and tool analysis with limited overhead.
Christophe Foket, Bjorn De Sutter, Koen De Bosschere
IEEE Trans. Dependable Secur. Comput.3
2013 Formal virtualization requirements for the ARM architecture
Niels Penneman, Danielius Kudinskas, Alasdair Rawsthorne, Bjorn De Sutter, Koen De Bosschere
J. Syst. Archit.5
2012 Introduction to the special issue on high-performance and embedded architectures and compilers
abstract
No abstract available.
Per Stenström, Koen De Bosschere
ACM Trans. Archit. Code Optim.2
2010 The Paralax infrastructure: automatic parallelization with a helping hand
abstract
Speeding up sequential programs on multicores is a challenging problem that is in urgent need of a solution. Automatic parallelization of irregular pointer-intensive codes, exemplified by the SPECint codes, is a very hard problem. This paper shows that, with a helping hand, such auto-parallelization is possible and fruitful.
Hans Vandierendonck, Sean Rul, Koen De Bosschere
PACT3
2010 Compilation and virtualization in the HiPEAC vision
abstract
This paper describes the HiPEAC vision of embedded virtualization as it has developed during two years of discussion among the members of the HiPEAC cluster on binary translation and virtualization. We start from system virtualization and process virtualization and we gradually develop a vision in which the two merge into one virtualization layer for embedded systems. Such a unified virtualization offers solutions for consolidation, performance optimization, software engineering and dealing with legacy hardware components. Four adoption requirements are identified: support for real-time execution, low performance overhead, virtualization of accelerator cores and finally trustworthiness. Finally, we define four research challenges: full virtualization of heterogeneous multi-core platforms, portable performance for heterogeneous multi-cores, virtual machine management interfaces, and standards for embedded virtualization.
Christian Bertin, Christophe Guillon, Koen De Bosschere
DAC3
2010 Implicit hints: Embedding hint bits in programs without ISA changes
abstract
There is a large gap in knowledge about a program between the compiler, which can afford expensive analysis, and the processor, which by nature is constrained in the types of analysis it can perform. To increase processor performance, ISAs have been extended with hint bits to communicate some of the compiler's knowledge to the processor. In this paper, we propose and analyze a technique for adding or removing hints to a processor without changing the ISA, i.e. without breaking binary compatibility. Our technique exploits the freedom of allocating values to registers. We divide the registers in disjoint sets and assign one hint value to each set of registers. We implement our technique in the GCC compiler. Evaluation on two very different instruction sets, the Alpha ISA and the x86-64 ISA, shows that these hints can be encoded with high accuracy, although the accuracy varies strongly between instruction sets. We demonstrate that it is possible to encode multiple hints in register names and that the quality of register allocation is not degraded.
Hans Vandierendonck, Koen De Bosschere
ICCD2
2010 Accelerating Multiple Sequence Alignment with the Cell BE Processor
abstract
The Cell Broadband Engine (BE) Architecture is a new heterogeneous multi-core architecture targeted at compute-intensive workloads. The architecture of the Cell BE has several features that are unique in high-performance general-purpose processors, most notably the extensive support for vectorization, scratch pad memories and explicit programming of direct memory accesses (DMAs) and mailbox communication. While these features strongly increase programming complexity, it is generally claimed that significant speedups can be obtained by using Cell BE processors. This paper presents our experiences with using the Cell BE architecture to accelerate Clustal W, a bio-informatics program for multiple sequence alignment. We report on how we apply the unique features of the Cell BE to Clustal W and how important each is in obtaining high performance. By making extensive use of vectorization and by parallelizing the application across all cores, we demonstrate a speedup of 24.4 times when using 16 synergistic processor units on a QS21 Cell Blade compared to single-thread execution on the power processing unit. As the Cell BE exploits a large number of slim cores, our highly optimized implementation is just 3.8 times faster than a 3-thread version running on an Intel Core2 Duo, as the latter processor exploits a small number of fat cores.
Hans Vandierendonck, Sean Rul, Koen De Bosschere
Comput. J.3
2010 A profile-based tool for finding pipeline parallelism in sequential programs
Sean Rul, Hans Vandierendonck, Koen De Bosschere
Parallel Comput.3
2009 Practical Mitigations for Timing-Based Side-Channel Attacks on Modern x86 Processors
abstract
This paper studies and evaluates the extent to which automated compiler techniques can defend against timing-based side-channel attacks on modern x86 processors. We study how modern x86 processors can leak timing information through side-channels that relate to control flow and data flow. To eliminate key-dependent control flow and key-dependent timing behavior related to control flow, we propose the use of if-conversion in a compiler backend, and evaluate a proof-of-concept prototype implementation. Furthermore, we demonstrate two ways in which programs that lack key-dependent control flow and key-dependent cache behavior can still leak timing information on modern x86 implementations such as the Intel Core 2 Duo, and propose defense mechanisms against them.
Bart Coppens 0001, Ingrid Verbauwhede, Koen De Bosschere, Bjorn De Sutter
SP3
2009 System-scenario-based design of dynamic embedded systems
abstract
In the past decade, real-time embedded systems have become much more complex due to the introduction of a lot of new functionality in one application, and due to running multiple applications concurrently. This increases the dynamic nature of today's applications and systems, and tightens the requirements for their constraints in terms of deadlines and energy consumption. State-of-the-art design methodologies try to cope with these novel issues by identifying several most used cases and dealing with them separately, reducing the newly introduced complexity. This article presents a generic and systematic design-time/run-time methodology for handling the dynamic nature of modern embedded systems, which can be utilized by existing design methodologies to increase their efficiency. It is based on the concept of system scenarios , which group system behaviors that are similar from a multidimensional cost perspective—such as resource requirements, delay, and energy consumption—in such a way that the system can be configured to exploit this cost similarity. At design-time, these scenarios are individually optimized. Mechanisms for predicting the current scenario at run-time, and for switching between scenarios, are also derived. This design trajectory is augmented with a run-time calibration mechanism, which allows the system to learn on-the-fly during its execution, and to adapt itself to the current input stimuli, by extending the scenario set, changing the scenario definitions, and both the prediction and switching mechanisms. To show the generality of our methodology, we show how it has been applied on four very different real-life design problems. In all presented case studies, substantial energy reductions were obtained by exploiting scenarios.
Stefan Valentin Gheorghita, Martin Palkovic, Juan Hamers, Arnout Vandecappelle, Stylianos Mamagkakis, Twan Basten, Lieven Eeckhout, Henk Corporaal, Francky Catthoor, Frederik Vandeputte, Koen De Bosschere
ACM Trans. Design Autom. Electr. Syst.11
2008 Topic 4: High Performance Architectures and Compilers
Koen De Bosschere, Ayal Zaks, Michael C. Huang 0001, Luis Piñuel
Euro-Par1
2008 Experiences with Parallelizing a Bio-informatics Program on the Cell BE
Hans Vandierendonck, Sean Rul, Michiel Questier, Koen De Bosschere
HiPEAC4
2008 Towards Tamper Resistant Code Encryption: Practice and Experience
Jan Cappaert, Bart Preneel, Bertrand Anckaert, Matias Madou, Koen De Bosschere
ISPEC5
2008 Extracting coarse-grain parallelism in general-purpose programs
abstract
While the chip multiprocessor (CMP) has quickly become the predominant processor architecture, its continuing success largely depends on the parallelizability of complex programs. In the early 1990s great successes were obtained to extract parallelism from the inner loops of scientific computations. In this paper we show that significant amounts of coarse-grain parallelism exists in the outer program loops, even in general-purpose programs. This coarse-grain parallelism can be exploited efficiently on CMPs without additional hardware support.
Sean Rul, Hans Vandierendonck, Koen De Bosschere
PPoPP3
2008 Memory footprint reduction for embedded systems
abstract
The memory footprint is considered an important constraint for embedded systems. This is especially important in the context of increasing sophistication of embedded software, and the increasing use of modern software engineering techniques like component-based design. Since reusability is the major motivation for using components, most components are not optimized for the (limited) functionality they have to realize in an embedded system. All this leads to an increasing amount of code and data that might not be needed for a given functionality.
Koen De Bosschere
SCOPES1
2007 Object-Relative Addressing: Compressed Pointers in 64-Bit Java Virtual Machines
Kris Venstermans, Lieven Eeckhout, Koen De Bosschere
ECOOP3
2007 Exploiting Video Stream Similarity for Energy-Efficient Decoding
Juan Hamers, Lieven Eeckhout, Koen De Bosschere
MMM (2)3
2007 Using hpm-sampling to drive dynamic compilation
abstract
All high-performance production JVMs employ an adaptive strategy for program execution. Methods are first executed unoptimized and then an online profiling mechanism is used to find a subset of methods that should be optimized during the same execution. This paper empirically evaluates the design space of several profilers for initiating dynamic compilation and shows that existing online profiling schemes suffer from several limitations. They provide an insufficient number of samples, are untimely, and have limited accuracy at determining the frequently executed methods. We describe and comprehensively evaluate HPM-sampling, a simple but effective profiling scheme for finding optimization candidates using hardware performance monitors (HPMs) that addresses the aforementioned limitations. We show that HPM-sampling is more accurate; has low overhead; and improves performance by 5.7% on average and up to 18.3% when compared to the default system in Jikes RVM, without changing the compiler.
Dries Buytaert, Andy Georges, Michael Hind, Matthew Arnold, Lieven Eeckhout, Koen De Bosschere
OOPSLA6
2007 Whole-program linear-constant analysis with applications to link-time optimization
abstract
Current link-time optimization techniques can reduce the power consumption and code size of embedded software [2]. Due to a lack of information, the stack frames of procedures are left untouched by link-time program optimizers. In this paper we present a practical whole-program linear-constant analysis [9] that allows to analyze the stack layout of a procedure. The analysis deals with the peculiarities of link-time program representation, namely the lack of high-level information and the huge size of the control flow graph. Even on a complete linux kernel, our analysis is practical in terms of computation time. The collected information consists of restricted affine equations between two registers, but it enables optimizations complementary to existing link-time optimization techniques.On a set of ARM benchmarks, the number of store operations decreases by up to 7% while the execution time, program size and power consumption are all further improved.This paper discusses both the practical issues of applying whole-program linearconstant propagation as well as its use in program optimization and understanding.
Ludo Van Put, Dominique Chanet, Koen De Bosschere
SCOPES3
2007 Exploiting program phase behavior for energy reduction on multi-configuration processors
Frederik Vandeputte, Lieven Eeckhout, Koen De Bosschere
J. Syst. Archit.3
2007 Java object header elimination for reduced memory consumption in 64-bit virtual machines
abstract
Memory performance is an important design issue for contemporary computer systems given the huge processor/memory speed gap. This paper proposes a space-efficient Java object model for reducing the memory consumption of 64-bit Java virtual machines. We completely eliminate the object header through typed virtual addressing (TVA) or implicit typing. TVA encodes the object type in the object's virtual address by allocating all objects of a given type in a contiguous memory segment. This allows for removing the type information as well as the status field from the object header. Whenever type and status information is needed, masking is applied to the object's virtual address for obtaining an offset into type and status information structures. Unlike previous work on implicit typing, we apply TVA to a selected number of frequently allocated object types, hence, the name selective TVA (STVA); this limits the amount of memory fragmentation. In addition to applying STVA, we also compress the type information block (TIB) pointers for all objects that do not fall under TVA. We implement the space-efficient Java object model in the 64-bit version of the Jikes RVM on an AIX IBM platform and compare its performance against the traditionally used Java object model using a multitude of Java benchmarks. We conclude that the space-efficient Java object model reduces memory consumption by on average 15% (and up to 45% for some benchmarks). About one-half the reduction comes from TIB pointer compression; the other one-half comes from STVA. In terms of performance, the space-efficient object model generally does not affect performance; however, for some benchmarks we observe statistically significant performance speedups, up to 20%.
Kris Venstermans, Lieven Eeckhout, Koen De Bosschere
ACM Trans. Archit. Code Optim.3
2007 Automated reduction of the memory footprint of the Linux kernel
abstract
The limited built-in configurability of Linux can lead to expensive code size overhead when it is used in the embedded market. To overcome this problem, we propose the application of link-time compaction and specialization techniques that exploit the a priori known, fixed runtime environment of many embedded systems. In experimental setups based on the ARM XScale and i386 platforms, the proposed techniques are able to reduce the kernel memory footprint with over 16%. We also show how relatively simple additions to existing binary rewriters can implement the proposed techniques for a complex, very unconventional program, such as the Linux kernel. We note that even after specialization, a lot of seemingly unnecessary code remains in the kernel and propose to reduce the footprint of this code by applying code-compression techniques. This technique, combined with the previous ones, reduces the memory footprint with over 23% for the i386 platform and 28% for the ARM platform. Finally, we pinpoint an important code size growth problem when compaction and compression techniques are combined on the ARM platform.
Dominique Chanet, Bjorn De Sutter, Bruno De Bus, Ludo Van Put, Koen De Bosschere
ACM Trans. Embed. Comput. Syst.5
2007 Link-time compaction and optimization of ARM executables
abstract
The overhead in terms of code size, power consumption, and execution time caused by the use of precompiled libraries and separate compilation is often unacceptable in the embedded world, where real-time constraints, battery life-time, and production costs are of critical importance. In this paper, we present our link-time optimizer for the ARM architecture. We discuss how we can deal with the peculiarities of the ARM architecture related to its visible program counter and how the introduced overhead can to a large extent be eliminated. Our link-time optimizer is evaluated with four tool chains, two proprietary ones from ARM and two open ones based on GNU GCC. When used with proprietary tool chains from ARM Ltd., our link-time optimizer achieved average code size reductions of 16.0 and 18.5%, while the programs have become 12.8 and 12.3% faster, and 10.7 to 10.1% more energy efficient. Finally, we show how the incorporation of link-time optimization in tool chains may influence library interface design.
Bjorn De Sutter, Ludo Van Put, Dominique Chanet, Bruno De Bus, Koen De Bosschere
ACM Trans. Embed. Comput. Syst.5
2007 A practical interprocedural dominance algorithm
abstract
Existing algorithms for computing dominators are formulated for control flow graphs of single procedures. With the rise of computing power, and the viability of whole-program analyses and optimizations, there is a growing need to extend the dominator computation algorithms to context-sensitive interprocedural dominators. Because the transitive reduction of the interprocedural dominator graph is not a tree, as in the intraprocedural case, it is not possible to extend existing algorithms directly. In this article, we propose a new algorithm for computing interprocedural dominators. Although the theoretical complexity of this new algorithm is as high as that of a straightforward iterative solution of the data flow equations, our experimental evaluation demonstrates that the algorithm is practically viable, even for programs consisting of several hundred thousands of basic blocks.
Bjorn De Sutter, Ludo Van Put, Koen De Bosschere
ACM Trans. Program. Lang. Syst.3
2006 Performance prediction based on inherent program similarity
abstract
A key challenge in benchmarking is to predict the performance of an application of interest on a number of platforms in order to determine which platform yields the best performance. This paper proposes an approach for doing this. We measure a number of microarchitecture-independent characteristics from the application of interest, and relate these characteristics to the characteristics of the programs from a previously profiled benchmark suite. Based on the similarity of the application of interest with programs in the benchmark suite, we make a performance prediction of the application of interest. We propose and evaluate three approaches (normalization, principal components analysis and genetic algorithm) to transform the raw data set of microarchitecture-independent characteristics into a benchmark space in which the relative distance is a measure for the relative performance differences. We evaluate our approach using all of the SPEC CPU2000 benchmarks and real hardware performance numbers from the SPEC website. Our framework estimates per-benchmark machine ranks with a 0.89 average and a 0.80 worst case rank correlation coefficient.
Kenneth Hoste, Aashish Phansalkar, Lieven Eeckhout, Andy Georges, Lizy Kurian John, Koen De Bosschere
PACT6
2006 Space-Efficient 64-bit Java Objects through Selective Typed Virtual Addressing
abstract
Memory performance is an important design issue for contemporary systems given the ever increasing memory gap. This paper proposes a space-efficient Java object model for reducing the memory consumption of 64-bit Java virtual machines. We propose selective typed virtual addressing (STVA) which uses typed virtual addressing (TVA) or implicit typing for reducing the header of 64-bit Java objects. The idea behind TVA is to encode the object's type in the object's virtual address. In other words, all objects of a given type are allocated in a contiguous memory segment. As such, the type information can be removed from the object's header which reduces the number of allocated bytes per object. Whenever type information is needed for the given object, masking is applied to the object's virtual address. Unlike previous work on implicit typing, we apply TVA to a selected number of frequently allocated and/or long-lived object types. This limits the amount of memory fragmentation. We implement STVA in the 64-bit version of the Jikes RVM on an AIX IBM platform and compare its performance against a traditional VM implementation without STVA using a multitude of Java benchmarks. We conclude that STVA reduces memory consumption by on average 15.5% (and up to 39% for some benchmarks). In terms of performance, STVA generally does not affect performance, however for some benchmarks we observe statistically significant performance speedups, up to 24%.
Kris Venstermans, Lieven Eeckhout, Koen De Bosschere
CGO3
2006 Efficient design space exploration of high performance embedded out-of-order processors
abstract
Previous work on efficient customized processor design primarily focused on in-order architectures. However, with the recent introduction of out-of-order processors for high-end high-performance embedded applications, researchers and designers need to address how to automate the design process of customized out-of-order processors. Because of the parallel execution of independent instructions in out-of-order processors, in-order processor design methodologies which subdivide the search space in independent components are unlikely to be effective in terms of accuracy for designing out-of-order processors. In this paper we propose and evaluate various automated singleand multi-objective optimizations for exploring out-of-order processor designs. We conclude that the newly proposed genetic local search algorithm outperforms all other search algorithms in terms of accuracy. In addition, we propose two-phase simulation in which the first phase explores the design space through statistical simulation; a region of interest is then simulated through detailed simulation in the second phase. We show that simulation time speedups can be obtained of a factor 2.2times to 7.3times using two-phase simulation
Stijn Eyerman, Lieven Eeckhout, Koen De Bosschere
DATE3
2006 Topic 7: Parallel Computer Architecture and Instruction Level Parallelism
Eduard Ayguadé, Wolfgang Karl, Koen De Bosschere, Jean-Francois Collard
Euro-Par3
2006 Accurate memory data flow modeling in statistical simulation
abstract
Microprocessor design is a very complex and time-consuming activity. One of the primary reasons is the huge design space that needs to be explored in order to identify the optimal design given a number of constraints. Simulations are usually used to explore these huge design spaces, however, they are fairly slow. Several hundreds of billions of instructions need to be simulated per benchmark; and this needs to be done for every design point of interest.Recently, statistical simulation was proposed to efficiently cull a huge design space. The basic idea of statistical simulation is to collect a number of important program characteristics and to generate a synthetic trace from it. Simulating this synthetic trace is extremely fast as it contains a million instructions only.This paper improves the statistical simulation methodology by proposing accurate memory data flow models. We model (i) load forwarding, (ii) delayed cache hits, and (iii) correlation between cache misses based on path info. Our experiments using the SPEC CPU2000 benchmarks show a substantial improvement upon current state-of-the-art statistical simulation methods. For example, for our baseline configuration we reduce the average IPC prediction error from 10.7% to 2.3%. In addition, we show that performance trends are predicted very accurately, making statistical simulation enhanced with accurate data flow models a useful tool for efficient and accurate microprocessor design space explorations.
Davy Genbrugge, Lieven Eeckhout, Koen De Bosschere
ICS3
2006 Understanding Obfuscated Code
abstract
Code obfuscation makes it harder for a security analyst to understand the malicious payload of a program. In most cases an analyst needs to study the program at the machine code level, with little or no extra information available, apart from his experience. An unexperienced analyst is confronted with a steep learning curve, as understanding unobfuscated machine code already requires some skills. We have built Loco, a graphical, interactive environment to help a security analyst improving his skills in understanding obfuscated code
Matias Madou, Ludo Van Put, Koen De Bosschere
ICPC3
2006 On the Impact of OS and Linker Effects on Level-2 Cache Performance
abstract
The design of microprocessors depends strongly on architectural simulation. As simulation can be very slow, it is necessary to reduce simulation time by simplifying the simulator and increasing its level of abstraction. A very common abstraction is to ignore operating system effects. As a result of this, there is no information available during simulation about the relationship between virtual addresses and physical addresses This information is important for lower-level caches and main memory as these memories are indexed using the physical address. Another simplification relates to simulating only statically linked programs, instead of the commonly used dynamic linking. This results in different data layouts and, as we show in this paper, it effects the miss rate of physically indexed caches such as the level-2 cache. This paper investigates the error associated to these simplifications in the modeling of level-2 caches and shows that performance can be underestimated or overestimated with errors up to 24%.
Hans Vandierendonck, Koen De Bosschere
MASCOTS2
2006 Javana: a system for building customized Java program analysis tools
abstract
Understanding the behavior of applications running on high-level language virtual machines, as is the case in Java, is non-trivial because of the tight entanglement at the lowest execution level between the application and the virtual machine. This paper proposes Javana, a system for building Java program analysis tools. Javana provides an easy-to-use instrumentation infrastructure that allows for building customized profiling tools very quickly.Javana runs a dynamic binary instrumentation tool underneath the virtual machine. The virtual machine communicates with the instrumentation layer through an event handling mechanism for building a vertical map that links low-level native instruction pointers and memory addresses to high-level language concepts such as objects, methods, threads, lines of code, etc. The dynamic binary instrumentation tool then intercepts all memory accesses and instructions executed and provides the Javana end user with high-level language information for all memory accesses and natively executed instructions.We demonstrate the power of Javana through a number of applications: memory address tracing, vertical cache simulation and object lifetime computation. For each of these applications, the instrumentation specification requires only a small number of lines of code. Developing similarly powerful profiling tools within a virtual machine (as done in current practice) is both time-consuming and error-prone; in addition, the accuracy of the obtained profiling results might be questionable as we show in this paper.
Jonas Maebe, Dries Buytaert, Lieven Eeckhout, Koen De Bosschere
OOPSLA4
2006 LOCO: an interactive code (De)obfuscation tool
abstract
This paper presents LOCO, a graphical, interactive environment to experiment with code obfuscation and deobfuscation transformations, which can be applied automatically, semi-automatically and by hand. LOCO is an extension of the multi-platform visualization tool LANCET, combined with an obfuscation infrastructure in the underlying link-time program rewriter DIABLO. By use of LOCO, a developer can easily navigate through the control flow graph of a program and do fine-grained obfuscation, test new obfuscation transformations, test the robustness of existing transformations or improve existing transformations.
Matias Madou, Ludo Van Put, Koen De Bosschere
PEPM3
2006 Improved composite confidence mechanisms for a perceptron branch predictor
Veerle Desmet, Lieven Eeckhout, Koen De Bosschere
J. Syst. Archit.3
2006 Bidirectional liveness analysis, or how less than half of the Alpha's registers are used
Bjorn De Sutter, Bruno De Bus, Koen De Bosschere
J. Syst. Archit.3
2006 Yet shorter warmup by combining no-state-loss and MRRL for sampled LRU cache simulation
Lieven Eeckhout, Koen De Bosschere
J. Syst. Softw.2
2006 On the expressiveness of timed coordination models
Isabelle Linden, Jean-Marie Jacquet, Koen De Bosschere, Antonio Brogi
Sci. Comput. Program.3
2006 64-bit versus 32-bit Virtual Machines for Java
abstract
The Java language is popular because of its platform independence, making it useful in a lot of technologies ranging from embedded devices to high-performance systems. The platform-independent property of Java, which is visible at the Java bytecode level, is only made possible thanks to the availability of a Virtual Machine (VM), which needs to be designed specifically for each underlying hardware platform. More specifically, the same Java bytecode should run properly on a 32-bit or a 64-bit VM. In this paper, we compare the behavioral characteristics of 32-bit and 64-bit VMs using a large set of Java benchmarks. This is done using the Jikes Research VM as well as the IBM JDK 1.4.0 production VM on a PowerPC-based IBM machine. By running the PowerPC machine in both 32-bit and 64-bit mode we are able to compare 32-bit and 64-bit VMs. We conclude that the space an object takes in the heap in 64-bit mode is 39.3% larger on average than in 32-bit mode. We identify three reasons for this: (i) the larger pointer size, (ii) the increased header and (iii) the increased alignment. The minimally required heap size is 51.1% larger on average in 64-bit than in 32-bit mode. From our experimental setup using hardware performance monitors, we observe that 64-bit computing typically results in a significantly larger number of data cache misses at all levels of the memory hierarchy. In addition, we observe that when a sufficiently large heap is available, the IBM JDK 1.4.0 VM is 1.7% slower on average in 64-bit mode than in 32-bit mode. Copyright © 2005 John Wiley & Sons, Ltd.
Kris Venstermans, Lieven Eeckhout, Koen De Bosschere
Softw. Pract. Exp.3
2005 Hybrid static-dynamic attacks against software protection mechanisms
abstract
Advances in reverse engineering and program analyses have made software extremely vulnerable to malicious host attacks. These attacks typically take the form of intellectual property violations, against which the software needs to be protected. The intellectual property that needs to be protected can take on different forms. The software might, e.g., consist itself of proprietary algorithms and datastructures or it could provide controlled access to copyrighted material. Therefore, in recent years, a number of techniques have been explored to protect software. Many of these techniques provide a reasonable level of security against static-only attacks. Many of them however fail to address the problem of dynamic or hybrid static-dynamic attacks. While this type of attack is already commonly used by black-hats, this is one of the first scientific papers to discuss the potential of these attacks through which an attacker can analyze, control and modify a program extensively. The concepts are illustrated through a case study of a recently proposed algorithm for software watermarking [6].
Matias Madou, Bertrand Anckaert, Bjorn De Sutter, Koen De Bosschere
Digital Rights Management Workshop4
2005 A Detailed Study on Phase Predictors
Frederik Vandeputte, Lieven Eeckhout, Koen De Bosschere
Euro-Par3
2005 Garbage Collection Hints
Dries Buytaert, Kris Venstermans, Lieven Eeckhout, Koen De Bosschere
HiPEAC4
2005 System-wide compaction and specialization of the linux kernel
abstract
The limited built-in configurability of Linux can lead to expensive code size overhead when it is used in the embedded market. To overcome this problem, we propose the application of link-time compaction and specialization techniques that exploit the a priori known, fixed run-time environment of many embedded systems. In experimental setups based on the ARM XScale and i386 platforms, the proposed techniques are able to reduce the kernel memory footprint with over 16%. We also show how relatively simple additions to existing binary rewriters can implement the proposed techniques for a complex, very unconventional program such as the Linux kernel. Finally, we pinpoint an important code size growth problem when compaction and compression techniques are combined on the ARM platform.
Dominique Chanet, Bjorn De Sutter, Bruno De Bus, Ludo Van Put, Koen De Bosschere
LCTES5
2005 LANCET: a nifty code editing tool
abstract
This paper presents LANCET, a multi-platform software visualization tool that enables the inspection of programs at the binary code level. Implemented on top of the link-time rewriting framework DIABLO, LANCET provides several views on the interprocedural control flow graph of a program. These views can be used to navigate through the program, to edit the program in a efficient manner, and to interact with the existing whole-program analyses and optimizations that are implemented in DIABLO or existing applications of DIABLO. As such, LANCET is an ideal tool to examine compiler-generated code, to assist the development of new compiler optimizations, or to optimize assembly code manually.
Ludo Van Put, Bjorn De Sutter, Matias Madou, Bruno De Bus, Dominique Chanet, Kristof Smits, Koen De Bosschere
PASTE7
2005 BLRL: Accurate and Efficient Warmup for Sampled Processor Simulation
abstract
Current computer architecture research relies heavily on architectural simulation to obtain insight into the cycle-level behavior of modern microarchitectures. Unfortunately, such architectural simulations are extremely time-consuming. Sampling is an often-used technique to reduce the total simulation time. This is achieved by selecting a limited number of samples from a complete benchmark execution. One important issue with sampling, however, is the unknown hardware state at the beginning of each sample. Several approaches have been proposed to address this problem by warming up the hardware state before each sample. This paper presents the boundary line reuse latency (BLRL) which is an accurate and efficient warmup strategy. BLRL considers reuse latencies (between memory references to the same memory location) that cross the boundary line between the pre-sample and the sample to compute the warmup that is required for each sample. This guarantees a nearly perfect warmup state at the beginning of a sample. Our experimental results obtained using detailed processor simulation of SPEC CPU2000 benchmarks show that BLRL significantly outperforms the previously proposed memory reference reuse latency (MRRL) warmup strategy. BLRL achieves a warmup that is only half the warmup for MRRL on average for the same level of accuracy.
Lieven Eeckhout, Koen De Bosschere, Lizy Kurian John
Comput. J.3
2005 Optimal sample length for efficient cache simulation
Lieven Eeckhout, Smaïl Niar, Koen De Bosschere
J. Syst. Archit.3
2005 XOR-Based Hash Functions
abstract
Bank conflicts can severely reduce the bandwidth of an interleaved multibank memory and conflict misses increase the miss rate of a cache or a predictor. Both occurrences are manifestations of the same problem: objects, which should be mapped to different indices, are accidentally mapped to the same index. Suitable chosen hash functions can avoid conflicts in each of these situations by mapping the most frequently occurring patterns conflict-free. A particularly interesting class of hash functions is the XOR-based hash functions, which compute each set index bit as the exclusive-or of a subset of the address bits. When implementing a XOR-based hash function, it is extremely important to understand what patterns are mapped conflict-free and how a hash function can be constructed to map the most frequently occurring patterns without conflicts. Hereto, this paper presents two ways to reason about hash functions: by their null space and by their column space. The null space helps to quickly determine whether a pattern is mapped conflict-free. The column space is more useful for other purposes, e.g., to reduce the fan-in of the XOR-gates without introducing conflicts or to evaluate interbank dispersion in skewed-associative caches. Examples illustrate how these ideas can be applied to construct conflict-free hash functions.
Hans Vandierendonck, Koen De Bosschere
IEEE Trans. Computers2
2005 Link-time binary rewriting techniques for program compaction
abstract
Small program size is an important requirement for embedded systems with limited amounts of memory. We describe how link-time compaction through binary rewriting can achieve code size reductions of up to 62% for statically bound languages such as C, C++, and Fortran, without compromising on performance. We demonstrate how the limited amount of information about a program at link time can be exploited to overcome overhead resulting from separate compilation. This is done with scalable, cost-effective, whole-program analyses, optimizations, and duplicate code and data elimination techniques. The discussed techniques are evaluated and their cost-effectiveness is quantified with Squeeze++, a prototype link-time compactor.
Bjorn De Sutter, Bruno De Bus, Koen De Bosschere
ACM Trans. Program. Lang. Syst.3
2004 Software piracy prevention through diversity
abstract
Software piracy is a major concern for software providers, despite the many defense mechanisms that have been proposed to prevent it. This paper identifies the fundamental weaknesses of existing approaches, resulting from the static nature of defense and the impossibility to prevent the duplication of digital data. A new scheme is presented that enables a more dynamic nature of defense and makes it harder to create an additional, equally useful copy. Furthermore it enables a fine-grained control over the distributed software. Its strength is based on diversity: each installed copy is unique and updates are tailored to work for one installed copy only.
Bertrand Anckaert, Bjorn De Sutter, Koen De Bosschere
Digital Rights Management Workshop3
2004 Link-Time Optimization of IA64 Binaries
Bertrand Anckaert, Frederik Vandeputte, Bruno De Bus, Bjorn De Sutter, Koen De Bosschere
Euro-Par5
2004 Detecting Data Races in Sequential Programs with DIOTA
Michiel Ronsse, Jonas Maebe, Koen De Bosschere
Euro-Par3
2004 Control Flow Modeling in Statistical Simulation for Accurate and Efficient Processor Design Studies
abstract
Designing a new microprocessor is extremely time-consuming. One of the contributing reasons is that computer designers rely heavily on detailed architectural simulations, which are very time-consuming. Recent work has focused on statistical simulation to address this issue. The basic idea of statistical simulation is to measure characteristics during program execution, generate a synthetic trace with those characteristics and then simulate the synthetic trace. The statistically generated synthetic trace is orders of magnitude smaller than the original program sequence and hence results in significantly faster simulation. This paper makes the following contributions to the statistical simulation methodology. First, we propose the use of a statistical flow graph to characterize the control flow of a program execution. Second, we model delayed update of branch predictors while profiling program execution characteristics. Experimental results show that statistical simulation using this improved control flow modeling attains significantly better accuracy than the previously proposed HLS system. We evaluate both the absolute and the relative accuracy of our approach for power/performance modeling of superscalar microarchitectures. The results show that our statistical simulation framework can be used to efficiently explore processor design spaces.
Lieven Eeckhout, Robert H. Bell Jr., Bastiaan Stougie, Koen De Bosschere, Lizy Kurian John
ISCA4
2004 Eccentric and fragile benchmarks
abstract
Benchmarks are essential for computer architecture research and performance evaluation. Constructing a good benchmark suite is, however, non-trivial: it must be representative, show different types of behavior and the benchmarks should not be easily tweaked. This paper uses principal components analysis, a statistical data analysis technique, to detect differences in behavior between benchmarks. Two specific types of benchmarks are identified. Eccentric benchmarks have a behavior that differs significantly from the other benchmarks. They are useful to incorporate different types of behavior in a suite. Fragile benchmarks are weak benchmarks: their execution time is determined almost entirely by a single bottleneck. Removing that bottleneck reduces their execution time excessively. This paper argues that fragile benchmarks are not useful and shows how they can be detected by means of workload characterization techniques. These techniques are applied to the SPEC CPU95 and CPU2000 benchmark suites. It is shown that these suites contain both eccentric and fragile benchmarks. The notions of eccentric and fragile benchmarks are important when composing a benchmark suite and to guide the sub-setting of a benchmark suite.
Hans Vandierendonck, Koen De Bosschere
ISPASS2
2004 Link-time optimization of ARM binaries
abstract
The overhead in terms of code size, power consumption and execution time caused by the use of precompiled libraries and separate compilation is often unacceptable in the embedded world, where real-time constraints, battery life-time and production costs are of critical importance. In this paper we present our link-time optimizer for the ARM architecture. We discuss how we can deal with the peculiarities of the ARM architecture related to its visible program counter and how the introduced overhead can be eliminated to a large extent. Our link-time optimizer is evaluated in two tool chains. In the Arm Developer Suite tool chain, average code size reductions with 14.6% are achieved, while execution time is reduced with 8.3% on average, and energy consumption with 7.3%. On binaries from the GCC tool chain the average code size reduction is 16.6%, execution time is reduced with 12.3% and the energy consumption with 11.5% on average. Finally, we show how the incorporation of link-time optimization in tool chains may influence library interface design.
Bruno De Bus, Bjorn De Sutter, Ludo Van Put, Dominique Chanet, Koen De Bosschere
LCTES5
2004 Method-level phase behavior in java workloads
abstract
Java workloads are becoming more and more prominent on various computing devices. Understanding the behavior of a Java workload which includes the interaction between the application and the virtual machine (VM), is thus of primary importance during performance analysis and optimization. Moreover, as contemporary software projects are increasing in complexity, automatic performance analysis techniques are indispensable. This paper proposes an off-line method-level phase analysis approach for Java workloads that consists of three steps. In the first step, the execution time is computed for each method invocation. Using an off-line tool, we subsequently analyze the dynamic call graph (that is annotated with the method invocations' execution times) to identify method-level phases. Finally, we measure performance characteristics for each of the selected phases. This is done using hardware performance monitors. As such, our approach allows for linking microprocessor-level information at the individual methods in the Java application's source code. This is extremely interesting information during performance analysis and optimization as programmers can use this information to optimize their code. We evaluate our approach in the Jikes RVM on an IA-32 platform using the SPECjvm98 and SPECjbb2000 benchmarks. This is done according to a number of important criteria: the overhead during profiling, the variability within and between the phases, its applicability in Java workload characterization (measuring performance characteristics of the various VM components) and application bottleneck identification.
Andy Georges, Dries Buytaert, Lieven Eeckhout, Koen De Bosschere
OOPSLA4
2004 The design and implementation of FIT: a flexible instrumentation toolkit
abstract
This paper presents FIT, a Flexible open-source binary code Instrumentation Toolkit. Unlike existing tools, FIT is truly portable, with existing backends for the Alpha, x86 and ARM architectures and the Tru64Unix, Linux and ARM Firmware execution environments. This paper focuses on some of the problems that needed to be addressed for providing this degree of portability. It also discusses the trade-off between instrumentation precision and low overhead.
Bruno De Bus, Dominique Chanet, Bjorn De Sutter, Ludo Van Put, Koen De Bosschere
PASTE5
2004 Low-level behavioral analysis of the JVT/AVC decoder
abstract
H.264/AVC is a video codec developed by the Joint Video Team (JVT); a cooperation between the ITU-T VCEG (Video Coding Experts Group) and ISO/IEC MPEG (Moving Picture Experts Group). This new video coding standard has some new features that allow to get significant improvements in coding efficiency. This improved coding efficiency leads to an overall more complex algorithm which has high demands regarding memory usage and processing power. Complexity, however, is an abstract concept and cannot be measured in a simple manner. In this paper we present a method to obtain an accurate and more in-depth view on the internals of the JVT/AVC decoder. By decoding several bit streams having different encoding parameters, various program characteristics were measured. On these measurements, principal components analysis was performed to get a different view on these measurements. Our results show that the various encoding parameters have a clear impact on the low level behavior of the decoder. Moreover, our methodology allows us to give an explanation for the observed dissimilarities.
Peter Lambert, Lieven Eeckhout, Robbie De Sutter, Koen De Bosschere, Rik Van de Walle
VCIP4
2004 On Generating Set Index Functions for Randomized Caches
abstract
Caches hide the growing latency of accesses to the main memory from the processor by storing the most recently used data on-chip. To limit the search time through the caches, they are organized in a direct mapped or set-associative way. Such an organization introduces many conflict misses that hamper performance. This paper studies randomizing set index functions, a technique to place the data in the cache in such a way that conflict misses are avoided. The performance of such a randomized cache strongly depends on the randomization function. This paper discusses a methodology to generate randomization functions that perform well over a broad range of benchmarks. The methodology uses profiling information to predict the conflict miss rate of randomization functions. Then, using this information, a search algorithm finds the best randomization function. Due to implementation issues, it is preferable to use a randomization function that is extremely simple and can be evaluated in little time. For these reasons, we use randomization functions where each randomized address bit is computed as the XOR of a subset of the original address bits. These functions are chosen such that they operate on as few address bits as possible and have few inputs to each XOR. This paper shows that to index a 2m-set cache, it suffices to randomize m + 2 or m + 3 address bits and to limit the number of inputs to each XOR to 2 bits to obtain the full potential of randomization. Furthermore, it is shown that the randomization function that we generate for one set of benchmarks also works well for an entirely different set of benchmarks. Using the described methodology, it is possible to reduce the implementation cost of randomization functions with only an insignificant loss in conflict reduction.
Hans Vandierendonck, Koen De Bosschere
Comput. J.2
2004 How accurate should early design stage power/performance tools be? A case study with statistical simulation
Lieven Eeckhout, Koen De Bosschere
J. Syst. Softw.2
2004 Efficient simulation of trace samples on parallel machines
Lieven Eeckhout, Koen De Bosschere
Parallel Comput.2
2004 JaRec: a portable record/replay environment for multi-threaded Java applications
abstract
Abstract This paper describes JaRec, a portable record/replay system for Java. It correctly replays multi‐threaded, data‐race free Java applications, by recording the order of synchronization operations, and by executing them in the same order during replay. The record/replay infrastructure is developed in Java, and does not require a modification of the Java Virtual Machine (JVM) if it provides the JVM Profiler Interface (JVMPI). If the JVM does not support JVMPI, which is used for intercepting the loaded classes, only a minor modification to the JVM is required in order to run the system. On ystems with limited memory resources, JaRec can be executed in a distributed fashion. This also makes it suitable to aid debugging of multi‐threaded applications on embedded systems. Copyright © 2004 John Wiley & Sons, Ltd.
Andy Georges, Mark Christiaens, Michiel Ronsse, Koen De Bosschere
Softw. Pract. Exp.4
2003 Trace Substitution
Hans Vandierendonck, Hans Logie, Koen De Bosschere
Euro-Par3
2003 On the side-effects of code abstraction
abstract
More and more devices contain computers with limited amounts of memory. As a result, code compaction techniques are gaining popularity, especially when they also improve performance and power consumption, or at least not degrade it. This paper quantifies the side-effects of code abstraction on performance using extensive measurements and simulations on the SPECint2000 benchmark suite and some additional C++ programs. We show how to use profile information in order to obtain almost all the code size reduction benefits of code abstraction, yet experience almost none of its disadvantages.
Bjorn De Sutter, Hans Vandierendonck, Bruno De Bus, Koen De Bosschere
LCTES4
2003 How java programs interact with virtual machines at the microarchitectural level
abstract
Java workloads are becoming increasingly prominent on various platforms ranging from embedded systems, over general-purpose computers to high-end servers. Understanding the implications of all the aspects involved when running Java workloads, is thus extremely important during the design of a system that will run such workloads. In other words, understanding the interaction between the Java application, its input and the virtual machine it runs on, is key to a succesful design. The goal of this paper is to study this complex interaction at the microarchitectural level, e.g., by analyzing the branch behavior, the cache behavior, etc. This is done by measuring a large number of performance characteristics using performance counters on an AMD K7 Duron microprocessor. These performance characteristics are measured for seven virtual machine configurations, and a collection of Java benchmarks with corresponding inputs coming from the SPECjvm98 benchmark suite, the SPECjbb2000 benchmark suite, the Java Grande Forum benchmark suite and an open-source raytracer, called Raja with 19 scene descriptions. This large amount of data is further analyzed using statistical data analysis techniques, namely principal components analysis and cluster analysis. These techniques provide useful insights in an understandable way.From our experiments, we conclude that (i) the behavior observed at the microarchitectural level is primarily determined by the virtual machine for small input sets, e.g., the SPECjvm98 s1 input set; (ii) the behavior can be quite different for various input sets, e.g., short-running versus long-running benchmarks; (iii) for long-running benchmarks with few hot spots, the behavior can be primarily determined by the Java program and not the virtual machine, i.e., all the virtual machines optimize the hot spots to similarly behaving native code; (iv) in general, the behavior of a Java application running on one virtual machine can be significantly different from running on another virtual machine. These conclusions warn researchers working on Java workloads to be careful when using a limited number of Java benchmarks or virtual machines since this might lead to biased conclusions.
Lieven Eeckhout, Andy Georges, Koen De Bosschere
OOPSLA3
2003 Debugging shared memory parallel programs using record/replay
Michiel Ronsse, Mark Christiaens, Koen De Bosschere
Future Gener. Comput. Syst.3
2003 Quantifying behavioral differences between multimedia and general-purpose workloads
Lieven Eeckhout, Koen De Bosschere
J. Syst. Archit.2
2003 Highly accurate and efficient evaluation of randomising set index functions
Hans Vandierendonck, Koen De Bosschere
J. Syst. Archit.2
2003 Suspension Terms as a Means for Meta-coordination in the muLog Coordination Framework
Koen De Bosschere, Jean-Marie Jacquet
J. Supercomput.1
2002 Independent Hashing as Confidence Mechanism for Value Predictors in Microprocessors
Veerle Desmet, Bart Goeman, Koen De Bosschere
Euro-Par3
2002 A Comparative Study of Redundancy in Trace Caches (Research Note)
Hans Vandierendonck, Alex Ramírez, Koen De Bosschere, Mateo Valero
Euro-Par3
2002 Sifting out the mud: low level C++ code reuse
abstract
More and more computers are being incorporated in devices where the available amount of memory is limited. This contrasts with the increasing need for additional functionality and the need for rapid application development. While object-oriented programming languages, providing mechanisms such as inheritance and templates, allow fast development of complex applications, they have a detrimental effect on program size. This paper introduces new techniques to reuse the code of whole procedures at the binary level and a supporting technique for data reuse. These techniques benefit specifically from program properties originating from the use of templates and inheritance. Together with our previous work on code abstraction at lower levels of granularity, they achieve additional code size reductions of up to 38% on already highly optimized and compacted binaries, without sacrificing execution speed. We have incorporated these techniques in Squeeze++, a prototype link-time binary rewriter for the Alpha architecture, and extensively evaluate them on a suite of 8 real-life C++ applications. The total code size reductions achieved post link-time (i.e. without requiring any change to the compiler) range from 27 to 70%, averaging at around 43%.
Bjorn De Sutter, Bruno De Bus, Koen De Bosschere
OOPSLA3
2002 Non-Intrusive Detection of Synchronization Errors Using Execution Replay
Michiel Ronsse, Koen De Bosschere
Autom. Softw. Eng.2
2002 Bounding the number of segment histories during data race detection
Mark Christiaens, Michiel Ronsse, Koen De Bosschere
Parallel Comput.3
2001 Accordion Clocks: Logical Clocks for Data Race Detection
Mark Christiaens, Koen De Bosschere
Euro-Par2
2001 Differential FCM: Increasing Value Prediction Accuracy by Improving Table Usage Efficiency
abstract
Value prediction is a relatively new technique to increase the Instruction Level Parallelism (ILP) in future microprocessors. An important problem when designing a value predictor is efficiency, an accurate predictor requires huge prediction tables. This is especially the case for the finite context method (FCM) predictor the most accurate one. In this paper, we show that the prediction accuracy of the FCM can be greatly improved by making the FCM predict studies instead of values. This new predictor is called the differential finite context method (DFCM) predictor. The DFCM predictor outperforms a similar FCM predictor by as much as 33%, depending on the prediction table size. If we take the additional storage into account, the difference is still 15% for realistic predictor sizes. We use several metrics to show that the key to this success is reduced aliasing in the level-2 table. We also show that the DFCM is superior to hybrid predictors based on FCM and stride predictors, since its prediction accuracy is higher than that of a hybrid one using a perfect meta-predictor.
Bart Goeman, Hans Vandierendonck, Koen De Bosschere
HPCA3
2001 Early design phase power/performance modeling through statistical simulation
abstract
Microprocessor design time and effort are getting impractical due to the huge number of simulations that need to be done to evaluate various processor configurations for various workloads. An early design stage methodology could be useful to efficiently cull huge design spaces to identify regions of interest to be further explored using more accurate simulations. In such an early design stage methodology, power consumption should be considered besides performance, since power consumption is becoming a key design issue for midrange and high-end microprocessor designs. In this paper, we propose to use statistical simulation as an early design stage methodology that considers both performance and power. We evaluate the applicability and the accuracy of this methodology and we show that statistical simulation is indeed capable of identifying a region of energy-efficient architectures. In addition, we demonstrate that this methodology can be used to explore workload design spaces in terms of power/performance by varying program characteristics that are hard to vary using real programs. 1
Lieven Eeckhout, Koen De Bosschere
ISPASS2
2001 Efficient profile-based evaluation of randomising set index functions for cache memories
abstract
The performance of direct mapped caches is degraded by conflict misses. It has been shown that conflict misses can be reduced by using randomising set index functions, such that repeated conflicts are avoided. However, optimising the set index function requires time consuming simulations, because the design space of randomising set index functions is very large. Therefore, we dei,eloped a profile-based technique that allows one to make a fast estimation of the miss ratio incurred by a set index function. Using this technique, one can perform a fast, initial exploration of the design space of set index functions, followed by a slower, but more accurate, analysis using simulation. The profile-based technique is based on a new representation of randomising set index functions using mill spaces. The profile-based technique consists of two phases. In the first phase, a program is profiled and in the second phase, a score is computed from the profile data and the mill space of a set index function. We show that the computed score closely reflects the miss ratio incurred by that set index function. Computing a score is a simple operation that requires no simulation time. Therefore, only one profiling run is required to estimate the miss ratios for a wide range of set index functions.
Hans Vandierendonck, Koen De Bosschere
ISPASS2
2001 alto: a link-time optimizer for the Compaq Alpha
abstract
Traditional optimizing compilers are limited in the scope of their optimizations by the fact that only a single function, or possibly a single module, is available for analysis and optimization. In particular, this means that library routines cannot be optimized to specific calling contexts. Other optimization opportunities, exploiting information not available before link time, such as addresses of variables and the final code layout, are often ignored because linkers are traditionally unsophisticated. A possible solution is to carry out whole-program optimization at link time. This paper describes alto, a link-time optimizer for the Compaq Alpha architecture. It is able to realize significant performance improvements even for programs compiled with a good optimizing compiler with a high level of optimization. The resulting code is considerably faster than that obtained using the OM link-time optimizer, even when the latter is used in conjunction with profile-guided and inter-file compile-time optimizations. Copyright © 2001 John Wiley & Sons, Ltd.
Robert Muth, Saumya K. Debray, Scott A. Watterson, Koen De Bosschere
Softw. Pract. Exp.4
2000 On Timed Coordination Languages
Jean-Marie Jacquet, Koen De Bosschere, Antonio Brogi
COORDINATION2
2000 A Technique for High Bandwidth and Deterministic Low Latency Load/Store Accesses to Multiple Cache Banks
abstract
One of the problems in future processors will be the resource conflicts caused by several load/store units competing to access the same cache bank. The traditional approach for handling this case is by introducing buffers combined with a cross-bar. This approach suffers from (i) the non-deterministic latency of a load/store and (ii) the extra latency caused by the cross-bar and the buffer management. A deterministic latency is of the utmost importance for the forwarding mechanism of out-of-order processors because it enables back-to-back operation of instructions. We propose a technique by which we eliminate the buffers and cross-bars from the critical path of the load/store execution. This results in both, a low and a deterministic latency. Our solution consists of predicting which bank is to be accessed. Only in the case of a wrong prediction a penalty results.
Henk Neefs, Hans Vandierendonck, Koen De Bosschere
HPCA3
2000 Performance analysis through synthetic trace generation
abstract
Most research in the area of microarchitectural performance analysis is done using trace-driven simulations. Although trace-driven simulations are fairly accurate, they are both time- and space-consuming which makes them sometimes impractical. Modeling the execution of a computer program by a statistical profile and generating a synthetic benchmark trace from this statistical profile can be used to accelerate the design process. Thanks to the statistical nature of this technique, performance characteristics quickly converge to a steady state solution during simulation, which makes this technique suitable for fast design space explorations. In this paper, it is shown how more detailed statistical profiles can be obtained and how the synthetic trace generation mechanism should be designed to generate syntactically correct benchmark traces. As a result, the performance predictions in this paper are far more accurate than those reported in previous research.
Lieven Eeckhout, Koen De Bosschere, Henk Neefs
ISPASS2
2000 Early design stage exploration of fixed-length block structured architectures
Lieven Eeckhout, Henk Neefs, Koen De Bosschere
J. Syst. Archit.3
1999 A fast, cache-aware algorithm for the calculation of radiological paths exploiting subword parallelism
Mark Christiaens, Bjorn De Sutter, Koen De Bosschere, Jan M. Van Campenhout, Ignace Lemahieu
J. Syst. Archit.3
1999 Exploitable levels of ILP in future processors
Henk Neefs, Koen De Bosschere, Jan M. Van Campenhout
J. Syst. Archit.2
1999 RecPlay: A Fully Integrated Practical Record/Replay System
abstract
This article presents a practical solution for the cyclic debugging of nondeterministic parallel programs. The solution consists of a combination of record/replay with automatic on-the-fly data race detection. This combination enables us to limit the record phase to the more efficient recording of the synchronization operations, while deferring the time-consuming data race detection to the replay phase. As the record phase is highly efficient, there is no need to switch it off, hereby eliminating the possibility of Heisenbugs because tracing can be left on all the time. This article describes an implementation of the tools needed to support RecPlay.
Michiel Ronsse, Koen De Bosschere
ACM Trans. Comput. Syst.2
1998 TARILAN: an embedded functional data processing language
Koen De Bosschere
J. Syst. Softw.1
1998 On the Use of Subword Parallelism in Medical Image Processing
Bjorn De Sutter, Mark Christiaens, Koen De Bosschere, Jan M. Van Campenhout
Parallel Comput.3
1997 Process-based parallel logic programming: A survey of the basic issues
Koen De Bosschere
J. Syst. Softw.1
1996 µ2 Log: Towards Remote Coordination
Koen De Bosschere, Jean-Marie Jacquet
COORDINATION1
1996 Extending the µLog Framework with Local and Conditional Blackboard Operations
Koen De Bosschere, Jean-Marie Jacquet
J. Symb. Comput.1
1996 An Operator Precedence Parser for Standard Prolog Text
abstract
Prolog is a language with a dynamic grammar which is the result of embedded operator declarations. The parsing of such a language cannot be done easily by means of standard tools. Most often, an existing parsing technique for a static grammar is adapted to deal with the dynamic constructs. This paper uses the syntax definition as defined by the ISO standard for the Prolog language. It starts with a brief discussion of the standard, highlighting some aspects that are important for the parser, such as the restrictions on the use of operators as imposed by the standard in order to make the parsing deterministic. Some possible problem areas are also indicated. As output is closely related to input in Prolog, both are treated in this paper. Some parsing techniques are compared and an operator precedence parser is chosen to be modified to deal with the dynamic operator declarations. The necessary modifications are discussed and an implementation in C is presented. Performance data are collected and compared with a public domain Prolog parser written in Prolog. It is the first efficient public domain parser for Standard Prolog that actually works and deals with all the details of the syntax.
Koen De Bosschere
Softw. Pract. Exp.1
1996 Blackboard-based Extensions in Prolog
abstract
This paper presents the embedding of blackboard communication primitives in Prolog. Blackboard communication is a simple but powerful form of communication that is based upon the availability of a global data structure that can be accessed by any process in a controlled way. This results in a parallel language that exploits coarse-grained application parallelism and that is related to the Linda framework. This paper contains a description of the blackboard communication primitives at the language and at the implementation level, and it is illustrated with several programming examples.
Koen De Bosschere, Paul Tarau
Softw. Pract. Exp.1
1995 On Composing Concurrent Logic Processes
Jean-Marie Jacquet, Koen De Bosschere
ICLP2
1994 Call Forwarding: A Simple Interprocedural Optimization Technique for Dynamically Typed Languages
abstract
This paper discusses call forwarding, a simple interprocedural optimization technique for dynamically typed languages. The basic idea behind the optimization is straightforward: find an ordering for the “entry actions” of a procedure, and generate multiple entry points for the procedure, so as to maximize the savings realized from different call sites bypassing different sets of entry actions. We show that the problem of computing optimal solutions to arbitrary call forwarding problems is NP-complete, and describe an efficient greedy algorithm for the problem. Experimental results indicate that (i) this algorithm is effective, in that the solutions produced are generally close to optimal; and (ii) the resulting optimization leads to significant performance improvements for a number of benchmarks tested.
Koen De Bosschere, Saumya K. Debray, David Gudeman, Sampath Kannan
POPL1
1994 On the semantics of μ Log
Jean-Marie Jacquet, Koen De Bosschere
Future Gener. Comput. Syst.2
1993 Multi-Prolog: Definition, Operational Semantics and Implementation
Koen De Bosschere, Jean-Marie Jacquet
ICLP1
1989 EDULAN, a tool for teaching synchronization
Koen De Bosschere
Microprocessing and Microprogramming1