On Jan 5, 2011, at 9:36 PM, Toru Nishimura wrote: > Matt Thomas made a comment; > >> The ASID generational stuff has a downside in that valid entries will be >> thrown away. For mips (and booke) I use >> a different algorithm which eliminates the overhead of >> discarding all the TLB entries when you run out of ASIDs. > > It's a good move to pursue efficent ASID management > schemes since it's the key area for runtime VM/TLB activity. > > Matt points loosing valid entries is a problem when ASID > generation is going to get bumped. I think, however, it'd be > forgiven that tbia() operation, to discard all entries but global > or locked, discards "live entries" since TLB size is still small > enough. Some CPU architectures do it with a single > special instruction or others do at-most 64 time loop to discard. > TLB is a cache for VA->PA translation and the management > scheme always provokes "efficiency v.s. correctness" > arguments. It's a matter of implementation tradeoff, I believe.
More systems are getting larger numbers of TLB entries. The mpc85xx has 512 4KB fixed-size and 16 variable-sized TLB entries. One newer MIPS64 processor has 2048 4KB fixed-size and 128 variable sized TLB entries and includes a page table walker. Both of the fixed-size TLBs are set/way organized unlike the variable TLBs which are fully associative. Invalidate all becomes expensive when your TLBs get very large as does discarding live entries.