I'm part way through the conversion so I have some more direct experience with this now. Comments follow.
> >> The main place translateDataReadReq, translateDataWriteReq, and >> translateInstReq are used as far as I known actually is by instructions so >> they can try out accesses without actually sending any data around. It was >> needed by some of x86's microops at least, but other things in other ISAs >> may use it too. > > > I thought the main usage was in the CPU models' read() and write() > functions. Do x86 microops actually access the translations directly or do > they just need to test them (e.g., they're no-ops except for the potential > side effect of faulting)? They just check to see if there would be a fault, basically. There were calls inside the CPUs which must have been added later, but essentially the same thing is pretty easily accomplished by using the TLB directly. > >> I think the reason the translate* functions ended up in any of the thread >> contexts was just that I didn't really understand the distinction when I >> added it, and it worked out since the function was always atomic. There may >> be no consumer of translate* as a member of the thread contexts. > > > It would be interesting to verify that. This is essentially true. There were places where the translate* functions were used in as a shortcut where calling the TLB directly would be entirely equivalent. I've changed those over and they're working fine. Gabe _______________________________________________ m5-dev mailing list [email protected] http://m5sim.org/mailman/listinfo/m5-dev
