Prefetcher.py revision 8831
15086Sgblack@eecs.umich.edufrom m5.SimObject import SimObject 25086Sgblack@eecs.umich.edufrom m5.params import * 35086Sgblack@eecs.umich.educlass BasePrefetcher(SimObject): 45086Sgblack@eecs.umich.edu type = 'BasePrefetcher' 55086Sgblack@eecs.umich.edu abstract = True 65086Sgblack@eecs.umich.edu size = Param.Int(100, 75086Sgblack@eecs.umich.edu "Number of entries in the hardware prefetch queue") 85086Sgblack@eecs.umich.edu cross_pages = Param.Bool(False, 95086Sgblack@eecs.umich.edu "Allow prefetches to cross virtual page boundaries") 105086Sgblack@eecs.umich.edu serial_squash = Param.Bool(False, 115086Sgblack@eecs.umich.edu "Squash prefetches with a later time on a subsequent miss") 125086Sgblack@eecs.umich.edu degree = Param.Int(1, 135086Sgblack@eecs.umich.edu "Degree of the prefetch depth") 145086Sgblack@eecs.umich.edu latency = Param.Latency('10t', 155086Sgblack@eecs.umich.edu "Latency of the prefetcher") 165086Sgblack@eecs.umich.edu use_cpu_id = Param.Bool(True, 175086Sgblack@eecs.umich.edu "Use the CPU ID to separate calculations of prefetches") 185086Sgblack@eecs.umich.edu data_accesses_only = Param.Bool(False, 195086Sgblack@eecs.umich.edu "Only prefetch on data not on instruction accesses") 205086Sgblack@eecs.umich.edu 215086Sgblack@eecs.umich.educlass GHBPrefetcher(BasePrefetcher): 225086Sgblack@eecs.umich.edu type = 'GHBPrefetcher' 235086Sgblack@eecs.umich.edu cxx_class = 'GHBPrefetcher' 245086Sgblack@eecs.umich.edu 255086Sgblack@eecs.umich.educlass StridePrefetcher(BasePrefetcher): 265086Sgblack@eecs.umich.edu type = 'StridePrefetcher' 275086Sgblack@eecs.umich.edu cxx_class = 'StridePrefetcher' 285086Sgblack@eecs.umich.edu 295086Sgblack@eecs.umich.educlass TaggedPrefetcher(BasePrefetcher): 305086Sgblack@eecs.umich.edu type = 'TaggedPrefetcher' 3111793Sbrandon.potter@amd.com cxx_class = 'TaggedPrefetcher' 3211793Sbrandon.potter@amd.com 335086Sgblack@eecs.umich.edu 345086Sgblack@eecs.umich.edu 355086Sgblack@eecs.umich.edu 365086Sgblack@eecs.umich.edu