[gem5-dev] Cannot build on mac anymore
Hi, I did a git pull and tried to build again but found that I couldn't. I also tried doing a clean git clone and building again but got the same error message that I'm pasting below. I'm running OS X Mojave (10.14.5) with Xcode 10.3. Before I did a git pull, I was able to build and run fine with this exact same setup. Any ideas on how I can fix this? Thanks! [ TRACING] -> X86/debug/Cache.hh [ TRACING] -> X86/debug/CachePort.hh [ENUMDECL] Clusivity -> X86/enums/Clusivity.hh [SO PARAM] WriteAllocator -> X86/params/WriteAllocator.hh [ CXX] X86/mem/cache/tags/base_set_assoc.cc -> .o [ TRACING] -> X86/debug/CacheComp.hh [SO PARAM] CompressedTags -> X86/params/CompressedTags.hh [SO PARAM] SectorTags -> X86/params/SectorTags.hh [ CXX] X86/mem/cache/tags/compressed_tags.cc -> .o [SO PARAM] FALRU -> X86/params/FALRU.hh [ CXX] X86/mem/cache/tags/fa_lru.cc -> .o [ CXX] X86/mem/cache/tags/sector_blk.cc -> .o [ CXX] X86/mem/cache/tags/sector_tags.cc -> .o [ CXX] X86/mem/cache/tags/super_blk.cc -> .o In file included from build/X86/mem/cache/tags/compressed_tags.cc:36: In file included from build/X86/mem/cache/tags/compressed_tags.hh:39: In file included from /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/vector:270: In file included from /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/__bit_reference:15: In file included from /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/algorithm:644: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/memory:1880:58: error: destructor called on non-final 'SectorBlk' that has virtual functions but non-virtual destructor [-Werror,-Wdelete-non-virtual-dtor] _LIBCPP_INLINE_VISIBILITY void destroy(pointer __p) {__p->~_Tp();} ^ /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/memory:1742:18: note: in instantiation of member function 'std::__1::allocator::destroy' requested here {__a.destroy(__p);} ^ /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/memory:1595:14: note: in instantiation of function template specialization 'std::__1::allocator_traits >::__destroy' requested here {__destroy(__has_destroy(), __a, __p);} ^ /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/vector:421:25: note: in instantiation of function template specialization 'std::__1::allocator_traits >::destroy' requested here __alloc_traits::destroy(__alloc(), _VSTD::__to_raw_pointer(--__soon_to_be_end)); ^ /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/vector:364:29: note: in instantiation of member function 'std::__1::__vector_base >::__destruct_at_end' requested here void clear() _NOEXCEPT {__destruct_at_end(__begin_);} ^ /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/vector:458:9: note: in instantiation of member function 'std::__1::__vector_base >::clear' requested here clear(); ^ /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/iterator:1427:74: note: in instantiation of member function 'std::__1::__vector_base >::~__vector_base' requested here template friend class _LIBCPP_TEMPLATE_VIS vector; ^ /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/memory:1880:64: note: qualify call to silence this warning _LIBCPP_INLINE_VISIBILITY void destroy(pointer __p) {__p->~_Tp();} ^ /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/memory:1880:58: error: destructor called on non-final 'SuperBlk' that has virtual functions but non-virtual destructor [-Werror,-Wdelete-non-virtual-dtor] _LIBCPP_INLINE_VISIBILITY void destroy(pointer __p) {__p->~_Tp();} ^ /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/memory:1742:18: note: in instantiation of member function 'std::__1::allocator::destroy' requested here {__a.destroy(__p);} ^ /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/memory:1595:14: note: in instantiation of function template specialization 'std::__1::allocator_traits
[gem5-dev] Change in gem5/gem5[master]: mem-ruby: Remove assertion with incorrect assumption
Anthony Gutierrez has submitted this change. ( https://gem5-review.googlesource.com/c/public/gem5/+/19708 ) Change subject: mem-ruby: Remove assertion with incorrect assumption .. mem-ruby: Remove assertion with incorrect assumption Current code assumes that only one cacheline would either be in RW. This is not true for GPU protocols, and may not be true for some CPU-only protocols with state violations. Change-Id: I70db4fbb4e80663551e8635307bb937a4db8dc63 Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/19708 Reviewed-by: Jason Lowe-Power Reviewed-by: Anthony Gutierrez Reviewed-by: Nikos Nikoleris Maintainer: Jason Lowe-Power Tested-by: kokoro --- M src/mem/ruby/system/RubySystem.cc 1 file changed, 8 insertions(+), 2 deletions(-) Approvals: Jason Lowe-Power: Looks good to me, approved; Looks good to me, approved Nikos Nikoleris: Looks good to me, approved Anthony Gutierrez: Looks good to me, approved kokoro: Regressions pass diff --git a/src/mem/ruby/system/RubySystem.cc b/src/mem/ruby/system/RubySystem.cc index 572f5fe..83fa4c7 100644 --- a/src/mem/ruby/system/RubySystem.cc +++ b/src/mem/ruby/system/RubySystem.cc @@ -432,7 +432,6 @@ access_perm == AccessPermission_NotPresent) num_invalid++; } -assert(num_rw <= 1); // This if case is meant to capture what happens in a Broadcast/Snoop // protocol where the block does not exist in the cache hierarchy. You @@ -451,7 +450,14 @@ return true; } } -} else if (num_ro > 0 || num_rw == 1) { +} else if (num_ro > 0 || num_rw >= 1) { +if (num_rw > 1) { +// We iterate over the vector of abstract controllers, and return +// the first copy found. If we have more than one cache with block +// in writable permission, the first one found would be returned. +warn("More than one Abstract Controller with RW permission for " + "addr: %#x on cacheline: %#x.", address, line_address); +} // In Broadcast/Snoop protocols, this covers if you know the block // exists somewhere in the caching hierarchy, then you want to read any // valid RO or RW block. In directory protocols, same thing, you want -- To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/19708 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: I70db4fbb4e80663551e8635307bb937a4db8dc63 Gerrit-Change-Number: 19708 Gerrit-PatchSet: 5 Gerrit-Owner: Pouya Fotouhi Gerrit-Reviewer: Anthony Gutierrez Gerrit-Reviewer: Jason Lowe-Power Gerrit-Reviewer: Nikos Nikoleris Gerrit-Reviewer: Pouya Fotouhi Gerrit-Reviewer: Tiago Mück Gerrit-Reviewer: kokoro 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]: sim-se: small refactor on pipe syscall
Brandon Potter has submitted this change. ( https://gem5-review.googlesource.com/c/public/gem5/+/12308 ) Change subject: sim-se: small refactor on pipe syscall .. sim-se: small refactor on pipe syscall Change-Id: I02ffb1c4af980554ff12ac7d11d32ba80fe261c5 Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/12308 Reviewed-by: Brandon Potter Maintainer: Brandon Potter Tested-by: kokoro --- M src/sim/syscall_emul.cc 1 file changed, 7 insertions(+), 4 deletions(-) Approvals: Brandon Potter: Looks good to me, approved; Looks good to me, approved kokoro: Regressions pass diff --git a/src/sim/syscall_emul.cc b/src/sim/syscall_emul.cc index eaf90ec..142292d 100644 --- a/src/sim/syscall_emul.cc +++ b/src/sim/syscall_emul.cc @@ -868,8 +868,14 @@ SyscallReturn pipeImpl(SyscallDesc *desc, int callnum, ThreadContext *tc, bool pseudoPipe) { -int sim_fds[2], tgt_fds[2]; +Addr tgt_addr = 0; auto p = tc->getProcessPtr(); +if (!pseudoPipe) { +int index = 0; +tgt_addr = p->getSyscallArg(tc, index); +} + +int sim_fds[2], tgt_fds[2]; int pipe_retval = pipe(sim_fds); if (pipe_retval == -1) @@ -898,9 +904,6 @@ return tgt_fds[0]; } -int index = 0; -Addr tgt_addr = p->getSyscallArg(tc, index); - /** * Copy the target file descriptors into buffer space and then copy * the buffer space back into the target address space. -- To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/12308 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: I02ffb1c4af980554ff12ac7d11d32ba80fe261c5 Gerrit-Change-Number: 12308 Gerrit-PatchSet: 23 Gerrit-Owner: Brandon Potter Gerrit-Reviewer: Alexandru Duțu Gerrit-Reviewer: Brandon Potter Gerrit-Reviewer: John Alsop Gerrit-Reviewer: Matt Sinclair Gerrit-Reviewer: kokoro Gerrit-MessageType: merged ___ gem5-dev mailing list gem5-dev@gem5.org http://m5sim.org/mailman/listinfo/gem5-dev
[gem5-dev] Cron /z/m5/regression/do-regression quick
* build/NULL/tests/opt/quick/se/60.rubytest/null/none/rubytest-ruby: FAILED! * build/NULL_MOESI_hammer/tests/opt/quick/se/60.rubytest/null/none/rubytest-ruby-MOESI_hammer: FAILED! * build/NULL_MESI_Two_Level/tests/opt/quick/se/60.rubytest/null/none/rubytest-ruby-MESI_Two_Level: FAILED! * build/NULL_MOESI_CMP_directory/tests/opt/quick/se/60.rubytest/null/none/rubytest-ruby-MOESI_CMP_directory: FAILED! * build/NULL_MOESI_CMP_token/tests/opt/quick/se/60.rubytest/null/none/rubytest-ruby-MOESI_CMP_token: FAILED! * build/RISCV/tests/opt/quick/se/02.insttest/riscv/linux-rv64c/o3-timing: FAILED! * build/RISCV/tests/opt/quick/se/02.insttest/riscv/linux-rv64c/simple-timing-ruby: FAILED! * build/RISCV/tests/opt/quick/se/02.insttest/riscv/linux-rv64c/simple-atomic: FAILED! * build/RISCV/tests/opt/quick/se/02.insttest/riscv/linux-rv64a/o3-timing: FAILED! * build/RISCV/tests/opt/quick/se/02.insttest/riscv/linux-rv64c/simple-timing: FAILED! * build/RISCV/tests/opt/quick/se/02.insttest/riscv/linux-rv64f/o3-timing: FAILED! * build/RISCV/tests/opt/quick/se/02.insttest/riscv/linux-rv64c/minor-timing: FAILED! * build/ALPHA/tests/opt/quick/se/03.learning-gem5/alpha/linux/learning-gem5-p1-two-level: CHANGED! * build/ALPHA/tests/opt/quick/se/03.learning-gem5/alpha/linux/learning-gem5-p1-simple: CHANGED! * build/ALPHA/tests/opt/quick/se/00.hello/alpha/linux/simple-timing-ruby: CHANGED! * build/ALPHA/tests/opt/quick/se/01.hello-2T-smt/alpha/linux/o3-timing-mt: CHANGED! * build/ALPHA/tests/opt/quick/se/00.hello/alpha/linux/simple-atomic: CHANGED! * build/ALPHA/tests/opt/quick/se/00.hello/alpha/linux/o3-timing: CHANGED! * build/ALPHA/tests/opt/quick/se/00.hello/alpha/linux/minor-timing: CHANGED! * build/ALPHA/tests/opt/quick/se/00.hello/alpha/linux/simple-timing: CHANGED! * build/ALPHA/tests/opt/quick/fs/10.linux-boot/alpha/linux/tsunami-simple-atomic: CHANGED! * build/ALPHA/tests/opt/quick/fs/10.linux-boot/alpha/linux/tsunami-simple-atomic-dual: CHANGED! * build/ALPHA/tests/opt/quick/fs/10.linux-boot/alpha/linux/tsunami-simple-timing: CHANGED! * build/MIPS/tests/opt/quick/se/03.learning-gem5/mips/linux/learning-gem5-p1-two-level: CHANGED! * build/MIPS/tests/opt/quick/se/00.hello/mips/linux/simple-timing-ruby: CHANGED! * build/MIPS/tests/opt/quick/se/00.hello/mips/linux/simple-atomic: CHANGED! * build/MIPS/tests/opt/quick/se/00.hello/mips/linux/simple-timing: CHANGED! * build/MIPS/tests/opt/quick/se/03.learning-gem5/mips/linux/learning-gem5-p1-simple: CHANGED! * build/MIPS/tests/opt/quick/se/00.hello/mips/linux/o3-timing: CHANGED! * build/ALPHA/tests/opt/quick/fs/10.linux-boot/alpha/linux/tsunami-simple-timing-dual: CHANGED! * build/NULL/tests/opt/quick/se/80.dram-openpage/null/none/dram-lowp: CHANGED! * build/NULL/tests/opt/quick/se/80.dram-closepage/null/none/dram-lowp: CHANGED! * build/NULL/tests/opt/quick/se/70.tgen/null/none/tgen-dram-ctrl: CHANGED! * build/NULL/tests/opt/quick/se/70.tgen/null/none/tgen-simple-mem: CHANGED! * build/POWER/tests/opt/quick/se/00.hello/power/linux/simple-atomic: CHANGED! * build/POWER/tests/opt/quick/se/00.hello/power/linux/o3-timing: CHANGED! * build/SPARC/tests/opt/quick/se/02.insttest/sparc/linux/simple-timing: CHANGED! * build/SPARC/tests/opt/quick/se/03.learning-gem5/sparc/linux/learning-gem5-p1-simple: CHANGED! * build/SPARC/tests/opt/quick/se/02.insttest/sparc/linux/simple-atomic: CHANGED! * build/SPARC/tests/opt/quick/se/40.m5threads-test-atomic/sparc/linux/simple-atomic-mp: CHANGED! * build/SPARC/tests/opt/quick/se/00.hello/sparc/linux/simple-timing: CHANGED! * build/SPARC/tests/opt/quick/se/00.hello/sparc/linux/simple-atomic: CHANGED! * build/SPARC/tests/opt/quick/se/02.insttest/sparc/linux/o3-timing: CHANGED! * build/SPARC/tests/opt/quick/se/00.hello/sparc/linux/simple-timing-ruby: CHANGED! * build/SPARC/tests/opt/quick/se/03.learning-gem5/sparc/linux/learning-gem5-p1-two-level: CHANGED! * build/SPARC/tests/opt/quick/se/40.m5threads-test-atomic/sparc/linux/simple-timing-mp: CHANGED! * build/SPARC/tests/opt/quick/se/40.m5threads-test-atomic/sparc/linux/o3-timing-mp: CHANGED! * build/SPARC/tests/opt/quick/se/50.vortex/sparc/linux/simple-atomic: CHANGED! * build/SPARC/tests/opt/quick/se/70.twolf/sparc/linux/simple-atomic: CHANGED! * build/X86/tests/opt/quick/se/03.learning-gem5/x86/linux/learning-gem5-p1-simple: CHANGED! * build/X86/tests/opt/quick/se/03.learning-gem5/x86/linux/learning-gem5-p1-two-level: CHANGED! * build/ALPHA/tests/opt/quick/fs/80.netperf-stream/alpha/linux/twosys-tsunami-simple-atomic: CHANGED! * build/X86/tests/opt/quick/se/00.hello/x86/linux/simple-atomic: CHANGED! * build/X86/tests/opt/quick/se/00.hello/x86/linux/simple-timing-ruby: CHANGED! *
[gem5-dev] Change in gem5/gem5[master]: mem: Move eraseIfNullEntry to when holder is updated
Daniel Carvalho has submitted this change. ( https://gem5-review.googlesource.com/c/public/gem5/+/19750 ) Change subject: mem: Move eraseIfNullEntry to when holder is updated .. mem: Move eraseIfNullEntry to when holder is updated The entry should only be tested for deletion when holder is updated. Change-Id: I5a10b6fa876912709b7467860d43c23c60f38568 Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/19750 Reviewed-by: Nikos Nikoleris Maintainer: Nikos Nikoleris Tested-by: kokoro --- M src/mem/snoop_filter.cc 1 file changed, 14 insertions(+), 17 deletions(-) Approvals: Nikos Nikoleris: Looks good to me, approved; Looks good to me, approved kokoro: Regressions pass diff --git a/src/mem/snoop_filter.cc b/src/mem/snoop_filter.cc index d368dd8..b0422e2 100644 --- a/src/mem/snoop_filter.cc +++ b/src/mem/snoop_filter.cc @@ -206,9 +206,6 @@ SnoopItem& sf_item = sf_it->second; -DPRINTF(SnoopFilter, "%s: old SF value %x.%x\n", -__func__, sf_item.requested, sf_item.holder); - SnoopMask interested = (sf_item.holder | sf_item.requested); totSnoops++; @@ -232,13 +229,14 @@ // Early clear of the holder, if no other request is currently going on // @todo: This should possibly be updated even though we do not filter // upward snoops +DPRINTF(SnoopFilter, "%s: old SF value %x.%x\n", +__func__, sf_item.requested, sf_item.holder); sf_item.holder = 0; +DPRINTF(SnoopFilter, "%s: new SF value %x.%x\n", +__func__, sf_item.requested, sf_item.holder); +eraseIfNullEntry(sf_it); } -eraseIfNullEntry(sf_it); -DPRINTF(SnoopFilter, "%s: new SF value %x.%x interest: %x \n", -__func__, sf_item.requested, sf_item.holder, interested); - return snoopSelected(maskToPortList(interested), lookupLatency); } @@ -320,21 +318,20 @@ if (!is_hit) return; -SnoopItem& sf_item = sf_it->second; - -DPRINTF(SnoopFilter, "%s: old SF value %x.%x\n", -__func__, sf_item.requested, sf_item.holder); - // If the snoop response has no sharers the line is passed in // Modified state, and we know that there are no other copies, or // they will all be invalidated imminently if (!cpkt->hasSharers()) { -sf_item.holder = 0; -} -DPRINTF(SnoopFilter, "%s: new SF value %x.%x\n", -__func__, sf_item.requested, sf_item.holder); -eraseIfNullEntry(sf_it); +SnoopItem& sf_item = sf_it->second; +DPRINTF(SnoopFilter, "%s: old SF value %x.%x\n", +__func__, sf_item.requested, sf_item.holder); +sf_item.holder = 0; +DPRINTF(SnoopFilter, "%s: new SF value %x.%x\n", +__func__, sf_item.requested, sf_item.holder); + +eraseIfNullEntry(sf_it); +} } void -- To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/19750 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: I5a10b6fa876912709b7467860d43c23c60f38568 Gerrit-Change-Number: 19750 Gerrit-PatchSet: 2 Gerrit-Owner: Daniel Carvalho Gerrit-Reviewer: Daniel Carvalho Gerrit-Reviewer: Nikos Nikoleris Gerrit-Reviewer: kokoro 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]: mem: Encapsulate retry variables of SnoopFilter
Daniel Carvalho has submitted this change. ( https://gem5-review.googlesource.com/c/public/gem5/+/19749 ) Change subject: mem: Encapsulate retry variables of SnoopFilter .. mem: Encapsulate retry variables of SnoopFilter Group all variables related to the restoration of a snoop filter entry due to a crossbar retry. Change-Id: I4e03edb3afd06563b7a5812959739876709eceeb Signed-off-by: Daniel R. Carvalho Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/19749 Reviewed-by: Nikos Nikoleris Maintainer: Nikos Nikoleris Tested-by: kokoro --- M src/mem/snoop_filter.cc M src/mem/snoop_filter.hh 2 files changed, 44 insertions(+), 21 deletions(-) Approvals: Nikos Nikoleris: Looks good to me, approved; Looks good to me, approved kokoro: Regressions pass diff --git a/src/mem/snoop_filter.cc b/src/mem/snoop_filter.cc index 8168c3d..d368dd8 100644 --- a/src/mem/snoop_filter.cc +++ b/src/mem/snoop_filter.cc @@ -76,8 +76,8 @@ line_addr |= LineSecure; } SnoopMask req_port = portToMask(slave_port); -reqLookupResult = cachedLocations.find(line_addr); -bool is_hit = (reqLookupResult != cachedLocations.end()); +reqLookupResult.it = cachedLocations.find(line_addr); +bool is_hit = (reqLookupResult.it != cachedLocations.end()); // If the snoop filter has no entry, and we should not allocate, // do not create a new snoop filter entry, simply return a NULL @@ -86,15 +86,17 @@ return snoopDown(lookupLatency); // If no hit in snoop filter create a new element and update iterator -if (!is_hit) -reqLookupResult = cachedLocations.emplace(line_addr, SnoopItem()).first; -SnoopItem& sf_item = reqLookupResult->second; +if (!is_hit) { +reqLookupResult.it = +cachedLocations.emplace(line_addr, SnoopItem()).first; +} +SnoopItem& sf_item = reqLookupResult.it->second; SnoopMask interested = sf_item.holder | sf_item.requested; // Store unmodified value of snoop filter item in temp storage in // case we need to revert because of a send retry in // updateRequest. -retryItem = sf_item; +reqLookupResult.retryItem = sf_item; totRequests++; if (is_hit) { @@ -155,25 +157,26 @@ void SnoopFilter::finishRequest(bool will_retry, Addr addr, bool is_secure) { -if (reqLookupResult != cachedLocations.end()) { +if (reqLookupResult.it != cachedLocations.end()) { // since we rely on the caller, do a basic check to ensure // that finishRequest is being called following lookupRequest Addr line_addr = (addr & ~(Addr(linesize - 1))); if (is_secure) { line_addr |= LineSecure; } -assert(reqLookupResult->first == line_addr); +assert(reqLookupResult.it->first == line_addr); if (will_retry) { +SnoopItem retry_item = reqLookupResult.retryItem; // Undo any changes made in lookupRequest to the snoop filter // entry if the request will come again. retryItem holds // the previous value of the snoopfilter entry. -reqLookupResult->second = retryItem; +reqLookupResult.it->second = retry_item; DPRINTF(SnoopFilter, "%s: restored SF value %x.%x\n", -__func__, retryItem.requested, retryItem.holder); +__func__, retry_item.requested, retry_item.holder); } -eraseIfNullEntry(reqLookupResult); +eraseIfNullEntry(reqLookupResult.it); } } diff --git a/src/mem/snoop_filter.hh b/src/mem/snoop_filter.hh index 9c06615..4d1eea9 100644 --- a/src/mem/snoop_filter.hh +++ b/src/mem/snoop_filter.hh @@ -94,7 +94,7 @@ typedef std::vector SnoopList; SnoopFilter (const SnoopFilterParams *p) : -SimObject(p), reqLookupResult(cachedLocations.end()), retryItem{0, 0}, +SimObject(p), reqLookupResult(cachedLocations.end()), linesize(p->system->cacheLineSize()), lookupLatency(p->lookup_latency), maxEntryCount(p->max_capacity / p->system->cacheLineSize()) { @@ -261,17 +261,37 @@ /** Simple hash set of cached addresses. */ SnoopFilterCache cachedLocations; + /** - * Iterator used to store the result from lookupRequest until we - * call finishRequest. + * A request lookup must be followed by a call to finishRequest to inform + * the operation's success. If a retry is needed, however, all changes + * made to the snoop filter while performing the lookup must be undone. + * This structure keeps track of the state previous to such changes. */ -SnoopFilterCache::iterator reqLookupResult; -/** - * Variable to temporarily store value of snoopfilter entry - * incase finishRequest needs to undo changes made in lookupRequest - * (because of crossbar retry) - */ -SnoopItem retryItem; +struct
[gem5-dev] Change in gem5/gem5[master]: mem-ruby: Make H3 inherit from MultiBitSelBloomFilter
Daniel Carvalho has uploaded a new patch set (#5). ( https://gem5-review.googlesource.com/c/public/gem5/+/18873 ) Change subject: mem-ruby: Make H3 inherit from MultiBitSelBloomFilter .. mem-ruby: Make H3 inherit from MultiBitSelBloomFilter Make MultiBitSelBloomFilter a generic BloomFilter that maps multiple entries to an address, and therefore uses multiple hash functions. This allows the common functionality of both filters to be merged into one, since they only differ in the hash functions being used. Change-Id: I0984067b710a208715f5f2727b8c4312feb6529b Signed-off-by: Daniel R. Carvalho --- M src/mem/ruby/filters/BloomFilters.py M src/mem/ruby/filters/H3BloomFilter.cc M src/mem/ruby/filters/H3BloomFilter.hh M src/mem/ruby/filters/MultiBitSelBloomFilter.cc M src/mem/ruby/filters/MultiBitSelBloomFilter.hh 5 files changed, 64 insertions(+), 115 deletions(-) -- To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/18873 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: I0984067b710a208715f5f2727b8c4312feb6529b Gerrit-Change-Number: 18873 Gerrit-PatchSet: 5 Gerrit-Owner: Daniel Carvalho Gerrit-Reviewer: Daniel Carvalho Gerrit-CC: Nikos Nikoleris 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: Make MultiGrainBloomFilter generic
Hello kokoro, Nikos Nikoleris, I'd like you to reexamine a change. Please visit https://gem5-review.googlesource.com/c/public/gem5/+/18869 to look at the new patch set (#5). Change subject: mem-ruby: Make MultiGrainBloomFilter generic .. mem-ruby: Make MultiGrainBloomFilter generic Allow combining any number of Bloom Filters in the MultiGrain. Change-Id: I73ae33063e1feed731af6f625d2f64245f21df18 Signed-off-by: Daniel R. Carvalho --- M src/mem/ruby/filters/BloomFilters.py M src/mem/ruby/filters/MultiGrainBloomFilter.cc M src/mem/ruby/filters/MultiGrainBloomFilter.hh 3 files changed, 65 insertions(+), 48 deletions(-) -- To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/18869 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: I73ae33063e1feed731af6f625d2f64245f21df18 Gerrit-Change-Number: 18869 Gerrit-PatchSet: 5 Gerrit-Owner: Daniel Carvalho Gerrit-Reviewer: Daniel Carvalho Gerrit-Reviewer: Nikos Nikoleris Gerrit-Reviewer: kokoro 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: Define BloomFilter namespace
Hello Nikos Nikoleris, I'd like you to reexamine a change. Please visit https://gem5-review.googlesource.com/c/public/gem5/+/18874 to look at the new patch set (#5). Change subject: mem-ruby: Define BloomFilter namespace .. mem-ruby: Define BloomFilter namespace Define a BloomFilter namespace and put all BloomFilter related code in it. As a side effect the BloomFilter classes have been renamed to remove the "BloomFilter" suffix. Change-Id: I3ee8cc225bf3b820e561c3e25a6bf38e0012e3a8 Signed-off-by: Daniel R. Carvalho --- M src/mem/ruby/filters/AbstractBloomFilter.hh M src/mem/ruby/filters/BlockBloomFilter.cc M src/mem/ruby/filters/BlockBloomFilter.hh M src/mem/ruby/filters/BloomFilters.py M src/mem/ruby/filters/BulkBloomFilter.cc M src/mem/ruby/filters/BulkBloomFilter.hh M src/mem/ruby/filters/H3BloomFilter.cc M src/mem/ruby/filters/H3BloomFilter.hh M src/mem/ruby/filters/LSB_CountingBloomFilter.cc M src/mem/ruby/filters/LSB_CountingBloomFilter.hh M src/mem/ruby/filters/MultiBitSelBloomFilter.cc M src/mem/ruby/filters/MultiBitSelBloomFilter.hh M src/mem/ruby/filters/MultiGrainBloomFilter.cc M src/mem/ruby/filters/MultiGrainBloomFilter.hh 14 files changed, 185 insertions(+), 128 deletions(-) -- To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/18874 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: I3ee8cc225bf3b820e561c3e25a6bf38e0012e3a8 Gerrit-Change-Number: 18874 Gerrit-PatchSet: 5 Gerrit-Owner: Daniel Carvalho Gerrit-Reviewer: Nikos Nikoleris Gerrit-CC: kokoro 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]: base: Add a perfect bloom filter
Hello Nikos Nikoleris, I'd like you to reexamine a change. Please visit https://gem5-review.googlesource.com/c/public/gem5/+/18879 to look at the new patch set (#5). Change subject: base: Add a perfect bloom filter .. base: Add a perfect bloom filter Add a bloom filter that keeps track of all observed entries, and thus has no false negatives nor false positives. Change-Id: Iba784e617a99c77554c688470d9b9e12c260f23b Signed-off-by: Daniel R. Carvalho --- M src/base/filters/BloomFilters.py M src/base/filters/SConscript A src/base/filters/perfect_bloom_filter.cc A src/base/filters/perfect_bloom_filter.hh 4 files changed, 170 insertions(+), 0 deletions(-) -- To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/18879 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: Iba784e617a99c77554c688470d9b9e12c260f23b Gerrit-Change-Number: 18879 Gerrit-PatchSet: 5 Gerrit-Owner: Daniel Carvalho Gerrit-Reviewer: Daniel Carvalho Gerrit-Reviewer: Nikos Nikoleris Gerrit-CC: kokoro 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: Move Bloom Filters to base
Hello kokoro, Anthony Gutierrez, Nikos Nikoleris, I'd like you to reexamine a change. Please visit https://gem5-review.googlesource.com/c/public/gem5/+/18875 to look at the new patch set (#5). Change subject: mem-ruby: Move Bloom Filters to base .. mem-ruby: Move Bloom Filters to base All Bloom Filters are completely independent of Ruby, and therefore can be used everywhere. As a side effect, Ruby was not using the filters, so their dependency was removed. Change-Id: Ic5f430610c33c0791fb81c79101ebe737189497e Signed-off-by: Daniel R. Carvalho --- R src/base/filters/BloomFilters.py R src/base/filters/SConscript R src/base/filters/base.hh R src/base/filters/block_bloom_filter.cc R src/base/filters/block_bloom_filter.hh R src/base/filters/bulk_bloom_filter.cc R src/base/filters/bulk_bloom_filter.hh R src/base/filters/h3_bloom_filter.cc R src/base/filters/h3_bloom_filter.hh R src/base/filters/lsb_counting_bloom_filter.cc R src/base/filters/lsb_counting_bloom_filter.hh R src/base/filters/multi_bit_sel_bloom_filter.cc R src/base/filters/multi_bit_sel_bloom_filter.hh R src/base/filters/multi_bloom_filter.cc R src/base/filters/multi_bloom_filter.hh M src/mem/protocol/RubySlicc_Types.sm M src/mem/ruby/SConscript 17 files changed, 108 insertions(+), 83 deletions(-) -- To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/18875 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: Ic5f430610c33c0791fb81c79101ebe737189497e Gerrit-Change-Number: 18875 Gerrit-PatchSet: 5 Gerrit-Owner: Daniel Carvalho Gerrit-Reviewer: Anthony Gutierrez Gerrit-Reviewer: Nikos Nikoleris Gerrit-Reviewer: kokoro 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: Remove NonCountingBloomFilter
Hello kokoro, Nikos Nikoleris, I'd like you to reexamine a change. Please visit https://gem5-review.googlesource.com/c/public/gem5/+/18871 to look at the new patch set (#5). Change subject: mem-ruby: Remove NonCountingBloomFilter .. mem-ruby: Remove NonCountingBloomFilter Make BlockBloomFilter accept having a single bitfield, in which case it behaves exactly as the NonCountingBloomFilter, and thus the latter can be removed. Change-Id: I56d96a89290c933293ce434bbe0e8bcd4bbcaa42 Signed-off-by: Daniel R. Carvalho --- M src/mem/ruby/filters/BlockBloomFilter.cc M src/mem/ruby/filters/BloomFilters.py D src/mem/ruby/filters/NonCountingBloomFilter.cc D src/mem/ruby/filters/NonCountingBloomFilter.hh M src/mem/ruby/filters/SConscript 5 files changed, 2 insertions(+), 150 deletions(-) -- To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/18871 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: I56d96a89290c933293ce434bbe0e8bcd4bbcaa42 Gerrit-Change-Number: 18871 Gerrit-PatchSet: 5 Gerrit-Owner: Daniel Carvalho Gerrit-Reviewer: Nikos Nikoleris Gerrit-Reviewer: kokoro Gerrit-MessageType: newpatchset ___ gem5-dev mailing list gem5-dev@gem5.org http://m5sim.org/mailman/listinfo/gem5-dev