Re: [Gems-users] Issue with SLICC ...in MOESI_CMP_L2-sim


Date: Fri, 05 Mar 2010 11:31:48 -0600
From: Shoaib Altaf <shoaibbinalt@xxxxxxxx>
Subject: Re: [Gems-users] Issue with SLICC ...in MOESI_CMP_L2-sim
 
Thanks for helping me out.
 
1) It is just a typo.
 
2) There is no "if" in the CacheMemory.h but the function cal_Time itself calls print (do calculations) only when the Tag is present
 
3) I have tried to print some stuff ...but still nothing gets printed.
 
4) I am still trying to figure that out. That's why I asked because I THINK (!!!) there should be some messages (Or I am wrong )transactions across that path
 
 
Shoaib 

From: Dan Gibson
Sent: Friday, March 05, 2010 7:37 AM
Subject: Re: [Gems-users] Issue with SLICC ...in MOESI_CMP_L2-sim

Muhammad,
You have a bit of a mystery here. Lets see if we can't solve it.
1. Why is your function called cal_Time in its definition and cal_act_Time when invoked?
2. Are your print statements guarded by any IF statements?
3. Try printing something (anything) immediately before the call site to cal_act_Time to verify control flow gets there.
4. How are you testing? Is there any reason why GlobalRequestToL2Cache might never have any messages?

Regards,
Dan

On Thu, Mar 4, 2010 at 7:58 PM, Muhammad Shoaib <shoaibbinalt@xxxxxxxx> wrote:

List,

I am trying to count the number of access L2 cache has either from its private L1 or from other nodes. For this I have implemented a function "cal_Time" which keeps track of  the time between consecutive accesses to a cache line. This function prints the time using "my_print" which is an external function defined in CacheMemory.h.
=============================================
void cal_Time(Address addr){
   if (L2cacheMemory.isTagPresent(addr)){
      
        L2cacheMemory[addr].active_time_val:= (L2cacheMemory[addr].f_time_val-L2cacheMemory[addr].i_time_val);

                        L2cacheMemory.my_print(addr,L2cacheMemory[addr].active_time_val);
=============================================
The problem is when i use this function in the following way it works (in my understanding with this I am tracking all requests L2 faces from its own private L1!!!)

======================================================
 in_port(L1requestNetwork_in, RequestMsg, L1RequestToL2Cache) {
    if (L1requestNetwork_in.isReady()) {
      peek(L1requestNetwork_in, RequestMsg) {
        assert(in_msg.Destination.isElement(machineID));
        
    cal_act_Time(in_msg.Address);
====================================================

But with the following stuff, when i try to track the requests from other processor nodes..nothing happens ..==> this function never gets executed ==>it never receives a request from other processors (Right??)??? But this should not be the case/....

========================================================
 in_port(requestNetwork_in, RequestMsg, GlobalRequestToL2Cache) {
    if (requestNetwork_in.isReady()) {
      peek(requestNetwork_in, RequestMsg) {
 
cal_act_Time(in_msg.Address);
========================================================

Any pointers/ suggestions...Am i doing something wrong here??

Shoaib

_______________________________________________
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.





--
http://www.cs.wisc.edu/~gibson [esc]:wq!


_______________________________________________
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→]