Hi,

I'm looking into cpu/o3/lsq_unit_impl.hh and have couple of questions;

template <class Impl>
void
LSQUnit<Impl>::insertLoad(DynInstPtr &load_inst)
{
    assert((loadTail + 1) % LQEntries != loadHead);
    assert(loads < LQEntries);
    DPRINTF(LSQUnit, "Inserting load PC %s, idx:%i [sn:%lli]\n",
            load_inst->pcState(), loadTail, load_inst->seqNum);
    load_inst->lqIdx = loadTail;
    if (stores == 0) {
        load_inst->sqIdx = -1;
    } else {
        load_inst->sqIdx = storeTail;
    }
    loadQueue[loadTail] = load_inst;
    incrLdIdx(loadTail);
    ++loads;
}

In the code above why would someone use store queue's pointers to update
load queue? Why would I need to check how many store instructions in the
store queue either? Are the queues for store and load using a single queue?

Thank you.

MIF
_______________________________________________
gem5-users mailing list
[email protected]
http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users

Reply via email to