Re: [Gems-users] GEMS state transition problem


Date: Mon, 22 Jan 2007 09:57:11 -0600 (CST)
From: Mike Marty <mikem@xxxxxxxxxxx>
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→]