Bump... On Wed, Feb 27, 2019 at 9:13 PM Gabe Black <[email protected]> wrote:
> Hi folks. TLM is a communication protocol/mechanism built on top of > systemc. It supports a mechanism called DMI which stands for direct memory > interface. The idea is that an entity sending a request into the system can > ask if the target can give it a pointer it can use to directly access that > memory in the future. The target, if it supports that sort of thing, > returns a descriptor which describes a region of memory that can be > accessed in that way. If that needs to be invalidated in the future, then > there's another mechanism the target can use to communicate back to the > sender telling it to throw away that descriptor. > > The way this mechanism is implemented in TLM is a bit less than ideal > since every request has a field that says whether the requester wants to > know about DMI, and so the target has to perform an extra check on all the > requests in case someone is asking when that's useful to communicate only a > very small fraction of the time, perhaps only once during an entire > simulation. > > Aside from that though, this mechanism has some nice properties. First, it > avoids having to globally identify what a memory is or where it is for a > particular simulation. A memory is just a thing on the other end of a > request that may let you get at it directly if you ask nicely. Also, if > there's something in the way that would get messed up if you skipped over > it, say a cache, it can block those requests from getting through to > targets. This could be useful for KVM for instance, when it's collecting > regions to act as RAM for the virtual machine. > > I haven't fully figured out what a good way to avoid the check-every-time > problem of the systemc mechanism, and ideally whatever I/we come up with > will be compatible enough to be bridged effectively, but I'm thinking some > sort of explicit additional call like getAddrRanges which would propogate > through the hierarchy at specific points, either to a specific address or > as a broadcast. > > I know some folks have looked at gem5's memory system protocol and > systemc's TLM before, for instance either to try making gem5 use TLM > natively, or for the systemc TLM bridges. What do you think about adding > this sort of mechainsm to gem5? Are there any pitfalls to avoid, known > issues to figure out, suggested avenues to explore, etc? Please let me > know. This is likely something I'm going to want to pursue in the next few > weeks. > > Gabe > _______________________________________________ gem5-dev mailing list [email protected] http://m5sim.org/mailman/listinfo/gem5-dev
