[Gems-users] Protocol with Directory Cache (again)


Date: Tue, 20 Feb 2007 13:32:17 -0700
From: "Liqun Cheng" <liqun.cheng@xxxxxxxxx>
Subject: [Gems-users] Protocol with Directory Cache (again)
Hi,

I finally make the RAC work, at least the tester and splash2 didn't compain. thanks for the helps.
Now I plan to add a directory cache. I do find one thread on this topic in the archive, and Mike recommended:
"You can change the getState() function in the Directory controller to return a different state if the directory entry
is cached. Actions triggered by events to these cached states will use a lower latency".

However, I have concerns to the above solution. First, we need to duplicate all Actions/Transitions and make changes
everywhere. Second, maintaining a seperate set of states for directory cache is quite nontrivial, may even raise problems
at directory cache replacement. Therefore, I prefer to make changes in a centralized place.

Here are my random thoughts. In getState, if we make directory cache hit as the base case, and add some
latency (directory latency - directory cache hit latency) at misses, this should be a close approximation. However, since
getState is not an event, I don't find a easy way to recycle (retry after xx cycles) it.  As a result,  I am thinking of adding
latency when poping the message from in-port. Basically, we add a new function in MessageBuffer class say
cust-recycle(num_cycles). When peeking in-ports, we first check the directory cache. If tag matches, we pop the messages
as usual, else, we cust-recycle this message for (directory latency - directory caches hit latency) cycles. Will this work?

you guys are much more experienced on gems, any feedback/advice is much appreciated.

thanks
Legion
[← Prev in Thread] Current Thread [Next in Thread→]