diff options
author | Nilay Vaish <nilay@cs.wisc.edu> | 2012-08-27 01:00:55 -0500 |
---|---|---|
committer | Nilay Vaish <nilay@cs.wisc.edu> | 2012-08-27 01:00:55 -0500 |
commit | 9190940511b5783811bc6288dd4f22f8d18c9d26 (patch) | |
tree | 72a07f80a772d7c6f2a6f0255cee173ac631cb35 /src/mem/ruby/network/garnet/fixed-pipeline | |
parent | 7122b83d8f92d77bccae432b4e90ba12f1babad5 (diff) | |
download | gem5-9190940511b5783811bc6288dd4f22f8d18c9d26.tar.xz |
Ruby: Remove RubyEventQueue
This patch removes RubyEventQueue. Consumer objects now rely on RubySystem
or themselves for scheduling events.
Diffstat (limited to 'src/mem/ruby/network/garnet/fixed-pipeline')
17 files changed, 47 insertions, 47 deletions
diff --git a/src/mem/ruby/network/garnet/fixed-pipeline/GarnetNetwork_d.cc b/src/mem/ruby/network/garnet/fixed-pipeline/GarnetNetwork_d.cc index b861b6a4e..c7ac85ad3 100644 --- a/src/mem/ruby/network/garnet/fixed-pipeline/GarnetNetwork_d.cc +++ b/src/mem/ruby/network/garnet/fixed-pipeline/GarnetNetwork_d.cc @@ -272,7 +272,7 @@ GarnetNetwork_d::printLinkStats(ostream& out) const for (int i = 0; i < m_link_ptr_vector.size(); i++) { average_link_utilization += (double(m_link_ptr_vector[i]->getLinkUtilization())) / - (double(g_eventQueue_ptr->getTime()-m_ruby_start)); + (double(g_system_ptr->getTime()-m_ruby_start)); vector<int> vc_load = m_link_ptr_vector[i]->getVcLoad(); for (int j = 0; j < vc_load.size(); j++) { @@ -291,7 +291,7 @@ GarnetNetwork_d::printLinkStats(ostream& out) const continue; average_vc_load[i] = (double(average_vc_load[i]) / - (double(g_eventQueue_ptr->getTime()) - m_ruby_start)); + (double(g_system_ptr->getTime()) - m_ruby_start)); out << "Average VC Load [" << i << "] = " << average_vc_load[i] << " flits/cycle " << endl; } diff --git a/src/mem/ruby/network/garnet/fixed-pipeline/InputUnit_d.cc b/src/mem/ruby/network/garnet/fixed-pipeline/InputUnit_d.cc index 3e3584bd8..adafa4d24 100644 --- a/src/mem/ruby/network/garnet/fixed-pipeline/InputUnit_d.cc +++ b/src/mem/ruby/network/garnet/fixed-pipeline/InputUnit_d.cc @@ -79,7 +79,7 @@ InputUnit_d::wakeup() // Do the route computation for this vc m_router->route_req(t_flit, this, vc); - m_vcs[vc]->set_enqueue_time(g_eventQueue_ptr->getTime()); + m_vcs[vc]->set_enqueue_time(g_system_ptr->getTime()); } else { t_flit->advance_stage(SA_); m_router->swarb_req(); diff --git a/src/mem/ruby/network/garnet/fixed-pipeline/InputUnit_d.hh b/src/mem/ruby/network/garnet/fixed-pipeline/InputUnit_d.hh index 79158d56d..544c4271b 100644 --- a/src/mem/ruby/network/garnet/fixed-pipeline/InputUnit_d.hh +++ b/src/mem/ruby/network/garnet/fixed-pipeline/InputUnit_d.hh @@ -90,7 +90,7 @@ class InputUnit_d : public Consumer { flit_d *t_flit = new flit_d(in_vc, free_signal); creditQueue->insert(t_flit); - g_eventQueue_ptr->scheduleEvent(m_credit_link, 1); + m_credit_link->scheduleEvent(1); } inline int diff --git a/src/mem/ruby/network/garnet/fixed-pipeline/NetworkInterface_d.cc b/src/mem/ruby/network/garnet/fixed-pipeline/NetworkInterface_d.cc index 4a2c9e26a..4bdce2a34 100644 --- a/src/mem/ruby/network/garnet/fixed-pipeline/NetworkInterface_d.cc +++ b/src/mem/ruby/network/garnet/fixed-pipeline/NetworkInterface_d.cc @@ -70,7 +70,7 @@ NetworkInterface_d::NetworkInterface_d(int id, int virtual_networks, for (int i = 0; i < m_num_vcs; i++) { m_out_vc_state.push_back(new OutVcState_d(i, m_net_ptr)); - m_out_vc_state[i]->setState(IDLE_, g_eventQueue_ptr->getTime()); + m_out_vc_state[i]->setState(IDLE_, g_system_ptr->getTime()); } } @@ -169,11 +169,11 @@ NetworkInterface_d::flitisizeMessage(MsgPtr msg_ptr, int vnet) for (int i = 0; i < num_flits; i++) { m_net_ptr->increment_injected_flits(vnet); flit_d *fl = new flit_d(i, vc, vnet, num_flits, new_msg_ptr); - fl->set_delay(g_eventQueue_ptr->getTime() - msg_ptr->getTime()); + fl->set_delay(g_system_ptr->getTime() - msg_ptr->getTime()); m_ni_buffers[vc]->insert(fl); } - m_ni_enqueue_time[vc] = g_eventQueue_ptr->getTime(); - m_out_vc_state[vc]->setState(ACTIVE_, g_eventQueue_ptr->getTime()); + m_ni_enqueue_time[vc] = g_system_ptr->getTime(); + m_out_vc_state[vc]->setState(ACTIVE_, g_system_ptr->getTime()); } return true ; } @@ -189,7 +189,7 @@ NetworkInterface_d::calculateVC(int vnet) m_vc_allocator[vnet] = 0; if (m_out_vc_state[(vnet*m_vc_per_vnet) + delta]->isInState( - IDLE_, g_eventQueue_ptr->getTime())) { + IDLE_, g_system_ptr->getTime())) { return ((vnet*m_vc_per_vnet) + delta); } } @@ -210,7 +210,7 @@ void NetworkInterface_d::wakeup() { DPRINTF(RubyNetwork, "m_id: %d woke up at time: %lld", - m_id, g_eventQueue_ptr->getTime()); + m_id, g_system_ptr->getTime()); MsgPtr msg_ptr; @@ -245,11 +245,11 @@ NetworkInterface_d::wakeup() // this flit in the NI flit_d *credit_flit = new flit_d(t_flit->get_vc(), free_signal); creditQueue->insert(credit_flit); - g_eventQueue_ptr->scheduleEvent(m_ni_credit_link, 1); + m_ni_credit_link->scheduleEvent(1); int vnet = t_flit->get_vnet(); m_net_ptr->increment_received_flits(vnet); - int network_delay = g_eventQueue_ptr->getTime() - + int network_delay = g_system_ptr->getTime() - t_flit->get_enqueue_time(); int queueing_delay = t_flit->get_delay(); m_net_ptr->increment_network_latency(network_delay, vnet); @@ -264,7 +264,7 @@ NetworkInterface_d::wakeup() m_out_vc_state[t_flit->get_vc()]->increment_credit(); if (t_flit->is_free_signal()) { m_out_vc_state[t_flit->get_vc()]->setState(IDLE_, - g_eventQueue_ptr->getTime()); + g_system_ptr->getTime()); } delete t_flit; } @@ -313,10 +313,10 @@ NetworkInterface_d::scheduleOutputLink() m_out_vc_state[vc]->decrement_credit(); // Just removing the flit flit_d *t_flit = m_ni_buffers[vc]->getTopFlit(); - t_flit->set_time(g_eventQueue_ptr->getTime() + 1); + t_flit->set_time(g_system_ptr->getTime() + 1); outSrcQueue->insert(t_flit); // schedule the out link - g_eventQueue_ptr->scheduleEvent(outNetLink, 1); + outNetLink->scheduleEvent(1); if (t_flit->get_type() == TAIL_ || t_flit->get_type() == HEAD_TAIL_) { @@ -343,13 +343,13 @@ NetworkInterface_d::checkReschedule() { for (int vnet = 0; vnet < m_virtual_networks; vnet++) { if (inNode_ptr[vnet]->isReady()) { // Is there a message waiting - g_eventQueue_ptr->scheduleEvent(this, 1); + scheduleEvent(1); return; } } for (int vc = 0; vc < m_num_vcs; vc++) { if (m_ni_buffers[vc]->isReadyForNext()) { - g_eventQueue_ptr->scheduleEvent(this, 1); + scheduleEvent(1); return; } } diff --git a/src/mem/ruby/network/garnet/fixed-pipeline/NetworkLink_d.cc b/src/mem/ruby/network/garnet/fixed-pipeline/NetworkLink_d.cc index cc6ec6abf..ac41263e3 100644 --- a/src/mem/ruby/network/garnet/fixed-pipeline/NetworkLink_d.cc +++ b/src/mem/ruby/network/garnet/fixed-pipeline/NetworkLink_d.cc @@ -68,9 +68,9 @@ NetworkLink_d::wakeup() { if (link_srcQueue->isReady()) { flit_d *t_flit = link_srcQueue->getTopFlit(); - t_flit->set_time(g_eventQueue_ptr->getTime() + m_latency); + t_flit->set_time(g_system_ptr->getTime() + m_latency); linkBuffer->insert(t_flit); - g_eventQueue_ptr->scheduleEvent(link_consumer, m_latency); + link_consumer->scheduleEvent(m_latency); m_link_utilized++; m_vc_load[t_flit->get_vc()]++; } diff --git a/src/mem/ruby/network/garnet/fixed-pipeline/OutVcState_d.cc b/src/mem/ruby/network/garnet/fixed-pipeline/OutVcState_d.cc index 8a83fcca2..5aa60d754 100644 --- a/src/mem/ruby/network/garnet/fixed-pipeline/OutVcState_d.cc +++ b/src/mem/ruby/network/garnet/fixed-pipeline/OutVcState_d.cc @@ -29,15 +29,15 @@ */ #include "mem/ruby/common/Global.hh" -#include "mem/ruby/eventqueue/RubyEventQueue.hh" #include "mem/ruby/network/garnet/fixed-pipeline/OutVcState_d.hh" +#include "mem/ruby/system/System.hh" OutVcState_d::OutVcState_d(int id, GarnetNetwork_d *network_ptr) { m_network_ptr = network_ptr; m_id = id; m_vc_state = IDLE_; - m_time = g_eventQueue_ptr->getTime(); + m_time = g_system_ptr->getTime(); if (m_network_ptr->get_vnet_type(id) == DATA_VNET_) m_credit_count = m_network_ptr->getBuffersPerDataVC(); diff --git a/src/mem/ruby/network/garnet/fixed-pipeline/OutputUnit_d.cc b/src/mem/ruby/network/garnet/fixed-pipeline/OutputUnit_d.cc index 159e02731..429ff4d91 100644 --- a/src/mem/ruby/network/garnet/fixed-pipeline/OutputUnit_d.cc +++ b/src/mem/ruby/network/garnet/fixed-pipeline/OutputUnit_d.cc @@ -101,7 +101,7 @@ OutputUnit_d::set_credit_link(CreditLink_d *credit_link) void OutputUnit_d::update_vc(int vc, int in_port, int in_vc) { - m_outvc_state[vc]->setState(ACTIVE_, g_eventQueue_ptr->getTime() + 1); + m_outvc_state[vc]->setState(ACTIVE_, g_system_ptr->getTime() + 1); m_outvc_state[vc]->set_inport(in_port); m_outvc_state[vc]->set_invc(in_vc); m_router->update_incredit(in_port, in_vc, diff --git a/src/mem/ruby/network/garnet/fixed-pipeline/OutputUnit_d.hh b/src/mem/ruby/network/garnet/fixed-pipeline/OutputUnit_d.hh index eada61554..750c71b32 100644 --- a/src/mem/ruby/network/garnet/fixed-pipeline/OutputUnit_d.hh +++ b/src/mem/ruby/network/garnet/fixed-pipeline/OutputUnit_d.hh @@ -71,21 +71,21 @@ class OutputUnit_d : public Consumer inline void set_vc_state(VC_state_type state, int vc) { - m_outvc_state[vc]->setState(state, g_eventQueue_ptr->getTime() + 1); + m_outvc_state[vc]->setState(state, g_system_ptr->getTime() + 1); } inline bool is_vc_idle(int vc) { return (m_outvc_state[vc]->isInState(IDLE_, - g_eventQueue_ptr->getTime())); + g_system_ptr->getTime())); } inline void insert_flit(flit_d *t_flit) { m_out_buffer->insert(t_flit); - g_eventQueue_ptr->scheduleEvent(m_out_link, 1); + m_out_link->scheduleEvent(1); } private: diff --git a/src/mem/ruby/network/garnet/fixed-pipeline/Router_d.cc b/src/mem/ruby/network/garnet/fixed-pipeline/Router_d.cc index ce36dd753..2a759eb87 100644 --- a/src/mem/ruby/network/garnet/fixed-pipeline/Router_d.cc +++ b/src/mem/ruby/network/garnet/fixed-pipeline/Router_d.cc @@ -135,13 +135,13 @@ Router_d::route_req(flit_d *t_flit, InputUnit_d *in_unit, int invc) void Router_d::vcarb_req() { - g_eventQueue_ptr->scheduleEvent(m_vc_alloc, 1); + m_vc_alloc->scheduleEvent(1); } void Router_d::swarb_req() { - g_eventQueue_ptr->scheduleEvent(m_sw_alloc, 1); + m_sw_alloc->scheduleEvent(1); } void @@ -154,7 +154,7 @@ void Router_d::update_sw_winner(int inport, flit_d *t_flit) { m_switch->update_sw_winner(inport, t_flit); - g_eventQueue_ptr->scheduleEvent(m_switch, 1); + m_switch->scheduleEvent(1); } void diff --git a/src/mem/ruby/network/garnet/fixed-pipeline/SWallocator_d.cc b/src/mem/ruby/network/garnet/fixed-pipeline/SWallocator_d.cc index afed4b205..530e8f1b2 100644 --- a/src/mem/ruby/network/garnet/fixed-pipeline/SWallocator_d.cc +++ b/src/mem/ruby/network/garnet/fixed-pipeline/SWallocator_d.cc @@ -177,7 +177,7 @@ SWallocator_d::arbitrate_outports() t_flit->advance_stage(ST_); t_flit->set_vc(outvc); t_flit->set_outport(outport); - t_flit->set_time(g_eventQueue_ptr->getTime() + 1); + t_flit->set_time(g_system_ptr->getTime() + 1); m_output_unit[outport]->decrement_credit(outvc); m_router->update_sw_winner(inport, t_flit); m_global_arbiter_activity++; @@ -209,7 +209,7 @@ SWallocator_d::check_for_wakeup() for (int i = 0; i < m_num_inports; i++) { for (int j = 0; j < m_num_vcs; j++) { if (m_input_unit[i]->need_stage_nextcycle(j, ACTIVE_, SA_)) { - g_eventQueue_ptr->scheduleEvent(this, 1); + scheduleEvent(1); return; } } diff --git a/src/mem/ruby/network/garnet/fixed-pipeline/Switch_d.cc b/src/mem/ruby/network/garnet/fixed-pipeline/Switch_d.cc index c656b43cc..12c00d9d0 100644 --- a/src/mem/ruby/network/garnet/fixed-pipeline/Switch_d.cc +++ b/src/mem/ruby/network/garnet/fixed-pipeline/Switch_d.cc @@ -64,7 +64,7 @@ void Switch_d::wakeup() { DPRINTF(RubyNetwork, "Switch woke up at time: %lld\n", - g_eventQueue_ptr->getTime()); + g_system_ptr->getTime()); for (int inport = 0; inport < m_num_inports; inport++) { if (!m_switch_buffer[inport]->isReady()) @@ -73,7 +73,7 @@ Switch_d::wakeup() if (t_flit->is_stage(ST_)) { int outport = t_flit->get_outport(); t_flit->advance_stage(LT_); - t_flit->set_time(g_eventQueue_ptr->getTime() + 1); + t_flit->set_time(g_system_ptr->getTime() + 1); // This will take care of waking up the Network Link m_output_unit[outport]->insert_flit(t_flit); @@ -89,7 +89,7 @@ Switch_d::check_for_wakeup() { for (int inport = 0; inport < m_num_inports; inport++) { if (m_switch_buffer[inport]->isReadyForNext()) { - g_eventQueue_ptr->scheduleEvent(this, 1); + scheduleEvent(1); break; } } diff --git a/src/mem/ruby/network/garnet/fixed-pipeline/VCallocator_d.cc b/src/mem/ruby/network/garnet/fixed-pipeline/VCallocator_d.cc index 03eed6ce2..3940e1d6a 100644 --- a/src/mem/ruby/network/garnet/fixed-pipeline/VCallocator_d.cc +++ b/src/mem/ruby/network/garnet/fixed-pipeline/VCallocator_d.cc @@ -256,7 +256,7 @@ VCallocator_d::check_for_wakeup() for (int i = 0; i < m_num_inports; i++) { for (int j = 0; j < m_num_vcs; j++) { if (m_input_unit[i]->need_stage_nextcycle(j, VC_AB_, VA_)) { - g_eventQueue_ptr->scheduleEvent(this, 1); + scheduleEvent(1); return; } } diff --git a/src/mem/ruby/network/garnet/fixed-pipeline/VirtualChannel_d.cc b/src/mem/ruby/network/garnet/fixed-pipeline/VirtualChannel_d.cc index a36e58771..96d873009 100644 --- a/src/mem/ruby/network/garnet/fixed-pipeline/VirtualChannel_d.cc +++ b/src/mem/ruby/network/garnet/fixed-pipeline/VirtualChannel_d.cc @@ -35,7 +35,7 @@ VirtualChannel_d::VirtualChannel_d(int id) m_id = id; m_input_buffer = new flitBuffer_d(); m_vc_state.first = IDLE_; - m_vc_state.second = g_eventQueue_ptr->getTime(); + m_vc_state.second = g_system_ptr->getTime(); m_enqueue_time = INFINITE_; } @@ -55,7 +55,7 @@ VirtualChannel_d::grant_vc(int out_vc) { m_output_vc = out_vc; m_vc_state.first = ACTIVE_; - m_vc_state.second = g_eventQueue_ptr->getTime() + 1; + m_vc_state.second = g_system_ptr->getTime() + 1; flit_d *t_flit = m_input_buffer->peekTopFlit(); t_flit->advance_stage(SA_); } @@ -64,7 +64,7 @@ bool VirtualChannel_d::need_stage(VC_state_type state, flit_stage stage) { if ((m_vc_state.first == state) && - (g_eventQueue_ptr->getTime() >= m_vc_state.second)) { + (g_system_ptr->getTime() >= m_vc_state.second)) { if (m_input_buffer->isReady()) { flit_d *t_flit = m_input_buffer->peekTopFlit(); return(t_flit->is_stage(stage)) ; @@ -78,7 +78,7 @@ bool VirtualChannel_d::need_stage_nextcycle(VC_state_type state, flit_stage stage) { if ((m_vc_state.first == state) && - ((g_eventQueue_ptr->getTime()+1) >= m_vc_state.second)) { + ((g_system_ptr->getTime()+1) >= m_vc_state.second)) { if (m_input_buffer->isReadyForNext()) { flit_d *t_flit = m_input_buffer->peekTopFlit(); return(t_flit->is_next_stage(stage)) ; diff --git a/src/mem/ruby/network/garnet/fixed-pipeline/VirtualChannel_d.hh b/src/mem/ruby/network/garnet/fixed-pipeline/VirtualChannel_d.hh index 3f5c02f84..18553fe2b 100644 --- a/src/mem/ruby/network/garnet/fixed-pipeline/VirtualChannel_d.hh +++ b/src/mem/ruby/network/garnet/fixed-pipeline/VirtualChannel_d.hh @@ -68,7 +68,7 @@ class VirtualChannel_d set_state(VC_state_type m_state) { m_vc_state.first = m_state; - m_vc_state.second = g_eventQueue_ptr->getTime() + 1; + m_vc_state.second = g_system_ptr->getTime() + 1; } inline flit_d* diff --git a/src/mem/ruby/network/garnet/fixed-pipeline/flitBuffer_d.cc b/src/mem/ruby/network/garnet/fixed-pipeline/flitBuffer_d.cc index bba917597..2c4f4e09e 100644 --- a/src/mem/ruby/network/garnet/fixed-pipeline/flitBuffer_d.cc +++ b/src/mem/ruby/network/garnet/fixed-pipeline/flitBuffer_d.cc @@ -51,7 +51,7 @@ flitBuffer_d::isReady() { if (m_buffer.size() != 0 ) { flit_d *t_flit = peekTopFlit(); - if (t_flit->get_time() <= g_eventQueue_ptr->getTime()) + if (t_flit->get_time() <= g_system_ptr->getTime()) return true; } return false; @@ -62,7 +62,7 @@ flitBuffer_d::isReadyForNext() { if (m_buffer.size() != 0 ) { flit_d *t_flit = peekTopFlit(); - if (t_flit->get_time() <= (g_eventQueue_ptr->getTime() + 1)) + if (t_flit->get_time() <= (g_system_ptr->getTime() + 1)) return true; } return false; diff --git a/src/mem/ruby/network/garnet/fixed-pipeline/flit_d.cc b/src/mem/ruby/network/garnet/fixed-pipeline/flit_d.cc index 774b1bc62..93364348e 100644 --- a/src/mem/ruby/network/garnet/fixed-pipeline/flit_d.cc +++ b/src/mem/ruby/network/garnet/fixed-pipeline/flit_d.cc @@ -34,8 +34,8 @@ flit_d::flit_d(int id, int vc, int vnet, int size, MsgPtr msg_ptr) { m_size = size; m_msg_ptr = msg_ptr; - m_enqueue_time = g_eventQueue_ptr->getTime(); - m_time = g_eventQueue_ptr->getTime(); + m_enqueue_time = g_system_ptr->getTime(); + m_time = g_system_ptr->getTime(); m_id = id; m_vnet = vnet; m_vc = vc; @@ -59,7 +59,7 @@ flit_d::flit_d(int vc, bool is_free_signal) m_id = 0; m_vc = vc; m_is_free_signal = is_free_signal; - m_time = g_eventQueue_ptr->getTime(); + m_time = g_system_ptr->getTime(); } void diff --git a/src/mem/ruby/network/garnet/fixed-pipeline/flit_d.hh b/src/mem/ruby/network/garnet/fixed-pipeline/flit_d.hh index f928e04f6..4295cbf6b 100644 --- a/src/mem/ruby/network/garnet/fixed-pipeline/flit_d.hh +++ b/src/mem/ruby/network/garnet/fixed-pipeline/flit_d.hh @@ -61,21 +61,21 @@ class flit_d is_stage(flit_stage t_stage) { return (m_stage.first == t_stage && - g_eventQueue_ptr->getTime() >= m_stage.second); + g_system_ptr->getTime() >= m_stage.second); } bool is_next_stage(flit_stage t_stage) { return (m_stage.first == t_stage && - (g_eventQueue_ptr->getTime() + 1) >= m_stage.second); + (g_system_ptr->getTime() + 1) >= m_stage.second); } void advance_stage(flit_stage t_stage) { m_stage.first = t_stage; - m_stage.second = g_eventQueue_ptr->getTime() + 1; + m_stage.second = g_system_ptr->getTime() + 1; } std::pair<flit_stage, Time> get_stage() |