Hi,

I want to model a coherent interconnect in ruby.
The protocol inside the interconnect defers from the protocol outside of it.
For instance, caches use a subset of the CHI protocol while the interconnect 
internally uses an internal protocol.
To interface the caches and the interconnect, an additional component is used 
to translate the protocols and abstract away the interconnect logic from caches 
perspective (one interface component per cache basically):
--------      -----------    
| Cache | =>| Interface | =>|
--------      -----------       |
             [...]                        | COHERENT INTERCONNECT
--------      -----------       |
| Cache | =>| Interface | =>|
--------      -----------
>From a hardware perspective, Interface is a separate module but it does not 
>seem to translate well to a ruby controller.
Interface has no address or block related logic/states/transitions.
Also, Interface instances do not partition the address space like multiple 
directories would (mapAddressToMachine will not work for them, making it 
difficult to target the correct Interface).
Finally, "Cache => Interface" is a regular point to point connection that must 
not go through the network.

Still, I want to explicitly keep both the external and internal protocol 
instead of making the caches talk natively the internal protocol.
What could be a good approach to this problem?

My take on this:
1) Defining (Cache+Interface) as a single ruby controller should work but it 
seems less maintainable: it is the opposite of a modular approach.

2) Else, define the Interface in a similar way to a RubyPrefetcher, that is as 
a plugin for the Cache ruby controller.
Then instead of directly enqueuing messages in Cache actions, it would be 
delegated to the Interface plugin.
At least, the Interface logic is encapsulated in that case.

What is the best practice here?
_______________________________________________
gem5-users mailing list -- gem5-users@gem5.org
To unsubscribe send an email to gem5-users-le...@gem5.org
%(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s

Reply via email to