Exemple #1
0
        private void MigrationDecision()
        {        //Determine which row should be migrated and send row numbers to Migration
            Migration.migrationlist.Clear();
            Migration.migrationlistPID.Clear();
            RowStat.UpdateAccessPerInterval();
            switch (Config.proc.cache_insertion_policy)
            {
            case "RBLA":
                RBLA.decision();
                break;

            case "PFA":
                if (Cycles == Interval)
                {
                    PFA.assignE0();
                }
                else
                {
                    PFA.decision();
                }
                break;

            case "AC":
                AC.decision();
                break;

            default:
                Console.WriteLine("Row Migration Policy Error");
                break;
            }
        }
Exemple #2
0
        public int tick()
        {        //Clock in RBLA, make decision when Cycles is multiples of Interval
                 //If Migration

            if (Cycles == 0)
            {
                if (Config.proc.cache_insertion_policy == "RBLA")
                {
                    RBLA.initialize();
                }
                else if (Config.proc.cache_insertion_policy == "PFA")
                {
                    PFA.initialize();
                }
                else if (Config.proc.cache_insertion_policy == "AC")
                {
                    AC.initialize();
                }
            }
            else
            {
                if (Cycles % Interval == 0)
                {
                    MigrationDecision();
                }

                if (target)
                {
                    target = false;
                    if (Config.proc.cache_insertion_policy == "RBLA")
                    {
                        RBLA.tick();
                    }
                    else if (Config.proc.cache_insertion_policy == "PFA" && Cycles >= Interval)
                    {
                        PFA.tick();
                    }
                    else if (Config.proc.cache_insertion_policy == "AC" && Cycles >= Interval)
                    {
                        AC.tick();
                    }
                }

                if (Cycles % Interval == 0)
                {
                    RowStat.ClearPerInterval();
                }
            }
            Migration.tick();
            Cycles++;
            return(0);
        }