[gem5-users] Re: A puzzle about how TLB is emulated

2021-04-23 Thread Leon Zhao via gem5-users
Hi Jason & Nathanael,

Thank you for both of your informative replies. These have been really helpful.

Leon
___
gem5-users mailing list -- gem5-users@gem5.org
To unsubscribe send an email to gem5-users-le...@gem5.org
%(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s


[gem5-users] Re: A puzzle about how TLB is emulated

2021-04-23 Thread Leon Zhao via gem5-users
Hi Jason,

Thank you for such elaborate explanation. I will look into it.

Another weird thing happened today. I noticed that while running a benchmark, 
TLB seemed to have never triggered a miss condition. I came to this conclusion 
because TLB always started and ended at the same tick according to my console 
(my printfs' doing), even for the first few entries since real simulation.

Does this seem natural to you? Should I, in your view, run the benchmark much 
longer and then, like, redirect the output into a file to analyze the tick 
difference? Or maybe I misoperated something?

Looking forward to your reply!
Leon
___
gem5-users mailing list -- gem5-users@gem5.org
To unsubscribe send an email to gem5-users-le...@gem5.org
%(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s


[gem5-users] Re: A puzzle about how TLB is emulated

2021-04-23 Thread Nathanael Premillieu via gem5-users
Hello,

Although not modelled, they do have an impact on performance for the O3 model.
Upon a TLB miss, the access is considered as faulty, triggering a pipeline 
flush and a re-execution.
At that point, the SE page table has been populated and the access gets its 
translation.

Also, I assume that the TLB hit latency is not modelled as it happens in 
parallel to the L1 cache access. But this assumption only hold if your cache 
access latency Is higher than the TLB hit latency (which is usually the case).

Thanks,
Nathanael

From: Jason Lowe-Power via gem5-users [mailto:gem5-users@gem5.org]
Sent: Thursday, April 22, 2021 10:12 PM
To: gem5 users mailing list 
Cc: Θοδωρής Τροχάτος ; Jason Lowe-Power 

Subject: [gem5-users] Re: A puzzle about how TLB is emulated

Hello,

As far as I know, TLB misses are not modeled in SE mode at all.

Cheers,
Jason

On Thu, Apr 22, 2021 at 12:50 PM Θοδωρής Τροχάτος via gem5-users 
mailto:gem5-users@gem5.org>> wrote:
Hi Jason! Thanks for the info!

Do you know what is happening when there is a TLB miss in SE mode?
Is the latency of a TLB miss modeled in some way in SE?
___
gem5-users mailing list -- gem5-users@gem5.org<mailto:gem5-users@gem5.org>
To unsubscribe send an email to 
gem5-users-le...@gem5.org<mailto:gem5-users-le...@gem5.org>
%(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s
___
gem5-users mailing list -- gem5-users@gem5.org
To unsubscribe send an email to gem5-users-le...@gem5.org
%(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s

[gem5-users] Re: A puzzle about how TLB is emulated

2021-04-22 Thread Jason Lowe-Power via gem5-users
Hello,

As far as I know, TLB misses are not modeled in SE mode at all.

Cheers,
Jason

On Thu, Apr 22, 2021 at 12:50 PM Θοδωρής Τροχάτος via gem5-users <
gem5-users@gem5.org> wrote:

> Hi Jason! Thanks for the info!
>
> Do you know what is happening when there is a TLB miss in SE mode?
> Is the latency of a TLB miss modeled in some way in SE?
> ___
> gem5-users mailing list -- gem5-users@gem5.org
> To unsubscribe send an email to gem5-users-le...@gem5.org
> %(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s
>
___
gem5-users mailing list -- gem5-users@gem5.org
To unsubscribe send an email to gem5-users-le...@gem5.org
%(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s

[gem5-users] Re: A puzzle about how TLB is emulated

2021-04-22 Thread Θοδωρής Τροχάτος via gem5-users
Hi Jason! Thanks for the info!

Do you know what is happening when there is a TLB miss in SE mode?
Is the latency of a TLB miss modeled in some way in SE?
___
gem5-users mailing list -- gem5-users@gem5.org
To unsubscribe send an email to gem5-users-le...@gem5.org
%(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s


[gem5-users] Re: A puzzle about how TLB is emulated

2021-04-22 Thread Jason Lowe-Power via gem5-users
Hi Leon,

I believe you're correct. When there is a TLB hit, it's up to the *CPU
model* to model the latency of the TLB access. I think this implementation
was designed this way to give flexibility to the CPU models. Since the TLB
is deeply embedded in the pipeline, we wouldn't want to always have a 1
cycle latency for the TLB. On the other hand, when there is a miss (in FS
mode), the page table walker will model the correct delay.

Cheers,
Jason

On Wed, Apr 21, 2021 at 6:38 AM Leon Zhao via gem5-users <
gem5-users@gem5.org> wrote:

> Hi all,
>
> While I'm doing some research about how TLB is emulated in gem5 the other
> day, I noticed that TLB costs no ticks, which is quite unusual.
> I tried printing current tick before and after (xxx is where I set in my
> print declaration):
> (1) src/cpu/o3/lsq_impl.hh
>  void LSQ::LSQRequest::sendFragmentToTranslation(int i) {
>   xxx
>   the original function body
>   xxx
>  }
> (2) src/cpu/o3/fetch_impl.hh
>  DefaultFetch::finishTranslation(const Fault , const
> RequestPtr _req) {
>   ...
>   xxx
>   if (fault == NoFault) {
> 
> fetchedCacheLines++;
> xxx
> ...
>   }
>   ...
>   }
>
> However, in both cases, both print functions printed the same tick number
> (starting from the very beginning). Is this normal or I found the wrong
> places to implant printf's or there's some misunderstanding about my
> perspective?
>
> Here is a sample of what's left on my console:
>
> !>> TLB starts @ tick=86592000
> !>> TLB ends @ tick=86592000
> !>> TLB starts @ tick=86593000
> !>> TLB ends @ tick=86593000
> !>> TLB starts @ tick=86597000
> !>> TLB ends @ tick=86597000
>
> Any pointers would do. Thanks in advance.
> ___
> gem5-users mailing list -- gem5-users@gem5.org
> To unsubscribe send an email to gem5-users-le...@gem5.org
> %(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s
>
___
gem5-users mailing list -- gem5-users@gem5.org
To unsubscribe send an email to gem5-users-le...@gem5.org
%(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s