Hash, Don't Cache (the Page Table)
Radix page tables as implemented in the x86 64 architecture incur a penalty of four memory references for address translation upon each TLB miss. These 4 references become 24 in virtualized setups, accounting for 5% 90% of the runtime and thus motivating chip vendors to incorporate page walk caches (PWCs) Counterintuitively, an ISCA 2010 paper found that radix page tables with PWCs are superior to hashed page tables, yielding up to 5x fewer DRAM accesses per page walk. We challenge this finding and show that it is the result of comparing against a suboptimal hashed implementation that of the Itanium architecture. We show that, when carefully optimized, hashed page tables in fact outperform existing PWC aided x86 64 hardware, shortening benchmark runtimes by 1% 27% and 6% 32% in bare metal and virtualized setups, without resorting to PWCs. We further show that hashed page tables are inherently more scalable than radix designs and are better suited to accommodate the ever increasing memory size; their downside is that they make it more challenging to support such features as superpages.
SIGMETRICS 2016