public MemCacheMonitor(MemCtrl mctrl) { // Per core - page granularity PerCoreAddrHitCounters = new Dictionary <ulong, int> [Config.N]; for (int i = 0; i < Config.N; i++) { PerCoreAddrHitCounters[i] = new Dictionary <ulong, int>(); } // Per bank - row granularity PerBankAddrHitCounters = new Dictionary <ulong, int> [mctrl.Rmax, mctrl.Bmax]; PerBankAddrLru = new LinkedList <ulong> [mctrl.Rmax, mctrl.Bmax]; for (int r = 0; r < mctrl.Rmax; r++) { for (int b = 0; b < mctrl.Bmax; b++) { PerBankAddrHitCounters[r, b] = new Dictionary <ulong, int>(); PerBankAddrLru[r, b] = new LinkedList <ulong>(); } } // Per channel - page granularity AddrHitCounters = new Dictionary <ulong, int>(); _numHitCounters = Config.mctrl.num_hit_counters; _numHitCountersPerCore = _numHitCounters / Config.N; _numHitCountersPerBank = _numHitCounters / (int)mctrl.Rmax / (int)mctrl.Bmax; _osPageSize = Config.mctrl.os_page_size; _mctrl = mctrl; _cMonType = Config.mctrl.cache_mon_type; _hotAddresses = new HashSet <ulong>(); _numHotHitCountersPerChan = (int)(mctrl.Rmax * mctrl.Bmax * Config.mem.subarray_max * Config.mctrl.keep_hist_counters_per_sa); _numEpochs = 0; }
public RBLA_Monitor(MemCtrl mctrl, DDR3DRAM.Timing tc, DDR3DRAM.Timing old_tc) { _mctrl = mctrl; migration_cost = (int)tc.tLISA_INTER_SA_COPY; _act = 0; _actGain = (int)(old_tc.tRCD - tc.tRCD); _pre = 0; _preGain = (int)(old_tc.tRP - tc.tRP); _prevNetBenefit = 0; _prevAdjust = false; }
public AutoRefresh(MemCtrl mctrl, ulong trefi) : base(mctrl, trefi) { Time = 0; SaCounters = new uint[Config.mem.rank_max]; BankCounters = new uint[Config.mem.rank_max]; SaCountersPerbank = new uint[mctrl.Rmax, mctrl.Bmax]; Array.Clear(SaCounters, 0, (int)Config.mem.rank_max); Array.Clear(BankCounters, 0, (int)Config.mem.rank_max); Array.Clear(SaCountersPerbank, 0, (int)(mctrl.Rmax * mctrl.Bmax)); SaCounterMax = Config.mem.subarray_max; BankCounterMax = Config.mem.bank_max; Cycles = 0; }
public RefreshPolicy(MemCtrl mctrl, ulong trefi) { Mctrl = mctrl; Trefi = trefi / Config.mctrl.refresh_frequency; Cycles = 0; }