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)
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)
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]