Proper TLB management
The TLB is currently flushed much more often than necessary, which makes errors very unlikely, but TLB flushing is not synchronized across threads e.g. when deallocating/downgrading mappings, and not optimized. This is also required for future optimizations such as PCID.