Re: [Gems-users] Invalidate directory entry


Date: Fri, 12 Jan 2007 00:26:58 -0600
From: "Lei Yang" <lya755@xxxxxxxxxxxxxxxxxxxx>
Subject: Re: [Gems-users] Invalidate directory entry
So let's take protocol as an example, in the L2Cache.sm file:
 
// L2 BANK QUEUES
// From local bank of L2 cache TO the network
MessageBuffer dummyFrom0, network="To", virtual_network="0", ordered="false";  // dummy buffer that shouldn't be used
MessageBuffer DirRequestFromL2Cache, network="To", virtual_network="1", ordered="false";  // this L2 bank -> mod-directory
>>>>>>>>>  MessageBuffer L1RequestFromL2Cache, network="To", virtual_network="2", ordered="true";  // this L2 bank -> a local L1
MessageBuffer responseFromL2Cache, network="To", virtual_network="3", ordered="false";  // this L2 bank -> a local L1 || mod-directory
MessageBuffer finalAckFromL2Cache, network="To", virtual_network="4", ordered="false";  // this L2 bank -> mod-directory
 
// FROM the network to this local bank of L2 cache
//MessageBuffer L1RequestToL2Cache, network="From", virtual_network="1", ordered="true";  // a local L1 -> this L2 bank
MessageBuffer L1RequestToL2Cache, network="From", virtual_network="0", ordered="true";  // a local L1 -> this L2 bank
MessageBuffer dummyTo1, network="From", virtual_network="1", ordered="false";  // dummy buffer that shouldn't be used
>>>>>>>>> MessageBuffer forwardedRequestToL2Cache, network="From", virtual_network="2", ordered="true";  // mod-directory -> this L2bank
MessageBuffer responseToL2Cache, network="From", virtual_network="3", ordered="false";  // a local L1 || mod-directory -> this L2 bank
MessageBuffer dummyTo4, network="From", virtual_network="4", ordered="false";  // dummy buffer that shouldn't be used
 
While in the L1Cache.sm file:
 
// From this node's L1 cache TO the network
// a local L1 -> this L2 bank, currently ordered with directory forwarded requests
MessageBuffer requestFromL1Cache, network="To", virtual_network="0", ordered="true";
MessageBuffer dummyFrom1, network="To", virtual_network="1", ordered="false";  // dummy buffer that shouldn't be used
MessageBuffer dummyFrom2, network="To", virtual_network="2", ordered="false";  // dummy buffer that shouldn't be used
MessageBuffer responseFromL1Cache, network="To", virtual_network="3", ordered="false";
MessageBuffer dummyFrom4, network="To", virtual_network="4", ordered="false";  // dummy buffer that shouldn't be used

// To this node's L1 cache FROM the network
MessageBuffer dummyTo0, network="From", virtual_network="0", ordered="false";  // dummy buffer that shouldn't be used
MessageBuffer dummyTo1, network="From", virtual_network="1", ordered="false";  // dummy buffer that shouldn't be used
>>>>>>>>>>>  MessageBuffer requestToL1Cache, network="From", virtual_network="2", ordered="true";
MessageBuffer responseToL1Cache, network="From", virtual_network="3", ordered="false";
MessageBuffer dummyTo4, network="From", virtual_network="4", ordered="false";  // dummy buffer that shouldn't be used
 
So these three buffers should be connected together: L1RequestFromL2Cache, forwardedRequestToL2Cache, requestToL1Cache
because they have the same virtual network number, right? But this doesn't make sense to me, why should L1RequestFromL2Cache
be connected to forwardedRequestToL2Cache?
 
Your advice is very much appreciated!
 
Thanks,
Lei
----- Original Message -----
Sent: Thursday, January 11, 2007 8:45 PM
Subject: Re: [Gems-users] Invalidate directory entry

For the first question, you can modify the protocol as your design, both of the L2 cache and the directory.
For the second question, these buffer are not connected according to their name, but according to their "virtual_network" No. Buffers with the same No. are connected together.

 
2007/1/12, Lei Yang <lya755@xxxxxxxxxxxxxxxxxxxx>:
I see. So with this protocol (MSI_MOSI_CMP_directory), if Processor 0 is the
only sharer of one cache line, after it evicts this line, the directory
state is still S. I've verified this with a simple trace. It doesn't matter
with the current protocol because even if a line is shared by other L2
caches, as long as it is not in M state, it's always fetched from main
memory.  But for a protocol that supports clean cache-to-cache data
transfer, this may be a problem.

Another question is, when reading the protocol sm files, I couldn't find
where/how the buffers are connected. For example, there is a buffer for L2
cache called L1RequestToL2Cache (a local L1 -> this L2 bank), but for L1
cache, the buffer requestFromL1Cache is supposed to be Local L1 -> this L2
bank. So with different names, how are they actually connected? I mean,
after L1 sends a request to L2 using the requestFromL1Cache buffer, how does
L2 actually receive it?

Thanks list, you've been super helpful!

Lei

----- Original Message -----
From: "Mike Marty" < mikem@xxxxxxxxxxx>
To: "Lei Yang" <lya755@xxxxxxxxxxxxxxxxxxxx>
Cc: "'Gems Users'" < gems-users@xxxxxxxxxxx>
Sent: Thursday, January 11, 2007 9:41 AM
Subject: Re: [Gems-users] Invalidate directory entry


>> That's for M state, right? For S state, would any action be taken? Thanks
>> a
>> lot for your time!
>>
>
> Yes, for S state the L2 silently replaces.
>
>


_______________________________________________
Gems-users mailing list
Gems-users@xxxxxxxxxxx
https://lists.cs.wisc.edu/mailman/listinfo/gems-users
Use Google to search the GEMS Users mailing list by adding "site: https://lists.cs.wisc.edu/archive/gems-users/" to your search.


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