[Gems-users] Sequencer::isReady - one request type per address?


Date: Thu, 31 Mar 2011 16:14:03 -0400
From: "Binh Q. Pham" <phambinh1983@xxxxxxxxx>
Subject: [Gems-users] Sequencer::isReady - one request type per address?
Hi everyone,
I am using GEMS for x86, and my simulation crashed in Sequencer::isReady:
// LUKE - disallow more than one request type per address
    //     INVARIANT: at most one request type per address, per processor
    int smt_threads = RubyConfig::numberofSMTThreads();
    for(int p=0; p < smt_threads; ++p){
        if( m_writeRequestTable_ptr[p]->exist(line_address(request.getAddress())) ||
                m_readRequestTable_ptr[p]->exist(line_address(request.getAddress())) ){
            cout << "OUTSTANDING REQUEST EXISTS " << p << " VER " << m_version << endl;  //binh: bug is here
            //printProgress(cout);
            return false;
        }
    }


Is there any reason why we have to keep the invariant: one request type per address above? To me, it is possible to have multiple requests per address in the cache...

Thank you in advance for your time and help,
Binh
[← Prev in Thread] Current Thread [Next in Thread→]