コード例 #1
0
 public PARBS(MemCtrl.MemCtrl mctrl, MemCtrl.MemCtrl[] mctrls)
     : base(mctrl, mctrls)
 {
     _rank = new int[Config.N];
     _markedMaxLoadPerProc   = new uint[Config.N];
     _markedTotalLoadPerProc = new uint[Config.N];
 }
コード例 #2
0
ファイル: MemSched.cs プロジェクト: sambhavk99/RamulatorSharp
        public MemSched(MemCtrl.MemCtrl mctrl, MemCtrl.MemCtrl[] mctrls)
        {
            Mctrl  = mctrl;
            Mctrls = mctrls;

            LocalBcount  = mctrl.Rmax * mctrl.Bmax;
            GlobalBcount = (uint)mctrls.Length * LocalBcount;
        }
コード例 #3
0
        public ATLAS(MemCtrl.MemCtrl mctrl, MemCtrl.MemCtrl[] mctrls)
            : base(mctrl, mctrls)
        {
            _rank           = new int[Config.N];
            _serviceBankCnt = new uint[Config.N];
            _currService    = new double[Config.N];
            _service        = new double[Config.N];

            _quantumCyclesLeft = Config.sched.quantum_cycles;
        }
コード例 #4
0
ファイル: FRFCFS.cs プロジェクト: sambhavk99/RamulatorSharp
 public FRFCFS_SACAP(MemCtrl.MemCtrl mctrl, MemCtrl.MemCtrl[] mctrls)
     : base(mctrl, mctrls)
 {
     streak = new int[mctrl.Rmax, mctrl.Bmax, mctrl.ddr3.SUBARRAYS_PER_BANK];
     for (int r = 0; r < mctrl.Rmax; r++)
     {
         for (int b = 0; b < mctrl.Bmax; b++)
         {
             for (int s = 0; s < mctrl.ddr3.SUBARRAYS_PER_BANK; s++)
             {
                 streak[r, b, s] = 0;
             }
         }
     }
 }
コード例 #5
0
        public TCM(MemCtrl.MemCtrl mctrl, MemCtrl.MemCtrl[] mctrls)
            : base(mctrl, mctrls)
        {
            _rank = new int[Config.N];

            _service        = new double[Config.N];
            _currService    = new double[Config.N];
            _serviceBankCnt = new uint[Config.N];

            _mpki          = new double[Config.N];
            _prevCacheMiss = new ulong[Config.N];
            _prevInstCnt   = new ulong[Config.N];

            _rbl           = new double[Config.N];
            _shadowRowHits = new ulong[Config.N];

            _blp          = new double[Config.N];
            _blpSampleSum = new uint[Config.N];

            _quantumCyclesLeft = Config.sched.quantum_cycles;

            _nice = new int[Config.N];
            _shuffleCyclesLeft = Config.sched.shuffle_cycles;
        }
