예제 #1
0
파일: CPU.cs 프로젝트: rachmadvwp/NOCulator
 public void receivePacket(CachePacket p)
 {
     if (p.cb != null)
     {
         p.cb();
     }
 }
예제 #2
0
        void send_noc(int reqNode, int from, int to, int flits, Simulator.Ready cb, bool off_crit, int vc)
        {
            int cl = off_crit ? 2 : // packet class (used for split queues): 0 = ctl, 1 = data, 2 = off-crit (writebacks)
                     (flits > 1 ? 1 : 0);

            CachePacket p = new CachePacket(reqNode, from, to, flits, cl, vc, cb);

            Simulator.network.nodes[from].queuePacket(p);
        }
예제 #3
0
        public void receivePacket(Packet p)
        {
#if PACKETDUMP
            if (m_coord.ID == 0)
            {
                Console.WriteLine("receive packet {0} at node {1} (cyc {2}) (age {3})",
                                  p, coord, Simulator.CurrentRound, Simulator.CurrentRound - p.creationTime);
            }
#endif

            if (p is RetxPacket)
            {
                p.retx_count++;
                p.flow_open  = false;
                p.flow_close = false;
                queuePacket(((RetxPacket)p).pkt);
            }
            else if (p is CachePacket)
            {
                CachePacket cp = p as CachePacket;
                m_cpu.receivePacket(cp);
            }
        }
예제 #4
0
        void send_noc(int reqNode, int from, int to, int flits, Simulator.Ready cb, bool off_crit, int vc)
        {
            int cl = off_crit ? 2 : // packet class (used for split queues): 0 = ctl, 1 = data, 2 = off-crit (writebacks)
                (flits > 1 ? 1 : 0);

            CachePacket p = new CachePacket(reqNode, from, to, flits, cl, vc, cb);
            Simulator.network.nodes[from].queuePacket(p);
        }
예제 #5
0
		// by Xiyue: 
		//   Called by Node::receivePacket ()
		//   upon calling p.cb(), CmpCache::pkt_callback() will be invoked to
		//     1) wake up other depended packet
		//     2) calling reqDone
        public void receivePacket(CachePacket p) 
        {
            if (p.cb != null) 
			{
			    // The interference cycle of a txn is determined by that of the response packet.
				// The delay is overrided by the packet returing to the requester.
				p.txn.interferenceCycle = p.intfCycle; 
				p.cb();
			}
        }
예제 #6
0
 public void receivePacket(CachePacket p)
 {
     if (p.cb != null) p.cb();
 }