On Tue, Jun 12, 2012 at 7:15 AM, Alexey Imaev <[email protected]> wrote:
> Hi, > I recently look into Marss86 for university project. Want to extend > cache coherence mechanism and make it look like AMD opteron system. Is > possible? > > I read code, MOESI cache coherence function and have some question: > > - handle_cache_insert called BEFORE insert and track eviction of old > line, correct? > > Yes. > > - complete_request used for actual insert I believe > > Yes, it will insert the cache line in parallel to sending response. > > - Why is there handle_cache_evict? Sometimes assert(0) only content. > > 'handle_cache_evict' was added to API function list in order if some protocol requires special notification on evicting a cache line. In MOESI cache line can be evicted from 2 reasons, one its because line is selected by mLRU algorithm to be evicted to make space for new line, and 2nd is when global directory send the special EVICT message. In 1st case 'handle_cache_insert' also takes care of old line (selected evicting line) and for 2nd case 'handle_remote_hit' and 'handle_remote_miss' will take care of 'EVICT' message. So for MESI and MOESI 'handle_cache_evict' is not used. > > - Real (old) AMD systems not have directory (probe filter), but still > MOESI. Can have the same thing in Marss? Or directory always needed in > MOESI? Why? Or L3 also implicit directory? > > You can definitely implement AMD style MOESI without directory where Ownership is maintained by different mechanism. > > - Local write hit to O / E / S line, line invalidated and request > handled in lower interface? Why? Inclusive cache mandate? Write-through > cache? > > In case of last level private cache will send message to directory to update the 'modified' flag before marking this line as modified. As writes are not in critical path, its not optimized in current implementation of MOESI in MARSS. > > - Eviction logic there twice? In handle_cache_insert and > handle_local_hit? Maybe misunderstanding everything. > > I assume that you are talking about 'send_evict' function. This functions kind of generalized when a cache line is removed from local cache and it will update directory, Upper level cache (to maintain inclusive property) and lower level cache in case of modified lines. That is why its called from multiple functions. > > - interconnect_hit not going to upper interface? Must probe away all > lines there, too, right? > > It does in case of evictions and state updates. Look for 'send_update_to_upper' function calls. > > - Never any victim / fill from inner (e.g. L1) to outer (L2) cache > because inclusive hierarchy. Can always invalid line, right? > > Hmm, can you explain in more detail? > Can have more detail (line number, file) if you think helpful. Maybe good > tutorial I can read? > You can check out slides of presentation we gave at ISCA tutorial couple of days back. It does not have details asked in this email but it covers lots of different aspects and modules of MARSS. Slides can be found in 'Documentation' section, I am just being too lazy to copy the link! - Avadh > Thank you, > Alexey > > _______________________________________________ > http://www.marss86.org > Marss86-Devel mailing list > [email protected] > https://www.cs.binghamton.edu/mailman/listinfo/marss86-devel > >
_______________________________________________ http://www.marss86.org Marss86-Devel mailing list [email protected] https://www.cs.binghamton.edu/mailman/listinfo/marss86-devel
