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

Reply via email to