Beispiel #1
0
 def calculate_miss_ratio_for_all_sets(self,
                                       set_access_histogram,
                                       unscaled_set_reuse_histogram,
                                       prescaled=False):
     set_miss_rates = {}
     (set_scaling_factors, scaled_set_reuse_histograms) = \
         self.scale_and_resample_all_set_histograms(set_access_histogram, unscaled_set_reuse_histogram, prescaled)
     for set in range(0, self.number_of_sets):
         # Skip if we don't have any set data for this set
         #if not set in set_scaling_factors:
         #    continue
         # lrumodel shoudl take a histogram okay, but apparently not
         scaled_set_reuse_histogram = scaled_set_reuse_histograms[set]
         #print scaled_set_reuse_histogram
         if (len(scaled_set_reuse_histogram) == 0):
             self.debug(
                 "Set " + str(set) +
                 " miss ratio: 0.0 (no accesses to set)", 4)
             continue
         # FIXME: we should not have to do this, but lrumodel does not work with Histograms for some reason
         blah = {}
         for k, v in scaled_set_reuse_histogram:
             blah[k] = v
         set_miss_rates[set] = lrumodel.miss_ratio(
             blah)  #scaled_set_reuse_histogram)
         # FIXME: Is the missrate for byte size or number of lines? self.line_size_bytes*
         self.debug(
             "Set " + str(set) + " miss ratio: " +
             str(set_miss_rates[set][self.associativity]), 4)
     return (set_miss_rates, set_scaling_factors)
Beispiel #2
0
 def calculate_miss_ratio_for_all_sets(self, set_access_histogram, unscaled_set_reuse_histogram, prescaled=False):
     set_miss_rates = {}
     (set_scaling_factors, scaled_set_reuse_histograms) = \
         self.scale_and_resample_all_set_histograms(set_access_histogram, unscaled_set_reuse_histogram, prescaled)
     for set in range(0, self.number_of_sets):
         # Skip if we don't have any set data for this set
         #if not set in set_scaling_factors:
         #    continue
         # lrumodel shoudl take a histogram okay, but apparently not
         scaled_set_reuse_histogram = scaled_set_reuse_histograms[set]
         #print scaled_set_reuse_histogram
         if (len(scaled_set_reuse_histogram) == 0):
             self.debug("Set " + str(set) + " miss ratio: 0.0 (no accesses to set)", 4)
             continue
         # FIXME: we should not have to do this, but lrumodel does not work with Histograms for some reason
         blah = {}
         for k,v in scaled_set_reuse_histogram:
             blah[k]=v
         set_miss_rates[set] = lrumodel.miss_ratio(blah)#scaled_set_reuse_histogram)
         # FIXME: Is the missrate for byte size or number of lines? self.line_size_bytes*
         self.debug("Set " + str(set) + " miss ratio: " + str(set_miss_rates[set][self.associativity]), 4)
     return (set_miss_rates, set_scaling_factors)
Beispiel #3
0
 def mratio2(self, cpi1, cpi2, cache_size):
     hist1_hat = hist_est(self.hist1, self.mix1, self.mix2, cpi1, cpi2)
     hist2_hat = hist_est(self.hist2, self.mix2, self.mix1, cpi2, cpi1)
     hist_hat = hist_add(hist1_hat, hist2_hat)
     return lrumodel.miss_ratio([hist_hat], [hist2_hat], True)[cache_size]
Beispiel #4
0
 def mratio2(self, cpi1, cpi2, cache_size):
     hist1_hat = hist_est(self.hist1, self.mix1, self.mix2, cpi1, cpi2)
     hist2_hat = hist_est(self.hist2, self.mix2, self.mix1, cpi2, cpi1)
     hist_hat = hist_add(hist1_hat, hist2_hat)
     return lrumodel.miss_ratio([hist_hat], [hist2_hat], True)[cache_size]