Hello
Here is the sequence of functions called in cacheController. Here, in
cache_insert_cb, clearEntry gets called twice, I don't understand why. Once
by cache_insert_complete_cb and second time by wait_interconnect_cb (which
gets called by send_update_message).
*bool CacheController::cache_insert_cb()
{
IF(SUCCESSFULL){
send_update_message();
}
memoryHierarchy_->add_event(&cacheInsertComplete_,)
}
*
bool CacheController::send_update_message()
{
........
memoryHierarchy_->add_event(&waitInterconnect_,)
}
bool CacheController::cache_insert_complete_cb()
{
........
memoryHierarchy_->add_event(&clearEntry_)
}
bool CacheController::wait_interconnect_cb(void* arg)
{
if (queueEntry->sendTo == upperInterconnect_ ||
queueEntry->sendTo == upperInterconnect2_)
{
...
}
else
{
success = lowerInterconnect_->
get_controller_request_signal()->emit(&message);
if (success == false)
{
...
}
else
{
/*
* If the request is for memory update, its send to
* lower level cache so we can remove the entry from
* local queue
*/
if (queueEntry->request->get_type() == MEMORY_OP_UPDATE)
{
clear_entry_cb(queueEntry);
}
...
}
}
/* Free the message */
memoryHierarchy_->free_message(&message);
return true;
}
Thanks and Regards
Sparsh Mittal
_______________________________________________
http://www.marss86.org
Marss86-Devel mailing list
[email protected]
https://www.cs.binghamton.edu/mailman/listinfo/marss86-devel