Demo Data from VLDB 2026 / reviewers in the wild / expert
M. Anton Ertl
dblp:15/424
· DBLP profile ↗
24ranked-venue papers
12as first author
1since 2021 · last 2024
0000-0002-1290-9444ORCID · corroborated
Domains — the database's venue-derived domains; a paper can count in several
Software engineering, systems software and programming languages · 15 · 11 first-author · 1 since 2021Systems, architecture and hardware · 7 · 1 first-authorApplied, interdisciplinary, general and emerging computing · 1
Expertise — from the expertise taxonomy: the topics of the expert's papers under the CCF categories. A weight counts papers with recency: 1 for a paper about the topic, 0.3 when the topic is its context, halved every five years.
| Software engineering, system software, and programming languages
7 papers |
Runtime systems and virtual machines · 46% Compilers and program optimization · 41% Programming languages and type systems · 13% | |
| Computer architecture, parallel and distributed computing, and storage systems
3 papers |
Processor architecture and microarchitecture · 100% |
Topics — the 14 heaviest of 16, each with the papers that count most for it
| Topic | Weight | Papers | Last | Evidence papers |
|---|---|---|---|---|
Runtime systems and virtual machines › interpreter
interpreter optimization |
0.1 | 3 | 2007 | Optimizing indirect branch prediction accuracy in virtual machine interpreters · ACM Trans. Program. Lang. Syst. 2007 Optimizing indirect branch prediction accuracy in virtual machine interpreters · PLDI 2003 Stack Caching for Interpreters · PLDI 1995 |
Processor architecture and microarchitecture
branch prediction |
0.1 | 2 | 2007 | Optimizing indirect branch prediction accuracy in virtual machine interpreters · ACM Trans. Program. Lang. Syst. 2007 Optimizing indirect branch prediction accuracy in virtual machine interpreters · PLDI 2003 |
Compilers and program optimization
code generation |
0.1 | 2 | 2006 | Fast and flexible instruction selection with on-demand tree-parsing automata · PLDI 2006 Optimal Code Selection in DAGs · POPL 1999 |
Compilers and program optimization › code generation
instruction selection |
0.1 | 2 | 2006 | Fast and flexible instruction selection with on-demand tree-parsing automata · PLDI 2006 Optimal Code Selection in DAGs · POPL 1999 |
Runtime systems and virtual machines
interpreter design |
0.1 | 1 | 2008 | Virtual machine showdown: Stack versus registers · ACM Trans. Archit. Code Optim. 2008 |
Programming languages and type systems
method dispatch |
0.1 | 1 | 2008 | Virtual machine showdown: Stack versus registers · ACM Trans. Archit. Code Optim. 2008 |
Runtime systems and virtual machines
virtual machine architecture |
0.1 | 1 | 2008 | Virtual machine showdown: Stack versus registers · ACM Trans. Archit. Code Optim. 2008 |
Processor architecture and microarchitecture › branch prediction
branch target buffer |
0.1 | 1 | 2007 | Optimizing indirect branch prediction accuracy in virtual machine interpreters · ACM Trans. Program. Lang. Syst. 2007 |
Compilers and program optimization
register allocation |
0.1 | 3 | 2008 | Virtual machine showdown: Stack versus registers · ACM Trans. Archit. Code Optim. 2008 Stack Caching for Interpreters · PLDI 1995 Software pipelining with register allocation and spilling · MICRO 1994 |
Processor architecture and microarchitecture › branch prediction
indirect branch prediction |
0.0 | 1 | 2003 | Optimizing indirect branch prediction accuracy in virtual machine interpreters · PLDI 2003 |
Compilers and program optimization › register allocation
register spilling |
0.0 | 1 | 1994 | Software pipelining with register allocation and spilling · MICRO 1994 |
Compilers and program optimization › instruction scheduling
software pipelining |
0.0 | 1 | 1994 | Software pipelining with register allocation and spilling · MICRO 1994 |
Algorithms and data structures
dynamic programming |
0.0 | 1 | 1999 | Optimal Code Selection in DAGs · POPL 1999 |
Processor architecture and microarchitecture
instruction-level parallelism |
0.0 | 1 | 1994 | Software pipelining with register allocation and spilling · MICRO 1994 |
Methods — techniques the papers use, named apart from their topics
static optimization · 0.1dynamic optimization · 0.1dynamic programming · 0.1switch dispatch · 0.1instruction replication · 0.1inline threading · 0.1direct threading · 0.1bytecode translation · 0.1branch target buffer · 0.1on-demand tree-parsing automata · 0.1superinstructions · 0.0tree parsing · 0.0register-pressure-sensitive scheduling · 0.0register requirement graph · 0.0
| Year | Publication | Venue | Position |
|---|---|---|---|
| 2024 | The Performance Effects of Virtual-Machine Instruction Pointer Updates
M. Anton Ertl, Bernd Paysan |
ECOOP | 1 |
| 2018 | Fast and flexible instruction selection with constraintsabstractTree-parsing instruction selection as used in, e.g., lcc, uses dynamic costs to gain flexibility and handle situations (such as read-modify-write instructions) that do not fit into the basic tree-parsing model. The disadvantage of dynamic costs is that we can no longer turn the tree grammar into a tree automaton (as is done by burg) for fast instruction selection for JIT compilers. In this paper we introduce constraints that say whether a tree-grammar rule is applicable or not. While theoretically less powerful than dynamic costs, constraints cover the practical uses of dynamic costs; more importantly, they allow turning the tree grammar with constraints into a tree automaton (with instruction-selection-time checks), resulting in faster instruction selection than with pure instruction-selection-time dynamic programming. We integrate constraints in an instruction selector that matches DAGs with tree rules. We evaluate this concept in lcc and the CACAO JavaVM JIT compiler, and see instruction selector speedups by a factor 1.33--1.89. Patrick Thier, M. Anton Ertl, Andreas Krall |
CC | 2 |
| 2008 | Virtual machine showdown: Stack versus registersabstractVirtual machines (VMs) enable the distribution of programs in an architecture-neutral format, which can easily be interpreted or compiled. A long-running question in the design of VMs is whether a stack architecture or register architecture can be implemented more efficiently with an interpreter. We extend existing work on comparing virtual stack and virtual register architectures in three ways. First, our translation from stack to register code and optimization are much more sophisticated. The result is that we eliminate an average of more than 46% of executed VM instructions, with the bytecode size of the register machine being only 26% larger than that of the corresponding stack one. Second, we present a fully functional virtual-register implementation of the Java virtual machine (JVM), which supports Intel, AMD64, PowerPC and Alpha processors. This register VM supports inline-threaded, direct-threaded, token-threaded, and switch dispatch. Third, we present experimental results on a range of additional optimizations such as register allocation and elimination of redundant heap loads. On the AMD64 architecture the register machine using switch dispatch achieves an average speedup of 1.48 over the corresponding stack machine. Even using the more efficient inline-threaded dispatch, the register VM achieves a speedup of 1.15 over the equivalent stack-based VM. Yunhe Shi, Kevin Casey, M. Anton Ertl, David Gregg |
ACM Trans. Archit. Code Optim. | 3 |
| 2007 | Optimizing indirect branch prediction accuracy in virtual machine interpretersabstractInterpreters designed for efficiency execute a huge number of indirect branches and can spend more than half of the execution time in indirect branch mispredictions. Branch target buffers (BTBs) are the most widely available form of indirect branch prediction; however, their prediction accuracy for existing interpreters is only 2%--50%. In this article we investigate two methods for improving the prediction accuracy of BTBs for interpreters: replicating virtual machine (VM) instructions and combining sequences of VM instructions into superinstructions. We investigate static (interpreter build-time) and dynamic (interpreter runtime) variants of these techniques and compare them and several combinations of these techniques. To show their generality, we have implemented these optimizations in VMs for both Java and Forth. These techniques can eliminate nearly all of the dispatch branch mispredictions, and have other benefits, resulting in speedups by a factor of up to 4.55 over efficient threaded-code interpreters, and speedups by a factor of up to 1.34 over techniques relying on dynamic superinstructions alone. Kevin Casey, M. Anton Ertl, David Gregg |
ACM Trans. Program. Lang. Syst. | 2 |
| 2006 | An Embedded Systems Programming Environment for CabstractResource constraints are a major concern with the design, development, and deployment of embedded systems. Embedded systems are highly hardware-dependent and have little computational power. Mobile embedded systems are further constrained by their limited battery capacity. Many of these systems are still programmed in assembly language because there is a lack of efficient programming environments. To overcome or at least alleviate the restrictions, we propose a light-weight and versatile programming environment for the C programming language that offers mixed-mode execution, i.e., code is either executed on the CPU or on a virtual machine (VM). This mixed-mode execution environment combines the advantages of highly compressed bytecode with the speed of machine code. We have implemented the programming environment and conducted experiments for selected programs of the MiBench suite and the Spec 2000. The VM has a footprint of 12 KB on the Intel IA32. Initial results show that the performance of the virtual machine is typically only 2 to 36 times slower than the binary execution, with compressed code occupying only 36%–57% of the machine code size. Combining sequences of VM instructions into new VM instructions (superinstructions) increases the execution speed and reduces the VM code size. Preliminary experiments indicate a speedup by a factor of 3. These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves. Bernd Burgstaller, Bernhard Scholz, M. Anton Ertl |
Euro-Par | 3 |
| 2006 | Fast and flexible instruction selection with on-demand tree-parsing automataabstractTree parsing as supported by code generator generators like BEG, burg, iburg, lburg and ml-burg is a popular instruction selection method. There are two existing approaches for implementing tree parsing: dynamic programming, and tree-parsing automata; each approach has its advantages and disadvantages. We propose a new implementation approach that combines the advantages of both existing approaches: we start out with dynamic programming at compile time, but at every step we generate a state for a tree-parsing automaton, which is used the next time a tree matching the state is found, turning the instruction selector into a fast tree-parsing automaton. We have implemented this approach in the Gforth code generator. The implementation required little effort and reduced the startup time of Gforth by up to a factor of 2.5. M. Anton Ertl, Kevin Casey, David Gregg |
PLDI | 1 |
| 2006 | Optimizing code-copying JIT compilers for virtual stack machinesabstractAbstract Just‐in‐time (JIT) compilers are widely used to implement stack‐based virtual machines, such as the Java and .NET virtual machines. One disadvantage of most JIT compilers is that they are unportable; much of the back‐end is specific to the target machine. An alternative to machine‐specific code generation methods is to define a routine in a high‐level language for each virtual machine instruction. These can be compiled to native code using a normal C compiler. The native code for these routines can then be strung together, allowing very simple, unoptimized code to be produced just in time. In this paper we present such a system based on an existing implementation of the Forth language. We present a novel system of optimizations for the system based on exploiting common sequences of virtual machine instructions. We use a small domain specific language and tool to generate stack‐optimized code for sequences of virtual machine instructions, and for choosing the most useful sequences for a code‐copying compiler. By measuring the length of the resulting executable code, we allow machine‐specific sequences to be chosen without any machine‐dependent code in our system. Experimental results show that best (average) speedups of 47.2% (15.75%) are possible on a Pentium 4 machine, and even higher an a PowerPC based machine. Furthermore, our optimizations allow the size of the generated code to be reduced by an average of 17.9% on the Pentium 4, and 20.5% on the PowerPC over a wide range of programs. Copyright © 2006 John Wiley & Sons, Ltd. David Gregg, M. Anton Ertl |
Concurr. Comput. Pract. Exp. | 2 |
| 2005 | Tiger - An Interpreter Generation Tool
Kevin Casey, David Gregg, M. Anton Ertl |
CC | 3 |
| 2005 | Virtual machine showdown: stack versus registersabstractVirtual machines (VMs) are commonly used to distribute programs in an architecture-neutral format, which can easily be interpreted or compiled. A long-running question in the design of VMs is whether stack architecture or register architecture can be implemented more efficiently with an interpreter. We extend existing work on comparing virtual stack and virtual register architectures in two ways. Firstly, our translation from stack to register code is much more sophisticated. The result is that we eliminate an average of more than 47% of executed VM instructions, with the register machine bytecode size only 25% larger than that of the corresponding stack bytecode. Secondly we present an implementation of a register machine in a fully standard-compliant implementation of the Java VM. We find that, on the Pentium 4, the register architecture requires an average of 32.3% less time to execute standard benchmarks if dispatch is performed using a C switch statement. Even if more efficient threaded dispatch is available (which requires labels as first class values), the reduction in running time is still approximately 26.5% for the register architecture. Yunhe Shi, David Gregg, Andrew Beatty, M. Anton Ertl |
VEE | 4 |
| 2005 | Advances in interpreters, virtual machines and emulators
M. Anton Ertl |
Sci. Comput. Program. | 1 |
| 2003 | Optimizing indirect branch prediction accuracy in virtual machine interpretersabstractInterpreters designed for efficiency execute a huge number of indirect branches and can spend more than half of the execution time in indirect branch mispredictions. Branch target buffers are the best widely available form of indirect branch prediction; however, their prediction accuracy for existing interpreters is only 2%--50%. In this paper we investigate two methods for improving the prediction accuracy of BTBs for interpreters: replicating virtual machine (VM) instructions and combining sequences of VM instructions into superinstructions. We investigate static (interpreter build-time) and dynamic (interpreter run-time) variants of these techniques and compare them and several combinations of these techniques. These techniques can eliminate nearly all of the dispatch branch mispredictions, and have other benefits, resulting in speedups by a factor of up to 3.17 over efficient threaded-code interpreters, and speedups by a factor of up to 1.3 over techniques relying on superinstructions alone. M. Anton Ertl, David Gregg |
PLDI | 1 |
| 2003 | Towards Superinstructions for Java Interpreters
Kevin Casey, David Gregg, M. Anton Ertl, Andy Nisbet |
SCOPES | 3 |
| 2002 | Building an Interpreter with Vmgen
M. Anton Ertl, David Gregg |
CC | 1 |
| 2002 | Vmgen - a generator of efficient virtual machine interpretersabstractAbstract In a virtual machine interpreter, the code for each virtual machine instruction has similarities to code for other instructions. We present an interpreter generator that takes simple virtual machine instruction descriptions as input and generates C code for processing the instructions in several ways: execution, virtual machine code generation, disassembly, tracing, and profiling. The generator is designed to support efficient interpreters: it supports threaded code, aching the top‐of‐stack item in a register, combining simple instructions into superinstructions, and other optimizations. We have used the generator to create interpreters for Forth and Java. Theresulting interpreters are faster than other interpreters for the same languages and they are typically 2–10 times slower than code produced by native‐code compilers. We also present results for the effects of the individual optimizations supported by the generator. Copyright © 2002 John Wiley & Sons, Ltd M. Anton Ertl, David Gregg, Andreas Krall, Bernd Paysan |
Softw. Pract. Exp. | 1 |
| 2001 | The Behavior of Efficient Virtual Machine Interpreters on Modern Architectures
M. Anton Ertl, David Gregg |
Euro-Par | 1 |
| 1999 | Optimal Code Selection in DAGsabstractWe extend the tree parsing approach to code selection to DAGs. In general, our extension does not produce the optimal code selection for all DAGs (this problem would be NPcomplete) , but for certain code selection grammars, it does. We present a method for checking whether a code selection grammar belongs to this set of DAG-optimal grammars, and use this method to check code selection grammars adapted from lcc: the grammars for the MIPS and SPARC architectures are DAG-optimal, and the code selection grammar for the 386 architecture is almost DAG-optimal. M. Anton Ertl |
POPL | 1 |
| 1998 | Local Stack Allocation
Martin Maierhofer, M. Anton Ertl |
CC | 2 |
| 1996 | Removing Anti Dependences by Repairing
M. Anton Ertl, Andreas Krall |
CC | 1 |
| 1995 | Decomposed software pipelining with reduced register requirement
Jian Wang 0046, Andreas Krall, M. Anton Ertl |
PACT | 3 |
| 1995 | Stack Caching for InterpretersabstractAn interpreter can spend a significant part of its execution time on accessing arguments of virtual machine instructions. This paper explores two methods to reduce this overhead for virtual stack machines by caching top-of-stack values in (real machine) registers. The dynamic method is based on having, for every possible state of the cache, one specialized version of the whole interpreter; the execution of an instruction usually changes the state of the cache and the next instruction is executed in the version corresponding to the new state. In the static method a state machine that keeps track of the cache state is added to the compiler. Common instructions exist in specialized versions for several states, but it is not necessary to have a version of every instruction for every cache state. Stack manipulation instructions are optimized away. M. Anton Ertl |
PLDI | 1 |
| 1995 | Trace software pipelining
Jian Wang 0046, Andreas Krall, M. Anton Ertl |
J. Comput. Sci. Technol. | 3 |
| 1994 | Delayed Exceptions - Speculative Execution of Trapping Instructions
M. Anton Ertl, Andreas Krall |
CC | 1 |
| 1994 | Software pipelining with register allocation and spillingabstractThis paper studies the problem of simultaneous register allocation and software pipelining. We present the register requirement graph to dynamically reflect the register requirement during software pipelining and develop a Register-Pressure-Sensitive (RPS) scheduling technique. Three algorithms-RPS without spilling, RPS with spilling and software pipelining with a limited number of registers-are proposed. The preliminary experimental results show the efficiency of the three algorithms. Jian Wang 0046, Andreas Krall, M. Anton Ertl, Christine Eisenbeis |
MICRO | 3 |
| 1992 | Instruction Scheduling for Complex Pipelines
M. Anton Ertl, Andreas Krall |
CC | 1 |