示例#1
0
        public bool reissue_rd_req()
        {
            //retry mshr
            if (mshr_retry)
            {
                Dbg.Assert(!mctrl_retry);

                //retry mshr
                bool mshr_ok = insert_mshr(curr_rd_req);
                if (!mshr_ok)
                {
                    return(false);
                }

                //success
                mshr_retry = false;

                //check if true miss
                bool false_miss = inst_wnd.is_duplicate(curr_rd_req.block_addr);
                Dbg.Assert(!false_miss);

                //retry mctrl
                mctrl_retry = true;
            }

            //retry mctrl
            if (mctrl_retry)
            {
                Dbg.Assert(!mshr_retry);

                //retry mctrl
                bool mctrl_ok = insert_mctrl(curr_rd_req);
                if (!mctrl_ok)
                {
                    return(false);
                }

                //success
                mctrl_retry = false;
                return(true);
            }

            //should never get here
            throw new System.Exception("Processor: Reissue Request");
        }
示例#2
0
        public bool reissue_rd_req()
        {
            //retry mshr
            if (mshr_retry)
            {
                Dbg.Assert(!mctrl_retry);

                //retry mshr
                bool mshr_ok = insert_mshr(curr_rd_req);
                if (!mshr_ok)
                {
                    return(false);
                }

                //success
                mshr_retry = false;

                //check if true miss
                bool false_miss = inst_wnd.is_duplicate(curr_rd_req.block_addr);
                Dbg.Assert(!false_miss);
            }

            mctrl_retry = request_retry(curr_rd_req);

            //retry mctrl
            if (mctrl_retry)
            {
                Dbg.Assert(!mshr_retry);

                //retry mctrl
                bool mctrl_ok = insert_mctrl(curr_rd_req);
                if (!mctrl_ok)
                {
                    return(false);
                }

                //success
                mctrl_retry = false;
                Stat.procs[pid].l2_cache_miss_count.Collect();
                return(true);
            }
            return(true);
        }