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

Reply via email to