It's all not necessarily roses there either as you'll need to get
the CPU model to call translate 3 times, but that is probably more
contained and you might be able to leverage the WholeTranslation code
(see src/cpu/translation.hh) which is normally used for requests that
cross a page boundary. If you end up taking a fault that the cpu needs
to handle (e.g. on page that has been malloced, but not actually
allocated by the kernel) it's still going to be trouble. However, you
can probably work around this with your benchmark. 

Ali 

On 09.02.2012
11:27, Paul Rosenfeld wrote: 

> Well that doesn't sound like fun.
Perhaps I'll look at ARM as a potential target. 
> 
> On Thu, Feb 9,
2012 at 11:39 AM, Ali Saidi <sa...@umich.edu [13]> wrote:
> 
>> It's
possible with Alpha, but it would take some work. You'd need to "take" a
fault up to times and in between each time fix-up the fault status
registers to have consistant data. Keeping track of what needs to be in
the register as any one time sounds difficult, especially as translation
faults can nest (you take a fault on the page table that you need te
look at). An architecture with a hardware table walker is probably a bit
easier to deal with. 
>> 
>> Ali 
>> 
>> On 09.02.2012 10:09, Paul
Rosenfeld wrote: 
>> 
>>> Thanks for the replies. I'm still trying to
find my way around M5 and I thought the SE/TimingSimpleCPU would be a
good way to see what's involved in modifying M5. 
>>> One thing that I'm
worried about is that for this work, I have multiple memory operands in
registers that need to be translated to physical addresses. In the SE
mode, I've simply added a new fake Fault where it will translate all 3
addresses. However, I'm not sure if a similar approach would be possible
in FS mode (I haven't looked at how any of the PAL stuff works). Do you
think it would be more feasible to generate multiple single TLB faults
per operand in the instruction, or to do something where they all get
translated together using a new fault? 
>>> 
>>> On Thu, Feb 9, 2012 at
10:16 AM, Ali Saidi <sa...@umich.edu [12]> wrote:
>>> 
>>>> Hi Paul,

>>>> 
>>>> Yes, in SE mode, it's just faked as a pipeline flush (in the
simple CPU model then pretty much nothing happens). It should be
reasonably easy to change the model to delay some number of ns on a TLB
miss, but you'll get the best results by running in fs mode. 
>>>> 
>>>>
Ali 
>>>> 
>>>> On 09.02.2012 01:05, Paul Rosenfeld wrote: 
>>>> 
>>>>>
So do you think that my reasoning that the TLB miss penalty is simply a
single cycle re-fetch penalty on the faulting instruction is correct for
ALPHA_SE/TimingSimpleCPU? 
>>>>> 
>>>>> On Thu, Feb 9, 2012 at 12:31 AM,
Gabriel Michael Black <gbl...@eecs.umich.edu [9]> wrote:
>>>>> 
>>>>>> I
believe that's correct. 
>>>>>> 
>>>>>> Gabe
>>>>>> 
>>>>>> Quoting Paul
Rosenfeld <dramnin...@gmail.com [6]>:
>>>>>> 
>>>>>>> I guess I forgot
to mention in my original email that I was talking about
>>>>>>>
alpha.... I think in FS it will vector into a PAL routine, but in SE
it
>>>>>>> looks like it's all just faked ...
>>>>>>> 
>>>>>>> On Wed,
Feb 8, 2012 at 11:08 PM, Gabriel Michael Black <
>>>>>>>
gbl...@eecs.umich.edu [5]> wrote:
>>>>>>> 
>>>>>>>> There are two types
of mechanisms to handle TLB misses, in hardware or in
>>>>>>>> software.
If the ISA you're using does it in software, there's a fault
>>>>>>>>
which makes the OS handle the miss. In that case it will take however
long
>>>>>>>> it takes the OS to get things set up again. If the miss is
handled in
>>>>>>>> hardware, then there's a TLB walker component which
does memory accesses to
>>>>>>>> look up the entry in the page tables,
and the delay is determined by those
>>>>>>>> accesses.
>>>>>>>>

>>>>>>>> Gabe
>>>>>>>> 
>>>>>>>> Quoting Paul Rosenfeld
<dramnin...@gmail.com [1]>:
>>>>>>>> 
>>>>>>>> Hello all,
>>>>>>>>

>>>>>>>>> I'm trying to modify the TLB code for SimpleTimingCPU, but
one thing I
>>>>>>>>> can't seem to find is what the latency of a DTLB
miss is. I found the code
>>>>>>>>> in NDtbMissFault->invoke() for
reading the page table mapping, but I can't
>>>>>>>>> seem to figure out
if there's any mechanism for stalling the CPU to handle
>>>>>>>>> the
fault.
>>>>>>>>> 
>>>>>>>>> Reading the wiki for the SImpleTimingCPU, it
sounds like it isn't meant to
>>>>>>>>> model this kind of detail. So is
it just a one cycle fetch penalty for
>>>>>>>>> handling a TLB
miss?
>>>>>>>>> 
>>>>>>>>> If this is the case, what's the simplest CPU
model that will actually
>>>>>>>>> stall
>>>>>>>>> for TLB
misses?
>>>>>>>>> 
>>>>>>>>> Thanks,
>>>>>>>>> Paul
>>>>>>>>
______________________________**_________________
>>>>>>>> gem5-users
mailing list
>>>>>>>> gem5-users@gem5.org [2]
>>>>>>>>
http://m5sim.org/cgi-bin/**mailman/listinfo/gem5-users
[3]<http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users [4]>
>>>>>>

>>>>>> _______________________________________________
>>>>>>
gem5-users mailing list
>>>>>> gem5-users@gem5.org [7]
>>>>>>
http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users [8]
>>>> 
>>>>
_______________________________________________
>>>> gem5-users mailing
list
>>>> gem5-users@gem5.org [10]
>>>>
http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users [11]




Links:
------
[1] mailto:dramnin...@gmail.com
[2]
mailto:gem5-users@gem5.org
[3]
http://m5sim.org/cgi-bin/**mailman/listinfo/gem5-users
[4]
http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users
[5]
mailto:gbl...@eecs.umich.edu
[6] mailto:dramnin...@gmail.com
[7]
mailto:gem5-users@gem5.org
[8]
http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users
[9]
mailto:gbl...@eecs.umich.edu
[10] mailto:gem5-users@gem5.org
[11]
http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users
[12]
mailto:sa...@umich.edu
[13] mailto:sa...@umich.edu
_______________________________________________
gem5-users mailing list
gem5-users@gem5.org
http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users

Reply via email to