CHERI Performance Enhancement for a Bytecode Interpreter
summary
Porting MicroPython to CHERI/Morello shows actual fixes, not promises: PMCstat sampling finds 99% allocator samples on bad cases, then changing the default block size to match pointer size and raising the frame spill threshold cuts huge fragmentation-caused slowdowns. Patching the VM loop binary to work around immature LLVM back end reduces interpreter overhead further. Results: geometric-mean slowdown falls to ~1.7x (from ~5x reported), worst cases drop from ~100x to ~2x, with only ~16% extra instructions retired. change block size to pointer size patch VM loop binary
AI-written summary · about
chapters (10)
- 0:00CHERI and talk intro
- 1:15CHERI architecture basics
- 8:45Performance overhead observed
- 10:29Memory alloc overhead causes
- 13:52Fixing allocator pointer sizes
- 16:44Adjusting spilling thresholds
- 18:12LLVM optim gaps in CHERI
- 21:28Final perf results
- 22:54Takeaways and future work
- 24:46Q&A
related talks
20mMorello MicroPython: A Python Interpreter for CHERI
23mInterpreter Memory Safety via Differential Fuzzing with a CHERI on Top
53mLinux and CHERI: Back to the Future
10mCHERI in out-of-order microarchitectures
20mMaking CHERI Accessible
18mWhat’s next for memory safety?
19mStatic Analysis for CHERI
31mMemory Safety: The Pernicious Challenge
