Skip to content

Commit

Permalink
Add precedence for receive event
Browse files Browse the repository at this point in the history
  • Loading branch information
h0lyalg0rithm committed May 13, 2024
1 parent 5d88b38 commit f9a58ed
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 4 deletions.
12 changes: 8 additions & 4 deletions core/DCache.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -20,12 +20,16 @@ namespace olympia
in_lsu_lookup_req_.registerConsumerHandler(
CREATE_SPARTA_HANDLER_WITH_DATA(DCache, receiveMemReqFromLSU_, MemoryAccessInfoPtr));

in_l2cache_resp_.registerConsumerHandler(
CREATE_SPARTA_HANDLER_WITH_DATA(DCache, receiveRespFromL2Cache_, MemoryAccessInfoPtr));

in_l2cache_ack_.registerConsumerHandler(
CREATE_SPARTA_HANDLER_WITH_DATA(DCache, receiveAckFromL2Cache_, uint32_t));

in_l2cache_resp_.registerConsumerHandler(
CREATE_SPARTA_HANDLER_WITH_DATA(DCache, receiveRespFromL2Cache_, MemoryAccessInfoPtr));
in_l2cache_resp_.registerConsumerEvent(in_l2_cache_resp_receive_event_);
in_lsu_lookup_req_.registerConsumerEvent(in_lsu_lookup_req_receive_event_);

in_l2_cache_resp_receive_event_ >> in_lsu_lookup_req_receive_event_;
setupL1Cache_(p);

// Pipeline config
Expand Down Expand Up @@ -275,15 +279,15 @@ namespace olympia

void DCache::receiveMemReqFromLSU_(const MemoryAccessInfoPtr & memory_access_info_ptr)
{

ILOG("Got memory access request from LSU " << memory_access_info_ptr);
if (!cache_refill_selected_)
{
ILOG("Arbitration from refill " << memory_access_info_ptr);
ILOG("Cache refill was selected ignoring " << memory_access_info_ptr);
memory_access_info_ptr->setCacheState(MemoryAccessInfo::CacheState::RELOAD);
out_lsu_lookup_ack_.send(memory_access_info_ptr);
return;
}
ILOG("Adding to pipeline " << memory_access_info_ptr);
cache_pipeline_.append(memory_access_info_ptr);
out_lsu_lookup_ack_.send(memory_access_info_ptr);
uev_free_pipeline_.schedule(1);
Expand Down
11 changes: 11 additions & 0 deletions core/DCache.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -132,6 +132,17 @@ namespace olympia

sparta::UniqueEvent<> uev_mshr_request_{
&unit_event_set_, "mshr_request", CREATE_SPARTA_HANDLER(DCache, mshrRequest_)};

void noOpEventHandler() {}

sparta::UniqueEvent<> in_l2_cache_resp_receive_event_{
&unit_event_set_, "in_l2_cache_resp_receive_event",
CREATE_SPARTA_HANDLER(DCache, noOpEventHandler)};

sparta::UniqueEvent<> in_lsu_lookup_req_receive_event_{
&unit_event_set_, "in_lsu_lookup_req_receive_event",
CREATE_SPARTA_HANDLER(DCache, noOpEventHandler)};

////////////////////////////////////////////////////////////////////////////////
// Counters
////////////////////////////////////////////////////////////////////////////////
Expand Down

0 comments on commit f9a58ed

Please sign in to comment.