[gem5-dev] Change in gem5/gem5[master]: ruby: 2x protocols has typo/syntax error that fails building
Timothy Hayes has submitted this change. ( https://gem5-review.googlesource.com/c/public/gem5/+/21259 ) Change subject: ruby: 2x protocols has typo/syntax error that fails building .. ruby: 2x protocols has typo/syntax error that fails building MOESI_hammer and MOESI_CMP_token contain incorrect lines. Change-Id: I1f9ac429d0f4dcb0241f21c8c9b831bee7aa37a4 Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/21259 Reviewed-by: Jason Lowe-Power Maintainer: Jason Lowe-Power Tested-by: kokoro --- M src/mem/ruby/protocol/MOESI_CMP_token-L1cache.sm M src/mem/ruby/protocol/MOESI_hammer-dir.sm 2 files changed, 0 insertions(+), 2 deletions(-) Approvals: Jason Lowe-Power: Looks good to me, approved; Looks good to me, approved kokoro: Regressions pass diff --git a/src/mem/ruby/protocol/MOESI_CMP_token-L1cache.sm b/src/mem/ruby/protocol/MOESI_CMP_token-L1cache.sm index 960afda..17c518a 100644 --- a/src/mem/ruby/protocol/MOESI_CMP_token-L1cache.sm +++ b/src/mem/ruby/protocol/MOESI_CMP_token-L1cache.sm @@ -695,7 +695,6 @@ in_msg.LineAddress, L1Icache_entry, tbe); } else { // No room in the L1, so we need to make room - trigger(Event:L1_Replacement, Addr victim := L1Icache.cacheProbe(in_msg.LineAddress); trigger(Event:L1_Replacement, victim, getL1ICacheEntry(victim), L1_TBEs[victim]); diff --git a/src/mem/ruby/protocol/MOESI_hammer-dir.sm b/src/mem/ruby/protocol/MOESI_hammer-dir.sm index d85ff19..3b00168 100644 --- a/src/mem/ruby/protocol/MOESI_hammer-dir.sm +++ b/src/mem/ruby/protocol/MOESI_hammer-dir.sm @@ -426,7 +426,6 @@ trigger(cache_request_to_event(in_msg.Type), in_msg.addr, pf_entry, tbe); } else { -trigger(Event:Pf_Replacement, Addr victim := probeFilter.cacheProbe(in_msg.addr); trigger(Event:Pf_Replacement, victim, getProbeFilterEntry(victim), TBEs[victim]); -- To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/21259 To unsubscribe, or for help writing mail filters, visit https://gem5-review.googlesource.com/settings Gerrit-Project: public/gem5 Gerrit-Branch: master Gerrit-Change-Id: I1f9ac429d0f4dcb0241f21c8c9b831bee7aa37a4 Gerrit-Change-Number: 21259 Gerrit-PatchSet: 3 Gerrit-Owner: Timothy Hayes Gerrit-Reviewer: Andreas Sandberg Gerrit-Reviewer: JING QU Gerrit-Reviewer: Jason Lowe-Power Gerrit-Reviewer: Timothy Hayes Gerrit-Reviewer: kokoro Gerrit-CC: Daniel Carvalho Gerrit-MessageType: merged ___ gem5-dev mailing list gem5-dev@gem5.org http://m5sim.org/mailman/listinfo/gem5-dev
[gem5-dev] Change in gem5/gem5[master]: ruby: 2x protocols has typo/syntax error that fails building
Hello Andreas Sandberg, Jason Lowe-Power, I'd like you to reexamine a change. Please visit https://gem5-review.googlesource.com/c/public/gem5/+/21259 to look at the new patch set (#2). Change subject: ruby: 2x protocols has typo/syntax error that fails building .. ruby: 2x protocols has typo/syntax error that fails building MOESI_hammer and MOESI_CMP_token contain incorrect lines. Change-Id: I1f9ac429d0f4dcb0241f21c8c9b831bee7aa37a4 --- M src/mem/ruby/protocol/MOESI_CMP_token-L1cache.sm M src/mem/ruby/protocol/MOESI_hammer-dir.sm 2 files changed, 0 insertions(+), 2 deletions(-) -- To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/21259 To unsubscribe, or for help writing mail filters, visit https://gem5-review.googlesource.com/settings Gerrit-Project: public/gem5 Gerrit-Branch: master Gerrit-Change-Id: I1f9ac429d0f4dcb0241f21c8c9b831bee7aa37a4 Gerrit-Change-Number: 21259 Gerrit-PatchSet: 2 Gerrit-Owner: Timothy Hayes Gerrit-Reviewer: Andreas Sandberg Gerrit-Reviewer: Jason Lowe-Power Gerrit-CC: Daniel Carvalho Gerrit-MessageType: newpatchset ___ gem5-dev mailing list gem5-dev@gem5.org http://m5sim.org/mailman/listinfo/gem5-dev
[gem5-dev] Change in gem5/gem5[master]: ruby: MOESI_hammer has typo/syntax error that fails building
Timothy Hayes has uploaded this change for review. ( https://gem5-review.googlesource.com/c/public/gem5/+/21259 ) Change subject: ruby: MOESI_hammer has typo/syntax error that fails building .. ruby: MOESI_hammer has typo/syntax error that fails building Change-Id: I1f9ac429d0f4dcb0241f21c8c9b831bee7aa37a4 --- M src/mem/ruby/protocol/MOESI_hammer-dir.sm 1 file changed, 0 insertions(+), 1 deletion(-) diff --git a/src/mem/ruby/protocol/MOESI_hammer-dir.sm b/src/mem/ruby/protocol/MOESI_hammer-dir.sm index d85ff19..3b00168 100644 --- a/src/mem/ruby/protocol/MOESI_hammer-dir.sm +++ b/src/mem/ruby/protocol/MOESI_hammer-dir.sm @@ -426,7 +426,6 @@ trigger(cache_request_to_event(in_msg.Type), in_msg.addr, pf_entry, tbe); } else { -trigger(Event:Pf_Replacement, Addr victim := probeFilter.cacheProbe(in_msg.addr); trigger(Event:Pf_Replacement, victim, getProbeFilterEntry(victim), TBEs[victim]); -- To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/21259 To unsubscribe, or for help writing mail filters, visit https://gem5-review.googlesource.com/settings Gerrit-Project: public/gem5 Gerrit-Branch: master Gerrit-Change-Id: I1f9ac429d0f4dcb0241f21c8c9b831bee7aa37a4 Gerrit-Change-Number: 21259 Gerrit-PatchSet: 1 Gerrit-Owner: Timothy Hayes Gerrit-MessageType: newchange ___ gem5-dev mailing list gem5-dev@gem5.org http://m5sim.org/mailman/listinfo/gem5-dev
[gem5-dev] Change in gem5/gem5[master]: mem-ruby: multiple memory requests to same cache line
Hello kokoro, Daniel Carvalho, Nikos Nikoleris, Bradford Beckmann, Anthony Gutierrez, Tuan Ta, Jason Lowe-Power, Nikos Nikoleris, I'd like you to reexamine a change. Please visit https://gem5-review.googlesource.com/c/public/gem5/+/21161 to look at the new patch set (#2). Change subject: mem-ruby: multiple memory requests to same cache line .. mem-ruby: multiple memory requests to same cache line Ruby's Sequencer::insertRequest() is responsible for bookkeeping memory requests before they are sent to the cache hierarchy. It first checks if there are other outstanding requests to the cache line and fails inserting accordingly. The failure in turn informs the O3 core that the cache is blocked and no more memory requests are sent that cycle. This is very restrictive and unrealistic behaviour since it is common to load/store from/to contiguous memory locations back to back (and therefore the same cache line). This fix allows the Sequencer to augment some of the outstanding memory requests with linked subrequests. This loosely mimics MSHRs for loads and merge buffers for stores. Change-Id: I270c2151709a5e3ce334d73594ad57654c5a0dd2 Signed-off-by: Timothy Hayes --- M src/mem/ruby/protocol/RubySlicc_Exports.sm M src/mem/ruby/system/Sequencer.cc M src/mem/ruby/system/Sequencer.hh 3 files changed, 105 insertions(+), 11 deletions(-) -- To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/21161 To unsubscribe, or for help writing mail filters, visit https://gem5-review.googlesource.com/settings Gerrit-Project: public/gem5 Gerrit-Branch: master Gerrit-Change-Id: I270c2151709a5e3ce334d73594ad57654c5a0dd2 Gerrit-Change-Number: 21161 Gerrit-PatchSet: 2 Gerrit-Owner: Timothy Hayes Gerrit-Reviewer: Anthony Gutierrez Gerrit-Reviewer: Bradford Beckmann Gerrit-Reviewer: Daniel Carvalho Gerrit-Reviewer: Jason Lowe-Power Gerrit-Reviewer: Nikos Nikoleris Gerrit-Reviewer: Nikos Nikoleris Gerrit-Reviewer: Tuan Ta Gerrit-Reviewer: kokoro Gerrit-CC: Andreas Sandberg Gerrit-MessageType: newpatchset ___ gem5-dev mailing list gem5-dev@gem5.org http://m5sim.org/mailman/listinfo/gem5-dev
[gem5-dev] Change in gem5/gem5[master]: mem-ruby: multiple memory requests to same cache line
g write request for the same @@ -230,8 +259,26 @@ m_outstanding_count++; } else { // There is an outstanding read request for the cache line -m_load_waiting_on_load++; -return RequestStatus_Aliased; +RequestTable::iterator i = r.first; +assert(i->first == line_addr); +SequencerRequest* in_flight_req = i->second; + +if ((request_type == RubyRequestType_LD || + request_type == RubyRequestType_IFETCH) && +(request_type == in_flight_req->m_type)) { + +// iterate until finding an empty MSHR entry +while (in_flight_req->next_request != nullptr) +in_flight_req = in_flight_req->next_request; + +in_flight_req->next_request = +new SequencerRequest(pkt, request_type, curCycle()); + +return RequestStatus_ReadyAppend; +} else { +m_load_waiting_on_load++; +return RequestStatus_Aliased; +} } } @@ -404,8 +451,16 @@ m_controller->unblock(address); } -hitCallback(request, data, success, mach, externalHit, -initialRequestTime, forwardRequestTime, firstResponseTime); +// there may be multiple outstanding store requests +// to the same cache line. +do { +SequencerRequest* next_request = request->next_request; + +hitCallback(request, data, scsuccess, mach, externalHit, +initialRequestTime, forwardRequestTime, firstResponseTime); + +request = next_request; +} while (request != nullptr); } void @@ -428,8 +483,16 @@ assert((request->m_type == RubyRequestType_LD) || (request->m_type == RubyRequestType_IFETCH)); -hitCallback(request, data, true, mach, externalHit, -initialRequestTime, forwardRequestTime, firstResponseTime); +// there may be multiple outstanding load requests +// to the same cache line. +do { +SequencerRequest* next_request = request->next_request; + +hitCallback(request, data, true, mach, externalHit, +initialRequestTime, forwardRequestTime, firstResponseTime); + +request = next_request; +} while (request != nullptr); } void @@ -607,6 +670,11 @@ } RequestStatus status = insertRequest(pkt, primary_type); + +// check if outstanding request was appended +if (status == RequestStatus_ReadyAppend) +return RequestStatus_Issued; + if (status != RequestStatus_Ready) return status; diff --git a/src/mem/ruby/system/Sequencer.hh b/src/mem/ruby/system/Sequencer.hh index 33fd530..2f1d901f 100644 --- a/src/mem/ruby/system/Sequencer.hh +++ b/src/mem/ruby/system/Sequencer.hh @@ -1,4 +1,16 @@ /* + * Copyright (c) 2019 ARM Limited + * All rights reserved + * + * The license below extends only to copyright in the software and shall + * not be construed as granting a license to any other intellectual + * property including but not limited to intellectual property relating + * to a hardware implementation of the functionality of the software + * licensed hereunder. You may use the software subject to the license + * terms below provided that you ensure that this notice is replicated + * unmodified and in its entirety in all distributions of the software, + * modified or unmodified, in source code or in binary form. + * * Copyright (c) 1999-2008 Mark D. Hill and David A. Wood * All rights reserved. * @@ -45,10 +57,12 @@ PacketPtr pkt; RubyRequestType m_type; Cycles issue_time; +SequencerRequest* next_request; SequencerRequest(PacketPtr _pkt, RubyRequestType _m_type, Cycles _issue_time) -: pkt(_pkt), m_type(_m_type), issue_time(_issue_time) +: pkt(_pkt), m_type(_m_type), issue_time(_issue_time), + next_request(nullptr) {} }; -- To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/21161 To unsubscribe, or for help writing mail filters, visit https://gem5-review.googlesource.com/settings Gerrit-Project: public/gem5 Gerrit-Branch: master Gerrit-Change-Id: I270c2151709a5e3ce334d73594ad57654c5a0dd2 Gerrit-Change-Number: 21161 Gerrit-PatchSet: 1 Gerrit-Owner: Timothy Hayes Gerrit-MessageType: newchange ___ gem5-dev mailing list gem5-dev@gem5.org http://m5sim.org/mailman/listinfo/gem5-dev