Changeset 813 for branches/MESI
- Timestamp:
- Sep 24, 2014, 10:51:29 AM (10 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/MESI/modules/vci_mem_cache/caba/source/src/vci_mem_cache.cpp
r788 r813 2176 2176 size_t way = 0; 2177 2177 addr_t multi_ack_address = r_multi_ack_nline.read() * m_words * 4; 2178 bool match_ll = ((r_multi_ack_pktid.read() & 0x07) == TYPE_LL); 2178 bool cached_read = ((r_multi_ack_pktid.read() & 0x7) != 0) 2179 and ((r_multi_ack_pktid.read() & 0x7) != 0x2) 2180 and ((r_multi_ack_pktid.read() & 0x7) != 0x6); 2181 2179 2182 DirectoryEntry entry = m_cache_directory.read(multi_ack_address , way); 2180 2183 r_multi_ack_tag = entry.tag; … … 2210 2213 r_multi_ack_fsm = MULTI_ACK_IVT_CHANGE; 2211 2214 } 2212 else if (not entry.count or match_ll) // The line has been already evicted from cache L12215 else if (not entry.count or not cached_read) // The line has been already evicted from cache L1 2213 2216 { 2214 2217 assert(((entry.count == 1) or (entry.count == 0)) && "multi ack for a ll request, count is 1"); … … 2257 2260 } 2258 2261 2259 bool match_ll = ((r_multi_ack_pktid.read() & 0x07) == TYPE_LL); 2262 bool cached_read = ((r_multi_ack_pktid.read() & 0x7) != 0) 2263 and ((r_multi_ack_pktid.read() & 0x7) != 0x2) 2264 and ((r_multi_ack_pktid.read() & 0x7) != 0x6); 2260 2265 2261 2266 if (r_multi_ack_need_data.read()) … … 2283 2288 entry.ptr = 0; 2284 2289 2285 if ( match_ll)2290 if (not cached_read) 2286 2291 { 2287 2292 entry.owner.srcid = r_multi_ack_copy.read(); … … 5364 5369 << " / is_cnt = " << std::dec << victim.is_cnt 5365 5370 << " / set = " << set 5366 << "/ count = " << victim.count 5371 << " / count = " << victim.count 5372 << " / owner.srcid = " << victim.owner.srcid 5373 << " / nline = " << victim.tag*m_sets + set 5367 5374 << " / inval_required = " << inval << std::endl; 5368 5375 #endif … … 5668 5675 5669 5676 if (r_xram_rsp_victim_dirty.read() and (r_xram_rsp_victim_state.read() == ENTRY_SHARED)) 5670 r_xram_rsp_fsm = XRAM_RSP_WRITE_DIRTY;5677 r_xram_rsp_fsm = XRAM_RSP_WRITE_DIRTY; 5671 5678 else if (not_last_multi_req) r_xram_rsp_fsm = XRAM_RSP_HEAP_REQ; 5672 else r_xram_rsp_fsm = XRAM_RSP_IDLE;5679 else r_xram_rsp_fsm = XRAM_RSP_IDLE; 5673 5680 5674 5681 // std::cout << "cleanup sent for trt index =" << r_xram_rsp_trt_index.read() << std::endl; … … 5677 5684 std::cout << " <MEMC " << name() << " XRAM_RSP_INVAL>" 5678 5685 << " Send an inval request to CC_SEND FSM" 5686 << " / srcid = " << r_xram_rsp_victim_copy.read() 5679 5687 << " / address = " << r_xram_rsp_victim_nline.read()*m_words*4 << std::endl; 5680 5688 #endif … … 5746 5754 HeapEntry entry = m_heap.read(r_xram_rsp_next_ptr.read()); 5747 5755 5748 xram_rsp_to_cc_send_fifo_srcid 5756 xram_rsp_to_cc_send_fifo_srcid = entry.owner.srcid; 5749 5757 xram_rsp_to_cc_send_fifo_inst = entry.owner.inst; 5750 5758 xram_rsp_to_cc_send_fifo_put = true; … … 6316 6324 addr_t cleanup_address = r_cleanup_nline.read() * m_words * 4; 6317 6325 6318 bool match_ll = ((r_cleanup_locked_pktid.read() & 0x07) == TYPE_LL); 6326 bool cached_read = ((r_cleanup_locked_pktid.read() & 0x7) != 0) 6327 and ((r_cleanup_locked_pktid.read() & 0x7) != 0x2) 6328 and ((r_cleanup_locked_pktid.read() & 0x7) != 0x6); 6319 6329 6320 6330 DirectoryEntry entry; … … 6367 6377 { 6368 6378 entry.state = ENTRY_SHARED; 6369 if ( match_ll)6379 if (not cached_read) 6370 6380 { 6371 6381 entry.count = 0;
Note: See TracChangeset
for help on using the changeset viewer.