コード例 #6
0
        public void Initialize()
        {
            Stat = new Stat();

            // Crossbar
            Xbar = new Xbar();

            // ddr3
            DDR3DRAM ddr3 = new DDR3DRAM(Config.mem.ddr3_type,
                                         Config.mem.clock_factor, Config.mem.tRTRS, Config.mem.tWR,
                                         Config.mem.tWTR, Config.mem.tBL, Config.mem.bank_max,
                                         Config.mem.subarray_max, Config.mem.col_max,
                                         Config.mem.tRA, Config.mem.tWA, Config.mem.tREFI,
                                         Config.mem.tRFC, Config.mem.tRP, Config.mem.tRCD);
            uint cmax = Config.mem.chan_max;
            uint rmax = Config.mem.rank_max;

            // randomized page table
            const ulong    page_size = 4 * 1024;
            PageRandomizer prand     = new PageRandomizer(page_size, ddr3.ROW_MAX);

            Req.Prand = prand;

            // sequential page table
            PageSequencer pseq = new PageSequencer(page_size, cmax, rmax, ddr3.BANK_MAX);

            Req.Pseq = pseq;

            // Contiguous physical page allocation
            ContiguousAllocator pcontig = new ContiguousAllocator(page_size, cmax * rmax * ddr3.ROW_MAX * ddr3.DEVICE_WIDTH);

            Req.Pcontig = pcontig;

            // memory mapping
            MemMap.Init(Config.mem.map_type, Config.mem.chan_max, Config.mem.rank_max, Config.mem.col_per_subrow, ddr3);

            // Cache hierarchy
            if (Config.proc.cache_enabled)
            {
                Caches = new CacheHierarchy(Config.N);
            }

            // processors
            Procs = new Proc.Proc[Config.N];
            for (int p = 0; p < Config.N; p++)
            {
                Procs[p] = new Proc.Proc(Config.traceFileNames[p], Caches);
            }

            // memory controllers
            Mctrls = new MemCtrl.MemCtrl[cmax];
            for (int i = 0; i < Mctrls.Length; i++)
            {
                Mctrls[i] = new MemCtrl.MemCtrl(rmax, ddr3);
                // Add ref handles to processors
                for (int p = 0; p < Config.N; p++)
                {
                    Procs[p].mctrls[i]       = Mctrls[i];
                    Mctrls[i].ProcHandles[p] = Procs[p];
                }
            }

            // memory schedulers
            MemSched.MemSched[] rscheds = new MemSched.MemSched[cmax];
            for (int i = 0; i < cmax; i++)
            {
                Object[] args = { Mctrls[i], Mctrls };
                rscheds[i] = Activator.CreateInstance(Config.sched.typeof_sched_algo, args) as MemSched.MemSched;
            }

            MemSched.MemSched[] wscheds = new MemSched.MemSched[cmax];
            for (int i = 0; i < cmax; i++)
            {
                Object[] args = { Mctrls[i], Mctrls };
                wscheds[i] = Activator.CreateInstance(Config.sched.typeof_wbsched_algo, args) as MemSched.MemSched;
            }

            for (int i = 0; i < cmax; i++)
            {
                Mctrls[i].Rsched = rscheds[i];
                Mctrls[i].Wsched = wscheds[i];

                rscheds[i].Initialize();
                wscheds[i].Initialize();
            }

            // WB mode
            Mwbmode = Activator.CreateInstance(Config.mctrl.typeof_wbmode_algo, new Object[] { Mctrls }) as MemWBMode.MemWBMode;
            for (int i = 0; i < cmax; i++)
            {
                Mctrls[i].Mwbmode = Mwbmode;
            }

            // BLP tracker
            Blptracker = new BLPTracker(Mctrls);
        }
コード例 #7
0
 public DRAMState(uint cid, uint[] fanOutArray, MemCtrl.MemCtrl mctrl)
 {
     _channel = new NodeMachine(null, 0, cid, fanOutArray);
 }
コード例 #8
0
ファイル: FCFS.cs プロジェクト: sambhavk99/RamulatorSharp
 public FCFS(MemCtrl.MemCtrl mctrl, MemCtrl.MemCtrl[] mctrls)
     : base(mctrl, mctrls)
 {
 }
コード例 #9
0
 protected bool is_readq_empty(uint cid)
 {
     MemCtrl.MemCtrl mctrl = Mctrls[cid];
     return(mctrl.Rload == 0);
 }
コード例 #10
0
 protected bool is_writeq_full(uint cid)
 {
     MemCtrl.MemCtrl mctrl = Mctrls[cid];
     return(mctrl.Wload == mctrl.WriteqMax);
 }
コード例 #11
0
 protected bool is_writeq_empty(uint cid)
 {
     MemCtrl.MemCtrl mctrl = Mctrls[cid];
     return(mctrl.Wload == 0);
 }
コード例 #12
0
ファイル: BLISS.cs プロジェクト: sambhavk99/RamulatorSharp
 public BLISS(MemCtrl.MemCtrl mctrl, MemCtrl.MemCtrl[] mctrls)
     : base(mctrl, mctrls)
 {
     _shuffleCyclesLeft = Config.sched.bliss_shuffle_cycles;
     _mark = new int[Config.N];
 }
コード例 #13
0
ファイル: FRFCFS.cs プロジェクト: sambhavk99/RamulatorSharp
 public FRFCFS_CAP(MemCtrl.MemCtrl mctrl, MemCtrl.MemCtrl[] mctrls)
     : base(mctrl, mctrls)
 {
 }