Add Transactional/Commit abort interpreter optimisation

Mamy Ratsimbazafy 2018-11-28 11:33:43 +01:00
parent 06e56ce3fc
commit bd3c6aad1e
1 changed files with 8 additions and 0 deletions

@ -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/)