aex-emu 22.09 & future plans
This is the first tag after forking from FEX-Emu, and as such is not a full, stable release.
Highlights
OBJ Cache and IR Cache have been merged
These have been pending for quite some time, and they are now merged.
OBJ Cache is enabled by default, and brings an ~ 8-10x speedup on launching applications that have been cached. First launch performance isn’t affected much.
OBJC benchmarks @ NVIDIA Orin
No Cache | OBJ Cache | Native |
---|---|---|
277ms | 29ms | 7ms |
No Cache
New, linear-time register allocator, has been merged
The old FEX-Emu register allocator has very bad runtime performance, while generating mediocre code and being overly complex.
NRA implements a much simpler, linear-scan scheme, is less than half lines of code, and runs much faster while generating marginalby worse object code. It also doesn’t need the RA to be compacted.
A new switch, --ra=cra|nra
controls which register allocator is used
RA benchmarks @ NVIDIA Orin
/bin/ls
CRA | NRA | IRINT |
---|---|---|
280ms | 215ms | crashes |
/bin/true
CRA | NRA | IRINT |
---|---|---|
160ms | 125ms | 255 ms |
Address space stealing optimisations
This is a minor startup optimisation that was PR’d before the fork. See https://github.com/FEX-Emu/FEX/pull/1885 for more details.
Syncing up with upstream
This release contains most of the FEX-2209 improvements. See https://fex-emu.com/FEX-2209/ for more details.
Future plans
skmp has a pretty ambitious plan for aex-emu over the following months, with a strong focus on improving code quality, latency and sustained performance.
The current milestones are
22.10
- Infastructure setup (CI, CD)
- Major architectural changes in the project
- Re-worked thunking system / goals
- base work for optimisations
- See https://gitlab.com/aex-emu/aex/-/milestones/1#tab-issues for details
22.11
- Focused on optimisations & bug fixes
- See https://gitlab.com/aex-emu/aex/-/milestones/2#tab-issues for details
22.12
- Focused bug fixes, qa & polishing
- See https://gitlab.com/aex-emu/aex/-/milestones/3#tab-issues for details
With a goals to have an alpha-quality release by the end of October, a beta-quality release by the end of November, and a stable release before December 25th.