changeset 056363356d15 in /z/repo/gem5 details: http://repo.gem5.org/gem5?cmd=changeset;node=056363356d15 description: ruby: message buffer: drop dequeue_getDelayCycles() The functionality of updating and returning the delay cycles would now be performed by the dequeue() function itself.
diffstat: src/mem/protocol/MESI_Three_Level-L0cache.sm | 4 ++-- src/mem/protocol/MESI_Three_Level-L1cache.sm | 4 ++-- src/mem/protocol/MESI_Two_Level-L1cache.sm | 10 ++++++---- src/mem/protocol/MESI_Two_Level-L2cache.sm | 6 +++--- src/mem/protocol/MI_example-cache.sm | 4 ++-- src/mem/protocol/RubySlicc_Types.sm | 3 +-- src/mem/ruby/buffers/MessageBuffer.cc | 17 ++++++----------- src/mem/ruby/buffers/MessageBuffer.hh | 6 ++---- src/mem/ruby/network/simple/PerfectSwitch.cc | 8 ++++---- src/mem/ruby/network/simple/Throttle.cc | 2 +- src/mem/slicc/ast/ExprStatementAST.py | 4 ++-- 11 files changed, 31 insertions(+), 37 deletions(-) diffs (221 lines): diff -r 01df075d9f93 -r 056363356d15 src/mem/protocol/MESI_Three_Level-L0cache.sm --- a/src/mem/protocol/MESI_Three_Level-L0cache.sm Fri May 23 06:07:02 2014 -0500 +++ b/src/mem/protocol/MESI_Three_Level-L0cache.sm Fri May 23 06:07:02 2014 -0500 @@ -474,12 +474,12 @@ action(l_popRequestQueue, "l", desc="Pop incoming request queue and profile the delay within this virtual network") { - profileMsgDelay(2, messgeBuffer_in.dequeue_getDelayCycles()); + profileMsgDelay(2, messgeBuffer_in.dequeue()); } action(o_popIncomingResponseQueue, "o", desc="Pop Incoming Response queue and profile the delay within this virtual network") { - profileMsgDelay(1, messgeBuffer_in.dequeue_getDelayCycles()); + profileMsgDelay(1, messgeBuffer_in.dequeue()); } action(s_deallocateTBE, "s", desc="Deallocate TBE") { diff -r 01df075d9f93 -r 056363356d15 src/mem/protocol/MESI_Three_Level-L1cache.sm --- a/src/mem/protocol/MESI_Three_Level-L1cache.sm Fri May 23 06:07:02 2014 -0500 +++ b/src/mem/protocol/MESI_Three_Level-L1cache.sm Fri May 23 06:07:02 2014 -0500 @@ -640,12 +640,12 @@ action(l_popL2RequestQueue, "l", desc="Pop incoming request queue and profile the delay within this virtual network") { - profileMsgDelay(2, requestNetwork_in.dequeue_getDelayCycles()); + profileMsgDelay(2, requestNetwork_in.dequeue()); } action(o_popL2ResponseQueue, "o", desc="Pop Incoming Response queue and profile the delay within this virtual network") { - profileMsgDelay(1, responseNetwork_in.dequeue_getDelayCycles()); + profileMsgDelay(1, responseNetwork_in.dequeue()); } action(s_deallocateTBE, "s", desc="Deallocate TBE") { diff -r 01df075d9f93 -r 056363356d15 src/mem/protocol/MESI_Two_Level-L1cache.sm --- a/src/mem/protocol/MESI_Two_Level-L1cache.sm Fri May 23 06:07:02 2014 -0500 +++ b/src/mem/protocol/MESI_Two_Level-L1cache.sm Fri May 23 06:07:02 2014 -0500 @@ -833,12 +833,14 @@ mandatoryQueue_in.dequeue(); } - action(l_popRequestQueue, "l", desc="Pop incoming request queue and profile the delay within this virtual network") { - profileMsgDelay(2, requestL1Network_in.dequeue_getDelayCycles()); + action(l_popRequestQueue, "l", + desc="Pop incoming request queue and profile the delay within this virtual network") { + profileMsgDelay(2, requestL1Network_in.dequeue()); } - action(o_popIncomingResponseQueue, "o", desc="Pop Incoming Response queue and profile the delay within this virtual network") { - profileMsgDelay(1, responseL1Network_in.dequeue_getDelayCycles()); + action(o_popIncomingResponseQueue, "o", + desc="Pop Incoming Response queue and profile the delay within this virtual network") { + profileMsgDelay(1, responseL1Network_in.dequeue()); } action(s_deallocateTBE, "s", desc="Deallocate TBE") { diff -r 01df075d9f93 -r 056363356d15 src/mem/protocol/MESI_Two_Level-L2cache.sm --- a/src/mem/protocol/MESI_Two_Level-L2cache.sm Fri May 23 06:07:02 2014 -0500 +++ b/src/mem/protocol/MESI_Two_Level-L2cache.sm Fri May 23 06:07:02 2014 -0500 @@ -590,15 +590,15 @@ } action(jj_popL1RequestQueue, "\j", desc="Pop incoming L1 request queue") { - profileMsgDelay(0, L1RequestL2Network_in.dequeue_getDelayCycles()); + profileMsgDelay(0, L1RequestL2Network_in.dequeue()); } action(k_popUnblockQueue, "k", desc="Pop incoming unblock queue") { - profileMsgDelay(0, L1unblockNetwork_in.dequeue_getDelayCycles()); + profileMsgDelay(0, L1unblockNetwork_in.dequeue()); } action(o_popIncomingResponseQueue, "o", desc="Pop Incoming Response queue") { - profileMsgDelay(1, responseL2Network_in.dequeue_getDelayCycles()); + profileMsgDelay(1, responseL2Network_in.dequeue()); } action(m_writeDataToCache, "m", desc="Write data from response queue to cache") { diff -r 01df075d9f93 -r 056363356d15 src/mem/protocol/MI_example-cache.sm --- a/src/mem/protocol/MI_example-cache.sm Fri May 23 06:07:02 2014 -0500 +++ b/src/mem/protocol/MI_example-cache.sm Fri May 23 06:07:02 2014 -0500 @@ -317,11 +317,11 @@ } action(n_popResponseQueue, "n", desc="Pop the response queue") { - profileMsgDelay(1, responseNetwork_in.dequeue_getDelayCycles()); + profileMsgDelay(1, responseNetwork_in.dequeue()); } action(o_popForwardedRequestQueue, "o", desc="Pop the forwarded request queue") { - profileMsgDelay(2, forwardRequestNetwork_in.dequeue_getDelayCycles()); + profileMsgDelay(2, forwardRequestNetwork_in.dequeue()); } action(p_profileMiss, "pi", desc="Profile cache miss") { diff -r 01df075d9f93 -r 056363356d15 src/mem/protocol/RubySlicc_Types.sm --- a/src/mem/protocol/RubySlicc_Types.sm Fri May 23 06:07:02 2014 -0500 +++ b/src/mem/protocol/RubySlicc_Types.sm Fri May 23 06:07:02 2014 -0500 @@ -41,8 +41,7 @@ structure(InPort, external = "yes", primitive="yes") { bool isReady(); - void dequeue(); - Cycles dequeue_getDelayCycles(); + Cycles dequeue(); void recycle(); bool isEmpty(); } diff -r 01df075d9f93 -r 056363356d15 src/mem/ruby/buffers/MessageBuffer.cc --- a/src/mem/ruby/buffers/MessageBuffer.cc Fri May 23 06:07:02 2014 -0500 +++ b/src/mem/ruby/buffers/MessageBuffer.cc Fri May 23 06:07:02 2014 -0500 @@ -220,8 +220,11 @@ } Cycles -MessageBuffer::dequeue_getDelayCycles() +MessageBuffer::dequeue() { + DPRINTF(RubyQueue, "Popping\n"); + assert(isReady()); + // get MsgPtr of the message about to be dequeued MsgPtr message = m_prio_heap.front().m_msgptr; @@ -229,16 +232,6 @@ message->updateDelayedTicks(m_receiver->clockEdge()); Cycles delayCycles = m_receiver->ticksToCycles(message->getDelayedTicks()); - dequeue(); - - return delayCycles; -} - -void -MessageBuffer::dequeue() -{ - DPRINTF(RubyQueue, "Popping\n"); - assert(isReady()); // record previous size and time so the current buffer size isn't // adjusted until next cycle @@ -250,6 +243,8 @@ pop_heap(m_prio_heap.begin(), m_prio_heap.end(), greater<MessageBufferNode>()); m_prio_heap.pop_back(); + + return delayCycles; } void diff -r 01df075d9f93 -r 056363356d15 src/mem/ruby/buffers/MessageBuffer.hh --- a/src/mem/ruby/buffers/MessageBuffer.hh Fri May 23 06:07:02 2014 -0500 +++ b/src/mem/ruby/buffers/MessageBuffer.hh Fri May 23 06:07:02 2014 -0500 @@ -118,11 +118,9 @@ void enqueue(MsgPtr message) { enqueue(message, Cycles(1)); } void enqueue(MsgPtr message, Cycles delta); - //! Updates the delay cycles of the message at the of the queue, + //! Updates the delay cycles of the message at the head of the queue, //! removes it from the queue and returns its total delay. - Cycles dequeue_getDelayCycles(); - - void dequeue(); + Cycles dequeue(); void recycle(); bool isEmpty() const { return m_prio_heap.size() == 0; } diff -r 01df075d9f93 -r 056363356d15 src/mem/ruby/network/simple/PerfectSwitch.cc --- a/src/mem/ruby/network/simple/PerfectSwitch.cc Fri May 23 06:07:02 2014 -0500 +++ b/src/mem/ruby/network/simple/PerfectSwitch.cc Fri May 23 06:07:02 2014 -0500 @@ -260,6 +260,10 @@ unmodified_msg_ptr = msg_ptr->clone(); } + // Dequeue msg + m_in[incoming][vnet]->dequeue(); + m_pending_message_count[vnet]--; + // Enqueue it - for all outgoing queues for (int i=0; i<output_links.size(); i++) { int outgoing = output_links[i]; @@ -284,10 +288,6 @@ m_out[outgoing][vnet]->enqueue(msg_ptr); } - - // Dequeue msg - m_in[incoming][vnet]->dequeue(); - m_pending_message_count[vnet]--; } } } diff -r 01df075d9f93 -r 056363356d15 src/mem/ruby/network/simple/Throttle.cc --- a/src/mem/ruby/network/simple/Throttle.cc Fri May 23 06:07:02 2014 -0500 +++ b/src/mem/ruby/network/simple/Throttle.cc Fri May 23 06:07:02 2014 -0500 @@ -157,8 +157,8 @@ g_system_ptr->curCycle()); // Move the message - m_out[vnet]->enqueue(m_in[vnet]->peekMsgPtr(), m_link_latency); m_in[vnet]->dequeue(); + m_out[vnet]->enqueue(msg_ptr, m_link_latency); // Count the message m_msg_counts[net_msg_ptr->getMessageSize()][vnet]++; diff -r 01df075d9f93 -r 056363356d15 src/mem/slicc/ast/ExprStatementAST.py --- a/src/mem/slicc/ast/ExprStatementAST.py Fri May 23 06:07:02 2014 -0500 +++ b/src/mem/slicc/ast/ExprStatementAST.py Fri May 23 06:07:02 2014 -0500 @@ -42,8 +42,8 @@ # The return type must be void if actual_type != self.symtab.find("void", Type): - self.expr.error("Non-void return must not be ignored, " + \ - "return type is '%s'", actual_type.ident) + self.expr.warning("Non-void return ignored, " + \ + "return type is '%s'", actual_type.ident) def findResources(self, resources): self.expr.findResources(resources) _______________________________________________ gem5-dev mailing list gem5-dev@gem5.org http://m5sim.org/mailman/listinfo/gem5-dev