Ignore:
Timestamp:
Aug 15, 2015, 9:02:55 PM (9 years ago)
Author:
cfuguet
Message:

reconf: introduce a scratchpad mode in the memory cache.

  • Initialize the memory cache directory with all slots valid. The cache lines correspond to the lowest local memory segment (i.e. the first 256 Kbytes).
  • If there is a read or write miss while in scratchpad mode, the request is dropped (black-hole behavior).
  • In scratchpad mode, when a broadcast invalidate is triggered by a write, the line is not invalidated. The Read FSM needs to check in the IVT if there is a pending invalidate during a read. The same for the Cleanup FSM. This additional IVT check is only performed when in scratchpad mode.
  • TODO: Support of the scratchpad mode on the CAS FSM. But probably not needed because the distributed bootloader initializes the Local, Remote and Dirty flags to 1 before enabling the MMU.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/reconfiguration/modules/vci_mem_cache/caba/source/include/mem_cache_directory.h

    r861 r1011  
    305305               const DirectoryEntry &entry)
    306306    {
    307         assert((set < m_sets) && "Cache Directory write : The set index is invalid");
    308         assert((way < m_ways) && "Cache Directory write : The way index is invalid");
    309 
    310         // update Directory
    311         m_dir_tab[set][way].copy(entry);
     307        write_neutral(set, way, entry);
    312308
    313309        // update LRU bits
     
    326322        }
    327323    } // end write()
     324
     325    /////////////////////////////////////////////////////////////////////
     326    // The write_neutral function writes a new entry,
     327    // without changing the LRU.
     328    // Arguments :
     329    // - set : the set of the entry
     330    // - way : the way of the entry
     331    // - entry : the entry value
     332    /////////////////////////////////////////////////////////////////////
     333    void write_neutral(const size_t &set,
     334                       const size_t &way,
     335                       const DirectoryEntry &entry)
     336    {
     337        assert((set < m_sets) && "Cache Directory write : The set index is invalid");
     338        assert((way < m_ways) && "Cache Directory write : The way index is invalid");
     339
     340        // update Directory
     341        m_dir_tab[set][way].copy(entry);
     342    } // end write_neutral()
    328343
    329344    /////////////////////////////////////////////////////////////////////
Note: See TracChangeset for help on using the changeset viewer.