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

Reply via email to