diff --git a/Interpreter-optimization-resources.md b/Interpreter-optimization-resources.md index 9958635..50082be 100644 --- a/Interpreter-optimization-resources.md +++ b/Interpreter-optimization-resources.md @@ -20,6 +20,7 @@ Target audience is Nimbus developers. * Paper by author of ANTLR introducing dynamic replication: Optimizing Indirect Branch Prediction Accuracy in Virtual Machine Interpreter - [link](https://www.scss.tcd.ie/David.Gregg/papers/toplas05.pdf) * Benchmarking VM Dispatch strategies in Rust: Switch vs unrolled switch vs tail call dispatch vs Computed Gotos - [link](https://pliniker.github.io/post/dispatchers/) * Computed Gotos for fast dispatching in the official CPython codebase - [link](https://github.com/python/cpython/blob/9d6171ded5c56679bc295bacffc718472bcb706b/Python/ceval.c#L571-L608) +* Fast Microcode Interpretation with Transactional Commit/Abort - [link](http://www.emulators.com/docs/amas-bt2011.pdf), [Abstract DOI 10.1.1.367.581](http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.367.581), by Intel and Bosch x86 emulator author ## JIT / Dynamic recompilation @@ -57,6 +58,13 @@ But direct threaded code / computed goto only makes use of indirect branches (go cache misses by up to 95% by exploiting all those predictors. However it requires assembly as there is no way to generate arbitrary call and ret instructions. +## Transactional Commit/Abort + +- [Paper Doi 10.1.1.367.581](http://www.emulators.com/docs/amas-bt2011.pdf) by Intel and Bosch x86 emulator author. + +The technique is similar to context threading but can be implemented in pure C. +TODO - desc + ## Codebases - [Bochs x86 emulator](https://sourceforge.net/projects/bochs/)