Hi Gabe, It is reasonable to make the page size a parameter to the RubyPrefetcher (and default to 4KiB). I would hesitate from making the "cross_page" parameter implicit based on the page size parameter. IMO, that's confusing and error prone. Also, this is the smallest change with the least chance of unexpected consequences.
Cheers, Jason On Tue, Sep 14, 2021 at 2:15 AM Gabe Black via gem5-dev <[email protected]> wrote: > Hi folks. I'm currently looking at getting rid of the arch/page_size.hh > header file (123 change series for vecregs.hh waiting for review, needs > attention from ARM next), and I have at least a good game plan to get rid > of the usage of the PageShift and PageBytes constants in most places. > > The one tricky place I'm probably going to have the most trouble with are > the prefetchers, both Ruby and classic, and in particular the Ruby one. In > the classic prefetchers, only the queued prefetcher seems to care what the > page size is. Also it only cares if there is a TLB associated with the > prefetcher. If there is, then that's a pretty good ISA specific spot to > feed in the page size information, and if it's missing nobody cares. I can > handle that without affecting any existing functionality that is at least > checked in upstream. > > On the Ruby side, there are three configs which both use the > RubyPrefetcher object, and don't have it's "cross_page" property set to > True, which makes (as far as I can tell) crossing page boundaries > irrelevant. That one config is configs/ruby/MESI_Two_Level.py. > > Is it reasonable to make the page size to respect a config parameter on > RubyPrefetcher? > > There are currently two parameters which are effectively related to page > size, whether it's ok to cross page boundaries, and the System object which > is only used to get the page size. Would it be reasonable to make that a > single page size parameter, which if unset implicitly means page crossing > is ok? > > I think from a configuration perspective this is maybe a little better, > since maybe you want your prefetcher to work on some non standard page > boundary for some reason. Maybe you're using lots of large pages or > something. It is slightly more manual, since the system object is currently > found automatically, and the page size is implicit with the system object. > > This implicitness is precisely the problem we have to fix though, since if > there isn't an implicit global ISA to use with an implicit (but > artificially forced) single page size to use, then there is no way for this > setting to remain implicit. It would really just be a question of where the > setting was/came from. > > Looking for input from Ruby people, and people that work with the memory > system and setups where the prefetcher is an important consideration in > that system. > > Gabe > _______________________________________________ > gem5-dev mailing list -- [email protected] > To unsubscribe send an email to [email protected] > %(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s
_______________________________________________ gem5-dev mailing list -- [email protected] To unsubscribe send an email to [email protected] %(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s
