Hi all. I am trying to use tester.exec with some trace-files to test
the simulator and MOESI_CMP_NUCA protocols. Well, as I have written
in the forum many other times, some statistics printed by ruby seems
to be very strange, in particular those regarding L2_hits and L2
allocations.
So I am trying to simplify the trace-driven simulation: in
particular, I am trying to
1) force simulator to process all events after the last reference in trace file
2)
Well, I have a question: may someone explain me in detail what the
following function does?
void TraceRecord::issueRequest() const
{
// Lookup sequencer pointer from system
AbstractChip* chip_ptr =
g_system_ptr->getChip(m_node_num/RubyConfig::numberOfProcsPerChip());
assert(chip_ptr != NULL);
Sequencer* sequencer_ptr =
chip_ptr->getSequencer(m_node_num%RubyConfig::numberOfProcsPerChip());
assert(sequencer_ptr != NULL);
CacheMsg request(m_data_address, m_type, m_pc_address,
AccessModeType_UserMode, 0, PrefetchBit_Yes, 0, false);
// Clear out the sequencer
while (!sequencer_ptr->empty()) {
g_eventQueue_ptr->triggerEvents(g_eventQueue_ptr->getTime() + 100);
}
sequencer_ptr->makeRequest(request);
// Clear out the sequencer
while (!sequencer_ptr->empty()) {
g_eventQueue_ptr->triggerEvents(g_eventQueue_ptr->getTime() + 100);
}
}
Another question: what if I substitute the second call to
triggerEvents with a call to triggerAllEvents() ?
Sorry to be a nuisance.
Thank you very much.
|