Beispiel #1
0
void SMPSystemBus::finalizeAccess(MemRequest *mreq)
{
  PAddr addr  = mreq->getPAddr();
  SMPMemRequest *sreq = static_cast<SMPMemRequest *>(mreq);
  
  pendReqsTable.erase(mreq);
  #ifdef TLS
	  if (mreq->isDataReq())
	  {
	  	
	  	int nLesserEpochs=processResponses(mreq);
	 	//Version combining has concluded
    	//doVCRCB::scheduleAbs(busDelay*wrSize+nextSlot(mreq)+delay, this, mreq);
	 	if (VCRMaxCount.getValue()<VCRCount)
  			VCRMaxCount.inc();
  		if (sreq->needsData()|| sreq->getMemOperation()==MemPush)VCRCount--;
  		
		 l2DataProv.sample(nLesserEpochs);
		 mreq->getVcacheFlags()->clear();

 		
 		 //Account for all bus transfers for version combination
		 sreq->goUpAbs(busDelay*nLesserEpochs+nextSlot(mreq)+delay); 
	  	}
	  	else
	  	  	 sreq->goUpAbs(nextSlot(mreq)+delay);
	#else
	  sreq->goUpAbs(nextSlot(mreq)+delay);  
   #endif
 
  // request completed, respond to requestor 
  // (may have to come back later to go to memory)

}
Beispiel #2
0
void SMPSystemBus::finalizeAccess(MemRequest *mreq)
{
  PAddr addr  = mreq->getPAddr();
  SMPMemRequest *sreq = static_cast<SMPMemRequest *>(mreq);
  
  pendReqsTable.erase(mreq);
 
  // request completed, respond to requestor 
  // (may have to come back later to go to memory)
  sreq->goUpAbs(nextSlot(mreq)+delay);  
}