Skip to content
  • Xin Tong's avatar
    implementing victim TLB for QEMU system emulated TLB · 88e89a57
    Xin Tong authored
    QEMU system mode page table walks are expensive. Taken by running QEMU
    qemu-system-x86_64 system mode on Intel PIN , a TLB miss and walking a
    4-level page tables in guest Linux OS takes ~450 X86 instructions on
    average.
    
    QEMU system mode TLB is implemented using a directly-mapped hashtable.
    This structure suffers from conflict misses. Increasing the
    associativity of the TLB may not be the solution to conflict misses as
    all the ways may have to be walked in serial.
    
    A victim TLB is a TLB used to hold translations evicted from the
    primary TLB upon replacement. The victim TLB lies between the main TLB
    and its refill path. Victim TLB is of greater associativity (fully
    associative in this patch). It takes longer to lookup the victim TLB,
    but its likely better than a full page table walk. The memory
    translation path is changed as follows :
    
    Before Victim TLB:
    1. Inline TLB lookup
    2. Exit code cache on TLB miss.
    3. Check for unaligned, IO accesses
    4. TLB refil...
    88e89a57