Re: [Gems-users] GEMS state transition problem


Date: Mon, 22 Jan 2007 13:29:57 -0600
From: "Lei Yang" <lya755@xxxxxxxxxxxxxxxxxxxx>
Subject: Re: [Gems-users] GEMS state transition problem
Thanks a lot Mike! I checked the setState() funtion in the same .sm file. I noticed that this funtion was not called anywhere. Also, I did change the access permission to Invalid when the state is supposed to change to L2_IM. Now I'm suspecting that the problem is that state transition only happens in the next cycle after event is posted, so if two event happens in one cycle, it is not going to work. Is this assumption correct?
One question, though. What exactly does TBE do?

Thank you!!

Lei
----- Original Message ----- From: "Mike Marty" <mikem@xxxxxxxxxxx> To: "Lei Yang" <lya755@xxxxxxxxxxxxxxxxxxxx>; "Gems Users" <gems-users@xxxxxxxxxxx>
Sent: Monday, January 22, 2007 9:57 AM
Subject: Re: [Gems-users] GEMS state transition problem


There is probably nothing allocated to hold your state (i.e., a cache tag
or TBE entry).  You need to allocate something.  See setState() in the
same .sm file to see how states are set.

--Mike


Dear list,

I've been working on a new protocol and I was trying to add new transitions in the MSI_MOSI_CMP_directory protocol like this:
transition({L2_I, L2_NP}, L2_SomeEvent, L2_IM) {
    someAction;
}

transition(L2_IM, L2_SomeOtherEvent, L2_M) {
    someOtherAction;
  }

However, when testing with a simple trace, I found that although the state of a line appears to have changed from L2_NP to L2_IM, later on when L2_SomeOtherEvent occurs, it refuses to change its state to L2_M and complains about still being in state L2_NP and hence invalid transition, as follows:
      1635   1   0    L2Cache  L2_SomeEvent  L2_NP>L2_IM  [0x400, line 
0x400]
Warning: in fn TransitionResult 
L2Cache_Controller::doTransitionWorker(L2Cache_Event, L2Cache_State, 
L2Cache_State&, const Ad
dress&) in generated/MSI_MOSI_CMP_directory/L2Cache_Transitions.C:1650: 
m_id is 1
Warning: in fn TransitionResult 
L2Cache_Controller::doTransitionWorker(L2Cache_Event, L2Cache_State, 
L2Cache_State&, const Ad
dress&) in generated/MSI_MOSI_CMP_directory/L2Cache_Transitions.C:1651: 
m_version is 0
Warning: in fn TransitionResult 
L2Cache_Controller::doTransitionWorker(L2Cache_Event, L2Cache_State, 
L2Cache_State&, const Ad
dress&) in generated/MSI_MOSI_CMP_directory/L2Cache_Transitions.C:1652: 
g_eventQueue_ptr->getTime() is 1635
Warning: in fn TransitionResult 
L2Cache_Controller::doTransitionWorker(L2Cache_Event, L2Cache_State, 
L2Cache_State&, const Ad
dress&) in generated/MSI_MOSI_CMP_directory/L2Cache_Transitions.C:1653: 
addr is [0x400, line 0x400]
Warning: in fn TransitionResult 
L2Cache_Controller::doTransitionWorker(L2Cache_Event, L2Cache_State, 
L2Cache_State&, const Ad
dress&) in generated/MSI_MOSI_CMP_directory/L2Cache_Transitions.C:1654: 
event is L2_MigrationDone
Warning: in fn TransitionResult 
L2Cache_Controller::doTransitionWorker(L2Cache_Event, L2Cache_State, 
L2Cache_State&, const Ad
dress&) in generated/MSI_MOSI_CMP_directory/L2Cache_Transitions.C:1655: 
state is L2_NP
Fatal Error: in fn TransitionResult 
L2Cache_Controller::doTransitionWorker(L2Cache_Event, L2Cache_State, 
L2Cache_State&, cons
t Address&) in 
generated/MSI_MOSI_CMP_directory/L2Cache_Transitions.C:1656: Invalid 
transition
I wonder what else is needed to change the state of a line in addition to 
the transition() statement. Have anyone met with this problem before? 
Please advice!
Thanks a lot!!

Lei


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