예제 #1
0
        new public bool is_q_full(int pid, ReqType rw, uint rid, uint bid)
        {
            /* read queue */
            if (rw == ReqType.RD)
            {
//yang modified:

                int temp = 0;
                for (int i = 0; i < rmax; i++)
                {
                    for (int j = 0; j < bmax; j++)
                    {
                        List <Req> q = readqs[i, j];
                        temp = temp + q.Count;
                    }
                }

//                return q.Count == q.Capacity;
                return(temp >= readqs[0, 0].Capacity);
            }

            /* write queue */
            if (mctrl_writeq.Count >= mctrl_writeq.Capacity)
            {
                return(true);
            }

            //writeback throttle
            bool is_throttle = wbthrottle.is_throttle(pid);

            return(is_throttle);
        }
예제 #2
0
        public bool is_q_full(int pid, ReqType rw, uint rid, uint bid)
        {
            /* read queue */
            if (rw == ReqType.RD)
            {
                List <Req> q = readqs[rid, bid];
                return(q.Count == q.Capacity);
            }

            /* write queue */
            if (mctrl_writeq.Count == mctrl_writeq.Capacity)
            {
                return(true);
            }

            //writeback throttle
            bool is_throttle = wbthrottle.is_throttle(pid);

            return(is_throttle);
        }