On Tue, Apr 14, 2009 at 11:42 AM, nathan binkert <[email protected]> wrote:
> I'll admit that I'm not following this thread very closely, but the > biggest question I have is: is it necessary to actually do the > translation in the translation pipe stage? Can't it just be there to > burn a cycle while you do the actual translation when executing the > read? > That's a very good question... the one case I can think of where it might matter is if you wanted to take some action immediately at the end of the TLB access based on whether the TLB hit or miss. In general you probably wouldn't do anything until the instruction hit retire though, so I'm not convinced that's a realistic scenario. Another question for Korey though is what if you want to model a virtually indexed physically tagged cache where the cache and TLB accesses are concurrent? In that case it might not be easy to guarantee that translate() is called before read() or write(). Even for the case of doing the EA calculation separately, the only reason we actually *did* the EA calculation (as opposed to just letting the CPU model do some abstract accounting for the timing model) is because we needed the actual EA to do load/store disambiguation. I think if we had just wanted to model having a separate function unit to do the EA calculation we would have done something more like what Nate is suggesting. Steve
_______________________________________________ m5-dev mailing list [email protected] http://m5sim.org/mailman/listinfo/m5-dev
