VLDB 2026 Research / reviewers in the wild / expert
Koen De Bosschere
dblp:b/KoenraadDeBosschere · also Koenraad De Bosschere
· DBLP profile ↗
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
| Topic | Weight | Papers | Last | Evidence papers |
|---|---|---|---|---|
Runtime systems and virtual machines
dynamic compilation |
0.5 | 2 | 2020 | 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.4 | 1 | 2020 | 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.4 | 1 | 2020 | Adaptive Compiler Strategies for Mitigating Timing Side Channel Attacks · IEEE Trans. Dependable Secur. Comput. 2020 |
Systems and software security
memory safety |
0.3 | 1 | 2017 | Taming Parallelism in a Multi-Variant Execution Environment · EuroSys 2017 |
Systems and software security › software diversity
multi-variant execution |
0.3 | 1 | 2017 | Taming Parallelism in a Multi-Variant Execution Environment · EuroSys 2017 |
Runtime systems and virtual machines › virtual machine implementation
java virtual machine |
0.2 | 4 | 2007 | 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.2 | 1 | 2014 | Pushing Java Type Obfuscation to the Limit · IEEE Trans. Dependable Secur. Comput. 2014 |
Compilers and program optimization › dynamic optimization
adaptive compilation |
0.1 | 1 | 2020 | 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.1 | 1 | 2020 | 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.1 | 2 | 2007 | 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.1 | 1 | 2010 | Compilation and virtualization in the HiPEAC vision · DAC 2010 |
Cloud and datacenter computing
virtualization |
0.1 | 1 | 2010 | Compilation and virtualization in the HiPEAC vision · DAC 2010 |
Performance modeling and evaluation
workload characterization |
0.1 | 3 | 2006 | 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.1 | 1 | 2009 | 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.1 | 1 | 2009 | Practical Mitigations for Timing-Based Side-Channel Attacks on Modern x86 Processors · SP 2009 |
Compilers and program optimization
binary rewriting |
0.1 | 2 | 2005 | 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.1 | 2 | 2005 | 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.1 | 1 | 2017 | Taming Parallelism in a Multi-Variant Execution Environment · EuroSys 2017 |
Compilers and program optimization › parallelization
automatic parallelization |
0.1 | 1 | 2008 | Extracting coarse-grain parallelism in general-purpose programs · PPoPP 2008 |
Compilers and program optimization › parallelization
coarse-grain parallelism extraction |
0.1 | 1 | 2008 | Extracting coarse-grain parallelism in general-purpose programs · PPoPP 2008 |
Memory systems
cache |
0.1 | 2 | 2005 | 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.1 | 1 | 2007 | A practical interprocedural dominance algorithm · ACM Trans. Program. Lang. Syst. 2007 |
Program analysis
data flow analysis |
0.1 | 1 | 2007 | A practical interprocedural dominance algorithm · ACM Trans. Program. Lang. Syst. 2007 |
Compilers and program optimization › compiler analysis
dominator trees |
0.1 | 1 | 2007 | A practical interprocedural dominance algorithm · ACM Trans. Program. Lang. Syst. 2007 |
Runtime systems and virtual machines
object representation |
0.1 | 1 | 2007 | 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.1 | 1 | 2007 | Using hpm-sampling to drive dynamic compilation · OOPSLA 2007 |
Program analysis
dynamic analysis |
0.1 | 1 | 2006 | Javana: a system for building customized Java program analysis tools · OOPSLA 2006 |
Program analysis › dynamic analysis
dynamic binary instrumentation |
0.1 | 1 | 2006 | Javana: a system for building customized Java program analysis tools · OOPSLA 2006 |
Program analysis › dynamic analysis
profiling |
0.1 | 1 | 2006 | Javana: a system for building customized Java program analysis tools · OOPSLA 2006 |
Compilers and program optimization › code size reduction
code compaction |
0.1 | 1 | 2005 | 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
| Year | Publication | Venue | Position |
|---|---|---|---|
| 2020 | Effective and efficient Java-type obfuscationabstractSummary 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 AttacksabstractExisting 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 EnvironmentabstractExploit 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 |
EuroSys | 4 |
| 2017 | Calling hardware procedures in a reconfigurable accelerator using RPC-FPGAabstractRPC-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 |
FPT | 3 |
| 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 |
DATE | 6 |
| 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 LimitabstractBytecoded .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 compilersabstractNo abstract available. Per Stenström, Koen De Bosschere |
ACM Trans. Archit. Code Optim. | 2 |
| 2010 | The Paralax infrastructure: automatic parallelization with a helping handabstractSpeeding 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 |
PACT | 3 |
| 2010 | Compilation and virtualization in the HiPEAC visionabstractThis 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 |
DAC | 3 |
| 2010 | Implicit hints: Embedding hint bits in programs without ISA changesabstractThere 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 |
ICCD | 2 |
| 2010 | Accelerating Multiple Sequence Alignment with the Cell BE ProcessorabstractThe 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 ProcessorsabstractThis 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 |
SP | 3 |
| 2009 | System-scenario-based design of dynamic embedded systemsabstractIn 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-Par | 1 |
| 2008 | Experiences with Parallelizing a Bio-informatics Program on the Cell BE
Hans Vandierendonck, Sean Rul, Michiel Questier, Koen De Bosschere |
HiPEAC | 4 |
| 2008 | Towards Tamper Resistant Code Encryption: Practice and Experience
Jan Cappaert, Bart Preneel, Bertrand Anckaert, Matias Madou, Koen De Bosschere |
ISPEC | 5 |
| 2008 | Extracting coarse-grain parallelism in general-purpose programsabstractWhile 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 |
PPoPP | 3 |
| 2008 | Memory footprint reduction for embedded systemsabstractThe 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 |
SCOPES | 1 |
| 2007 | Object-Relative Addressing: Compressed Pointers in 64-Bit Java Virtual Machines
Kris Venstermans, Lieven Eeckhout, Koen De Bosschere |
ECOOP | 3 |
| 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 compilationabstractAll 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 |
OOPSLA | 6 |
| 2007 | Whole-program linear-constant analysis with applications to link-time optimizationabstractCurrent 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 |
SCOPES | 3 |
| 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 machinesabstractMemory 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 kernelabstractThe 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 executablesabstractThe 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 algorithmabstractExisting 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 similarityabstractA 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 |
PACT | 6 |
| 2006 | Space-Efficient 64-bit Java Objects through Selective Typed Virtual AddressingabstractMemory 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 |
CGO | 3 |
| 2006 | Efficient design space exploration of high performance embedded out-of-order processorsabstractPrevious 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 |
DATE | 3 |
| 2006 | Topic 7: Parallel Computer Architecture and Instruction Level Parallelism
Eduard Ayguadé, Wolfgang Karl, Koen De Bosschere, Jean-Francois Collard |
Euro-Par | 3 |
| 2006 | Accurate memory data flow modeling in statistical simulationabstractMicroprocessor 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 |
ICS | 3 |
| 2006 | Understanding Obfuscated CodeabstractCode 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 |
ICPC | 3 |
| 2006 | On the Impact of OS and Linker Effects on Level-2 Cache PerformanceabstractThe 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 |
MASCOTS | 2 |
| 2006 | Javana: a system for building customized Java program analysis toolsabstractUnderstanding 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 |
OOPSLA | 4 |
| 2006 | LOCO: an interactive code (De)obfuscation toolabstractThis 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 |
PEPM | 3 |
| 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 JavaabstractThe 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 mechanismsabstractAdvances 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 Workshop | 4 |
| 2005 | A Detailed Study on Phase Predictors
Frederik Vandeputte, Lieven Eeckhout, Koen De Bosschere |
Euro-Par | 3 |
| 2005 | Garbage Collection Hints
Dries Buytaert, Kris Venstermans, Lieven Eeckhout, Koen De Bosschere |
HiPEAC | 4 |
| 2005 | System-wide compaction and specialization of the linux kernelabstractThe 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 |
LCTES | 5 |
| 2005 | LANCET: a nifty code editing toolabstractThis 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 |
PASTE | 7 |
| 2005 | BLRL: Accurate and Efficient Warmup for Sampled Processor SimulationabstractCurrent 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 FunctionsabstractBank 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. Computers | 2 |
| 2005 | Link-time binary rewriting techniques for program compactionabstractSmall 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 diversityabstractSoftware 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 Workshop | 3 |
| 2004 | Link-Time Optimization of IA64 Binaries
Bertrand Anckaert, Frederik Vandeputte, Bruno De Bus, Bjorn De Sutter, Koen De Bosschere |
Euro-Par | 5 |
| 2004 | Detecting Data Races in Sequential Programs with DIOTA
Michiel Ronsse, Jonas Maebe, Koen De Bosschere |
Euro-Par | 3 |
| 2004 | Control Flow Modeling in Statistical Simulation for Accurate and Efficient Processor Design StudiesabstractDesigning 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 |
ISCA | 4 |
| 2004 | Eccentric and fragile benchmarksabstractBenchmarks 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 |
ISPASS | 2 |
| 2004 | Link-time optimization of ARM binariesabstractThe 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 |
LCTES | 5 |
| 2004 | Method-level phase behavior in java workloadsabstractJava 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 |
OOPSLA | 4 |
| 2004 | The design and implementation of FIT: a flexible instrumentation toolkitabstractThis 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 |
PASTE | 5 |
| 2004 | Low-level behavioral analysis of the JVT/AVC decoderabstractH.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 |
VCIP | 4 |
| 2004 | On Generating Set Index Functions for Randomized CachesabstractCaches 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 applicationsabstractAbstract 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-Par | 3 |
| 2003 | On the side-effects of code abstractionabstractMore 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 |
LCTES | 4 |
| 2003 | How java programs interact with virtual machines at the microarchitectural levelabstractJava 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 |
OOPSLA | 3 |
| 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-Par | 3 |
| 2002 | A Comparative Study of Redundancy in Trace Caches (Research Note)
Hans Vandierendonck, Alex Ramírez, Koen De Bosschere, Mateo Valero |
Euro-Par | 3 |
| 2002 | Sifting out the mud: low level C++ code reuseabstractMore 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 |
OOPSLA | 3 |
| 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-Par | 2 |
| 2001 | Differential FCM: Increasing Value Prediction Accuracy by Improving Table Usage EfficiencyabstractValue 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 |
HPCA | 3 |
| 2001 | Early design phase power/performance modeling through statistical simulationabstractMicroprocessor 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 |
ISPASS | 2 |
| 2001 | Efficient profile-based evaluation of randomising set index functions for cache memoriesabstractThe 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 |
ISPASS | 2 |
| 2001 | alto: a link-time optimizer for the Compaq AlphaabstractTraditional 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 |
COORDINATION | 2 |
| 2000 | A Technique for High Bandwidth and Deterministic Low Latency Load/Store Accesses to Multiple Cache BanksabstractOne 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 |
HPCA | 3 |
| 2000 | Performance analysis through synthetic trace generationabstractMost 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 |
ISPASS | 2 |
| 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 SystemabstractThis 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 |
COORDINATION | 1 |
| 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 TextabstractProlog 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 PrologabstractThis 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 |
ICLP | 2 |
| 1994 | Call Forwarding: A Simple Interprocedural Optimization Technique for Dynamically Typed LanguagesabstractThis 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 |
POPL | 1 |
| 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 |
ICLP | 1 |
| 1989 | EDULAN, a tool for teaching synchronization
Koen De Bosschere |
Microprocessing and Microprogramming | 1 |