Changeset 212
- Timestamp:
- Mar 21, 2012, 3:24:54 PM (13 years ago)
- Location:
- trunk/modules/vci_mem_cache_v4/caba/source
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/modules/vci_mem_cache_v4/caba/source/include/mem_cache_directory_v4.h
r143 r212 267 267 } 268 268 } // end read() 269 270 ///////////////////////////////////////////////////////////////////// 271 // The read_neutral() function reads a directory entry, without 272 // changing the LRU 273 // Arguments : 274 // - address : the address of the entry 275 // The function returns a copy of a (valid or invalid) entry 276 ///////////////////////////////////////////////////////////////////// 277 DirectoryEntry read_neutral(const addr_t &address) 278 { 279 280 #define L2 soclib::common::uint32_log2 281 const size_t set = (size_t)(address >> (L2(m_words) + 2)) & (m_sets - 1); 282 const tag_t tag = (tag_t)(address >> (L2(m_sets) + L2(m_words) + 2)); 283 #undef L2 284 285 bool hit = false; 286 for ( size_t i=0 ; i<m_ways ; i++ ) { 287 bool equal = ( m_dir_tab[set][i].tag == tag ); 288 bool valid = m_dir_tab[set][i].valid; 289 hit = equal && valid; 290 if ( hit ) { 291 return DirectoryEntry(m_dir_tab[set][i]); 292 } 293 } 294 return DirectoryEntry(); 295 } // end read_neutral() 269 296 270 297 ///////////////////////////////////////////////////////////////////// -
trunk/modules/vci_mem_cache_v4/caba/source/src/vci_mem_cache_v4.cpp
r200 r212 448 448 ///////////////////////////////////////////////////// 449 449 { 450 size_t way = 0; 451 DirectoryEntry entry = m_cache_directory.read(addr, way); 450 DirectoryEntry entry = m_cache_directory.read_neutral(addr); 452 451 if ( (entry.count != m_debug_previous_count) or 453 452 (entry.valid != m_debug_previous_hit) )
Note: See TracChangeset
for help on using the changeset viewer.