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