[gem5-dev] Change in public/gem5[master]: mem-cache: Adopt a more sensible cache class hierarchy
Hello Gabe Black, Daniel Carvalho, Jason Lowe-Power, I'd like you to reexamine a change. Please visit https://gem5-review.googlesource.com/8290 to look at the new patch set (#3). Change subject: mem-cache: Adopt a more sensible cache class hierarchy .. mem-cache: Adopt a more sensible cache class hierarchy This patch changes what goes into the BaseCache and what goes into the Cache, to make it easier to add a NoncoherentCache with as much re-use as possible. A number of redundant members and definitions are also removed in the process. This is a modified version of a changeset put together by Andreas HanssonChange-Id: I56cef203728e500f74e9e7599fe307f366dfb753 --- M src/mem/cache/base.cc M src/mem/cache/base.hh M src/mem/cache/cache.cc M src/mem/cache/cache.hh M src/mem/cache/mshr.cc M src/mem/cache/mshr.hh M src/mem/cache/queue_entry.hh M src/mem/cache/replacement_policies/base.hh M src/mem/cache/write_queue_entry.cc M src/mem/cache/write_queue_entry.hh 10 files changed, 446 insertions(+), 454 deletions(-) -- To view, visit https://gem5-review.googlesource.com/8290 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: I56cef203728e500f74e9e7599fe307f366dfb753 Gerrit-Change-Number: 8290 Gerrit-PatchSet: 3 Gerrit-Owner: Nikos Nikoleris Gerrit-Reviewer: Daniel Carvalho Gerrit-Reviewer: Gabe Black Gerrit-Reviewer: Jason Lowe-Power Gerrit-Reviewer: Nikos Nikoleris Gerrit-MessageType: newpatchset ___ gem5-dev mailing list gem5-dev@gem5.org http://m5sim.org/mailman/listinfo/gem5-dev
[gem5-dev] Change in public/gem5[master]: mem-cache: Add a non-coherent cache
Hello Gabe Black, Jason Lowe-Power, Daniel Carvalho, I'd like you to reexamine a change. Please visit https://gem5-review.googlesource.com/8291 to look at the new patch set (#4). Change subject: mem-cache: Add a non-coherent cache .. mem-cache: Add a non-coherent cache The class re-uses the existing MSHR and write queue. At the moment every single access is handled by the cache, even uncacheable accesses, and nothing is forwarded. This is a modified version of a changeset put together by Andreas HanssonChange-Id: I41f7f9c2b8c7fa5ec23712a4446e8adb1c9a336a --- M configs/example/memtest.py M src/mem/cache/Cache.py M src/mem/cache/SConscript A src/mem/cache/noncoherent_cache.cc A src/mem/cache/noncoherent_cache.hh M src/mem/cache/queue.hh M tests/configs/base_config.py 7 files changed, 1,522 insertions(+), 12 deletions(-) -- To view, visit https://gem5-review.googlesource.com/8291 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: I41f7f9c2b8c7fa5ec23712a4446e8adb1c9a336a Gerrit-Change-Number: 8291 Gerrit-PatchSet: 4 Gerrit-Owner: Nikos Nikoleris Gerrit-Reviewer: Daniel Carvalho Gerrit-Reviewer: Gabe Black Gerrit-Reviewer: Jason Lowe-Power Gerrit-Reviewer: Nikos Nikoleris Gerrit-MessageType: newpatchset ___ gem5-dev mailing list gem5-dev@gem5.org http://m5sim.org/mailman/listinfo/gem5-dev
[gem5-dev] Change in public/gem5[master]: mem-cache: ReplacementPolicy specific replacement data
Hello Jason Lowe-Power, Nikos Nikoleris, I'd like you to reexamine a change. Please visit https://gem5-review.googlesource.com/9421 to look at the new patch set (#6). Change subject: mem-cache: ReplacementPolicy specific replacement data .. mem-cache: ReplacementPolicy specific replacement data Replacement data is specific for each replacement policy, and thus should be instantiated differently by each policy. Touch and reset do not need to be aware of CacheBlk, as they only update its ReplacementData. Change-Id: I998917d800fa48504ed95abffa2f1b7bfd68522b --- M src/mem/cache/blk.hh M src/mem/cache/replacement_policies/base.cc M src/mem/cache/replacement_policies/base.hh M src/mem/cache/replacement_policies/brrip_rp.cc M src/mem/cache/replacement_policies/brrip_rp.hh M src/mem/cache/replacement_policies/fifo_rp.cc M src/mem/cache/replacement_policies/lru_rp.cc M src/mem/cache/replacement_policies/lru_rp.hh M src/mem/cache/replacement_policies/mru_rp.cc M src/mem/cache/replacement_policies/mru_rp.hh M src/mem/cache/replacement_policies/random_rp.cc M src/mem/cache/tags/base_set_assoc.cc M src/mem/cache/tags/base_set_assoc.hh 13 files changed, 293 insertions(+), 127 deletions(-) -- To view, visit https://gem5-review.googlesource.com/9421 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: I998917d800fa48504ed95abffa2f1b7bfd68522b Gerrit-Change-Number: 9421 Gerrit-PatchSet: 6 Gerrit-Owner: Daniel CarvalhoGerrit-Reviewer: Daniel Carvalho Gerrit-Reviewer: Jason Lowe-Power Gerrit-Reviewer: Nikos Nikoleris Gerrit-MessageType: newpatchset ___ gem5-dev mailing list gem5-dev@gem5.org http://m5sim.org/mailman/listinfo/gem5-dev
[gem5-dev] Change in public/gem5[master]: mem-cache: ReplacementPolicy specific replacement data
Hello Jason Lowe-Power, Nikos Nikoleris, I'd like you to reexamine a change. Please visit https://gem5-review.googlesource.com/9421 to look at the new patch set (#7). Change subject: mem-cache: ReplacementPolicy specific replacement data .. mem-cache: ReplacementPolicy specific replacement data Replacement data is specific for each replacement policy, and thus should be instantiated differently by each policy. Touch and reset do not need to be aware of CacheBlk, as they only update its ReplacementData. Change-Id: I998917d800fa48504ed95abffa2f1b7bfd68522b --- M src/mem/cache/blk.hh M src/mem/cache/replacement_policies/base.cc M src/mem/cache/replacement_policies/base.hh M src/mem/cache/replacement_policies/brrip_rp.cc M src/mem/cache/replacement_policies/brrip_rp.hh M src/mem/cache/replacement_policies/fifo_rp.cc M src/mem/cache/replacement_policies/lfu_rp.cc M src/mem/cache/replacement_policies/lru_rp.cc M src/mem/cache/replacement_policies/lru_rp.hh M src/mem/cache/replacement_policies/mru_rp.cc M src/mem/cache/replacement_policies/mru_rp.hh M src/mem/cache/replacement_policies/random_rp.cc M src/mem/cache/tags/base_set_assoc.cc M src/mem/cache/tags/base_set_assoc.hh 14 files changed, 296 insertions(+), 131 deletions(-) -- To view, visit https://gem5-review.googlesource.com/9421 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: I998917d800fa48504ed95abffa2f1b7bfd68522b Gerrit-Change-Number: 9421 Gerrit-PatchSet: 7 Gerrit-Owner: Daniel CarvalhoGerrit-Reviewer: Daniel Carvalho Gerrit-Reviewer: Jason Lowe-Power Gerrit-Reviewer: Nikos Nikoleris Gerrit-MessageType: newpatchset ___ gem5-dev mailing list gem5-dev@gem5.org http://m5sim.org/mailman/listinfo/gem5-dev
[gem5-dev] Change in public/gem5[master]: mem-cache: Move insertBlock functionality in FALRU
Hello Jason Lowe-Power, Nikos Nikoleris, I'd like you to reexamine a change. Please visit https://gem5-review.googlesource.com/8882 to look at the new patch set (#5). Change subject: mem-cache: Move insertBlock functionality in FALRU .. mem-cache: Move insertBlock functionality in FALRU Block insertion is being done in the getCandidates function, while the insertBlock function does not do anything. Besides, BaseTags' stats weren't being updated. Change-Id: Iadab9c1ea61519214f66fa24c4b91c4fc95604c0 --- M src/mem/cache/tags/base.cc M src/mem/cache/tags/base.hh M src/mem/cache/tags/base_set_assoc.hh M src/mem/cache/tags/fa_lru.cc M src/mem/cache/tags/fa_lru.hh 5 files changed, 91 insertions(+), 67 deletions(-) -- To view, visit https://gem5-review.googlesource.com/8882 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: Iadab9c1ea61519214f66fa24c4b91c4fc95604c0 Gerrit-Change-Number: 8882 Gerrit-PatchSet: 5 Gerrit-Owner: Daniel CarvalhoGerrit-Reviewer: Daniel Carvalho Gerrit-Reviewer: Jason Lowe-Power Gerrit-Reviewer: Nikos Nikoleris Gerrit-MessageType: newpatchset ___ gem5-dev mailing list gem5-dev@gem5.org http://m5sim.org/mailman/listinfo/gem5-dev
[gem5-dev] Change in public/gem5[master]: base: Make bitunion output functions static/inline.
Gabe Black has submitted this change and it was merged. ( https://gem5-review.googlesource.com/9581 ) Change subject: base: Make bitunion output functions static/inline. .. base: Make bitunion output functions static/inline. The specializations need to be online only and not static, but the template itself is static and inline. Originally they were in an anonymous namespace, but that causes warnings when building on clang or with certain versions of gcc because the functions may not be used in every .cc. Change-Id: Iff127337f7bf0c18755de07a49d6e7a9ce6f2f0a Reviewed-on: https://gem5-review.googlesource.com/9581 Reviewed-by: Anthony GutierrezReviewed-by: Jason Lowe-Power Maintainer: Anthony Gutierrez Maintainer: Jason Lowe-Power --- M src/base/bitunion.hh 1 file changed, 4 insertions(+), 6 deletions(-) Approvals: Jason Lowe-Power: Looks good to me, approved; Looks good to me, approved Anthony Gutierrez: Looks good to me, approved; Looks good to me, approved diff --git a/src/base/bitunion.hh b/src/base/bitunion.hh index b2a2ba8..49a956e 100644 --- a/src/base/bitunion.hh +++ b/src/base/bitunion.hh @@ -419,10 +419,9 @@ namespace BitfieldBackend { -namespace -{ + template -std::ostream & +static inline std::ostream & bitfieldBackendPrinter(std::ostream , const T ) { os << t; @@ -433,7 +432,7 @@ //these specializations attempt to ensure that they get cast to integers //of the appropriate type before printing. template <> -std::ostream & +inline std::ostream & bitfieldBackendPrinter(std::ostream , const char ) { os << (const int)t; @@ -441,14 +440,13 @@ } template <> -std::ostream & +inline std::ostream & bitfieldBackendPrinter(std::ostream , const unsigned char ) { os << (const unsigned int)t; return os; } } -} //A default << operator which casts a bitunion to its underlying type and //passes it to BitfieldBackend::bitfieldBackendPrinter. -- To view, visit https://gem5-review.googlesource.com/9581 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: Iff127337f7bf0c18755de07a49d6e7a9ce6f2f0a Gerrit-Change-Number: 9581 Gerrit-PatchSet: 2 Gerrit-Owner: Gabe Black Gerrit-Reviewer: Alexandru Duțu Gerrit-Reviewer: Anthony Gutierrez Gerrit-Reviewer: Gabe Black Gerrit-Reviewer: Jason Lowe-Power Gerrit-MessageType: merged ___ gem5-dev mailing list gem5-dev@gem5.org http://m5sim.org/mailman/listinfo/gem5-dev
[gem5-dev] Change in public/gem5[master]: mem-cache: Remove unused return value from the recvTimingReq func
Nikos Nikoleris has submitted this change and it was merged. ( https://gem5-review.googlesource.com/8289 ) Change subject: mem-cache: Remove unused return value from the recvTimingReq func .. mem-cache: Remove unused return value from the recvTimingReq func The recvTimingReq function in the cache always returns true. This changeset removes the return value. Change-Id: I00dddca65ee7224ecfa579ea5195c841dac02972 Reviewed-on: https://gem5-review.googlesource.com/8289 Maintainer: Nikos NikolerisReviewed-by: Daniel Carvalho --- M src/mem/cache/cache.cc M src/mem/cache/cache.hh 2 files changed, 7 insertions(+), 12 deletions(-) Approvals: Daniel Carvalho: Looks good to me, approved Nikos Nikoleris: Looks good to me, approved diff --git a/src/mem/cache/cache.cc b/src/mem/cache/cache.cc index cbc0ed9..c03b5b2 100644 --- a/src/mem/cache/cache.cc +++ b/src/mem/cache/cache.cc @@ -648,7 +648,7 @@ } } -bool +void Cache::recvTimingReq(PacketPtr pkt) { DPRINTF(CacheTags, "%s tags:\n%s\n", __func__, tags->print()); @@ -660,7 +660,7 @@ // @todo This should really enqueue the packet rather bool M5_VAR_USED success = memSidePort->sendTimingReq(pkt); assert(success); -return true; +return; } promoteWholeLineWrites(pkt); @@ -730,7 +730,7 @@ // and we have already sent out any express snoops in the // section above to ensure all other copies in the system are // invalidated -return true; +return; } // anything that is merely forwarded pays for the forward latency and @@ -976,8 +976,6 @@ if (next_pf_time != MaxTick) schedMemSideSendEvent(next_pf_time); - -return true; } PacketPtr @@ -2770,13 +2768,11 @@ assert(!cache->system->bypassCaches()); // always let express snoop packets through if even if blocked -if (pkt->isExpressSnoop()) { -bool M5_VAR_USED bypass_success = cache->recvTimingReq(pkt); -assert(bypass_success); +if (pkt->isExpressSnoop() || tryTiming(pkt)) { +cache->recvTimingReq(pkt); return true; } - -return tryTiming(pkt) && cache->recvTimingReq(pkt); +return false; } Tick diff --git a/src/mem/cache/cache.hh b/src/mem/cache/cache.hh index 4d840be..7d28279 100644 --- a/src/mem/cache/cache.hh +++ b/src/mem/cache/cache.hh @@ -350,9 +350,8 @@ /** * Performs the access specified by the request. * @param pkt The request to perform. - * @return The result of the access. */ -bool recvTimingReq(PacketPtr pkt); +void recvTimingReq(PacketPtr pkt); /** * Insert writebacks into the write buffer -- To view, visit https://gem5-review.googlesource.com/8289 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: I00dddca65ee7224ecfa579ea5195c841dac02972 Gerrit-Change-Number: 8289 Gerrit-PatchSet: 4 Gerrit-Owner: Nikos Nikoleris Gerrit-Reviewer: Daniel Carvalho Gerrit-Reviewer: Gabe Black Gerrit-Reviewer: Jason Lowe-Power Gerrit-Reviewer: Nikos Nikoleris Gerrit-MessageType: merged ___ gem5-dev mailing list gem5-dev@gem5.org http://m5sim.org/mailman/listinfo/gem5-dev
[gem5-dev] Change in public/gem5[master]: mem-cache: Create LIP Replacement Policy
Hello Jason Lowe-Power, Nikos Nikoleris, I'd like you to reexamine a change. Please visit https://gem5-review.googlesource.com/9002 to look at the new patch set (#3). Change subject: mem-cache: Create LIP Replacement Policy .. mem-cache: Create LIP Replacement Policy Implementation of a LRU Insertion Policy replacement policy. Change-Id: I1a9aa0091ff2cdc1b1652c1d5ec7a3b33fba5b44 --- M src/mem/cache/replacement_policies/ReplacementPolicies.py 1 file changed, 3 insertions(+), 0 deletions(-) -- To view, visit https://gem5-review.googlesource.com/9002 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: I1a9aa0091ff2cdc1b1652c1d5ec7a3b33fba5b44 Gerrit-Change-Number: 9002 Gerrit-PatchSet: 3 Gerrit-Owner: Daniel CarvalhoGerrit-Reviewer: Daniel Carvalho Gerrit-Reviewer: Jason Lowe-Power Gerrit-Reviewer: Nikos Nikoleris Gerrit-MessageType: newpatchset ___ gem5-dev mailing list gem5-dev@gem5.org http://m5sim.org/mailman/listinfo/gem5-dev
[gem5-dev] Change in public/gem5[master]: mem-cache: Create BIP Replacement Policy
Hello Jason Lowe-Power, I'd like you to reexamine a change. Please visit https://gem5-review.googlesource.com/9003 to look at the new patch set (#3). Change subject: mem-cache: Create BIP Replacement Policy .. mem-cache: Create BIP Replacement Policy Implementation of a Bimodal Insertion Policy replacement policy. Change-Id: Ife058d0d4310dbcb35858348006189f0b2bf7c37 --- M src/mem/cache/replacement_policies/ReplacementPolicies.py M src/mem/cache/replacement_policies/SConscript A src/mem/cache/replacement_policies/bip_rp.cc A src/mem/cache/replacement_policies/bip_rp.hh 4 files changed, 150 insertions(+), 0 deletions(-) -- To view, visit https://gem5-review.googlesource.com/9003 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: Ife058d0d4310dbcb35858348006189f0b2bf7c37 Gerrit-Change-Number: 9003 Gerrit-PatchSet: 3 Gerrit-Owner: Daniel CarvalhoGerrit-Reviewer: Daniel Carvalho Gerrit-Reviewer: Jason Lowe-Power Gerrit-MessageType: newpatchset ___ gem5-dev mailing list gem5-dev@gem5.org http://m5sim.org/mailman/listinfo/gem5-dev
[gem5-dev] Change in public/gem5[master]: mem-cache: Fix FALRU data block seg fault
Daniel Carvalho has submitted this change and it was merged. ( https://gem5-review.googlesource.com/9302 ) Change subject: mem-cache: Fix FALRU data block seg fault .. mem-cache: Fix FALRU data block seg fault FALRU didn't initialize the blocks' data, causing seg faults. This patch does not make FALRU functional yet. Change-Id: I10cbcf5afc3f8bc357eeb8b7cb46789dec47ba8b Reviewed-on: https://gem5-review.googlesource.com/9302 Reviewed-by: Nikos NikolerisMaintainer: Nikos Nikoleris --- M src/mem/cache/tags/base.cc M src/mem/cache/tags/base.hh M src/mem/cache/tags/base_set_assoc.cc M src/mem/cache/tags/base_set_assoc.hh M src/mem/cache/tags/fa_lru.cc 5 files changed, 10 insertions(+), 5 deletions(-) Approvals: Nikos Nikoleris: Looks good to me, approved; Looks good to me, approved diff --git a/src/mem/cache/tags/base.cc b/src/mem/cache/tags/base.cc index 8b52b74..d2d6e8e 100644 --- a/src/mem/cache/tags/base.cc +++ b/src/mem/cache/tags/base.cc @@ -63,7 +63,8 @@ std::max(p->tag_latency, p->data_latency)), cache(nullptr), warmupBound((p->warmup_percentage/100.0) * (p->size / p->block_size)), - warmedUp(false), numBlocks(p->size / p->block_size) + warmedUp(false), numBlocks(p->size / p->block_size), + dataBlks(new uint8_t[p->size]) // Allocate data storage in one big chunk { } diff --git a/src/mem/cache/tags/base.hh b/src/mem/cache/tags/base.hh index 74fc7e0..3370de2 100644 --- a/src/mem/cache/tags/base.hh +++ b/src/mem/cache/tags/base.hh @@ -94,6 +94,9 @@ /** the number of blocks in the cache */ const unsigned numBlocks; +/** The data blocks, 1 per cache block. */ +std::unique_ptr dataBlks; + // Statistics /** * TODO: It would be good if these stats were acquired after warmup. diff --git a/src/mem/cache/tags/base_set_assoc.cc b/src/mem/cache/tags/base_set_assoc.cc index 2475e6f..0ab806e 100644 --- a/src/mem/cache/tags/base_set_assoc.cc +++ b/src/mem/cache/tags/base_set_assoc.cc @@ -57,7 +57,6 @@ BaseSetAssoc::BaseSetAssoc(const Params *p) :BaseTags(p), assoc(p->assoc), allocAssoc(p->assoc), blks(p->size / p->block_size), - dataBlks(new uint8_t[p->size]), // Allocate data storage in one big chunk numSets(p->size / (p->block_size * p->assoc)), sequentialAccess(p->sequential_access), sets(p->size / (p->block_size * p->assoc)), diff --git a/src/mem/cache/tags/base_set_assoc.hh b/src/mem/cache/tags/base_set_assoc.hh index f7b386a..3bc275b 100644 --- a/src/mem/cache/tags/base_set_assoc.hh +++ b/src/mem/cache/tags/base_set_assoc.hh @@ -76,7 +76,6 @@ /** Typedef the set type used in this tag store. */ typedef CacheSet SetType; - protected: /** The associativity of the cache. */ const unsigned assoc; @@ -85,8 +84,6 @@ /** The cache blocks. */ std::vector blks; -/** The data blocks, 1 per cache block. */ -std::unique_ptr dataBlks; /** The number of sets in the cache. */ const unsigned numSets; diff --git a/src/mem/cache/tags/fa_lru.cc b/src/mem/cache/tags/fa_lru.cc index a38d0bf..1f2909e 100644 --- a/src/mem/cache/tags/fa_lru.cc +++ b/src/mem/cache/tags/fa_lru.cc @@ -80,10 +80,12 @@ head->prev = nullptr; head->next = &(blks[1]); head->inCache = cacheMask; +head->data = [0]; tail->prev = &(blks[numBlocks-2]); tail->next = nullptr; tail->inCache = 0; +tail->data = [(numBlocks-1)*blkSize]; unsigned index = (1 << 17) / blkSize; unsigned j = 0; @@ -100,6 +102,9 @@ blks[i].next = &(blks[i+1]); blks[i].set = 0; blks[i].way = i; + +// Associate a data chunk to the block +blks[i].data = [blkSize*i]; } assert(j == numCaches); assert(index == numBlocks); -- To view, visit https://gem5-review.googlesource.com/9302 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: I10cbcf5afc3f8bc357eeb8b7cb46789dec47ba8b Gerrit-Change-Number: 9302 Gerrit-PatchSet: 5 Gerrit-Owner: Daniel Carvalho Gerrit-Reviewer: Daniel Carvalho Gerrit-Reviewer: Nikos Nikoleris Gerrit-MessageType: merged ___ gem5-dev mailing list gem5-dev@gem5.org http://m5sim.org/mailman/listinfo/gem5-dev
[gem5-dev] Change in public/gem5[master]: mem-cache: Create LFU replacement policy
Daniel Carvalho has submitted this change and it was merged. ( https://gem5-review.googlesource.com/8890 ) Change subject: mem-cache: Create LFU replacement policy .. mem-cache: Create LFU replacement policy Implementation of a Least Frequently Used replacement policy. Change-Id: I772afccd3a7955777e53d59341e922718db44e5c Reviewed-on: https://gem5-review.googlesource.com/8890 Reviewed-by: Nikos NikolerisMaintainer: Nikos Nikoleris --- M src/mem/cache/replacement_policies/ReplacementPolicies.py M src/mem/cache/replacement_policies/SConscript A src/mem/cache/replacement_policies/lfu_rp.cc A src/mem/cache/replacement_policies/lfu_rp.hh 4 files changed, 145 insertions(+), 0 deletions(-) Approvals: Nikos Nikoleris: Looks good to me, approved; Looks good to me, approved diff --git a/src/mem/cache/replacement_policies/ReplacementPolicies.py b/src/mem/cache/replacement_policies/ReplacementPolicies.py index 5f7ecfc..0beb3e6 100644 --- a/src/mem/cache/replacement_policies/ReplacementPolicies.py +++ b/src/mem/cache/replacement_policies/ReplacementPolicies.py @@ -40,6 +40,11 @@ cxx_class = 'FIFORP' cxx_header = "mem/cache/replacement_policies/fifo_rp.hh" +class LFURP(BaseReplacementPolicy): +type = 'LFURP' +cxx_class = 'LFURP' +cxx_header = "mem/cache/replacement_policies/lfu_rp.hh" + class LRURP(BaseReplacementPolicy): type = 'LRURP' cxx_class = 'LRURP' diff --git a/src/mem/cache/replacement_policies/SConscript b/src/mem/cache/replacement_policies/SConscript index 4ac8fe8..26c450a 100644 --- a/src/mem/cache/replacement_policies/SConscript +++ b/src/mem/cache/replacement_policies/SConscript @@ -35,6 +35,7 @@ Source('base.cc') Source('brrip_rp.cc') Source('fifo_rp.cc') +Source('lfu_rp.cc') Source('lru_rp.cc') Source('mru_rp.cc') Source('random_rp.cc') diff --git a/src/mem/cache/replacement_policies/lfu_rp.cc b/src/mem/cache/replacement_policies/lfu_rp.cc new file mode 100644 index 000..90a5ee2 --- /dev/null +++ b/src/mem/cache/replacement_policies/lfu_rp.cc @@ -0,0 +1,69 @@ +/** + * Copyright (c) 2018 Inria + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer; + * redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution; + * neither the name of the copyright holders nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * Authors: Daniel Carvalho + */ + +#include "mem/cache/replacement_policies/lfu_rp.hh" + +#include "debug/CacheRepl.hh" + +LFURP::LFURP(const Params *p) +: BaseReplacementPolicy(p) +{ +} + +CacheBlk* +LFURP::getVictim(const ReplacementCandidates& candidates) +{ +// There must be at least one replacement candidate +assert(candidates.size() > 0); + +// Visit all candidates to find victim +CacheBlk* blk = candidates[0]; +for (const auto& candidate : candidates) { +// Stop iteration if found an invalid block +if (!candidate->isValid()) { +blk = candidate; +break; +// Update victim block if necessary +} else if (candidate->refCount < blk->refCount) { +blk = candidate; +} +} + +DPRINTF(CacheRepl, "set %x, way %x: selecting blk for replacement\n", +blk->set, blk->way); + +return blk; +} + +LFURP* +LFURPParams::create() +{ +return new LFURP(this); +} diff --git a/src/mem/cache/replacement_policies/lfu_rp.hh b/src/mem/cache/replacement_policies/lfu_rp.hh new file mode 100644 index 000..affc849 --- /dev/null +++ b/src/mem/cache/replacement_policies/lfu_rp.hh @@ -0,0 +1,70 @@ +/** + * Copyright (c) 2018
[gem5-dev] Change in public/gem5[master]: mem-cache: Create RRIP Replacement Policy
Daniel Carvalho has submitted this change and it was merged. ( https://gem5-review.googlesource.com/8981 ) Change subject: mem-cache: Create RRIP Replacement Policy .. mem-cache: Create RRIP Replacement Policy Implementation of a Re-Reference Interval Prediction replacement policy. Change-Id: Iba716eb5df2bf2be156e765f889d94f6ad00c91b Reviewed-on: https://gem5-review.googlesource.com/8981 Maintainer: Nikos NikolerisReviewed-by: Nikos Nikoleris Reviewed-by: Jason Lowe-Power --- M src/mem/cache/replacement_policies/ReplacementPolicies.py 1 file changed, 3 insertions(+), 0 deletions(-) Approvals: Jason Lowe-Power: Looks good to me, approved Nikos Nikoleris: Looks good to me, approved; Looks good to me, approved diff --git a/src/mem/cache/replacement_policies/ReplacementPolicies.py b/src/mem/cache/replacement_policies/ReplacementPolicies.py index 9176d2b..5f7ecfc 100644 --- a/src/mem/cache/replacement_policies/ReplacementPolicies.py +++ b/src/mem/cache/replacement_policies/ReplacementPolicies.py @@ -64,3 +64,6 @@ "Prioritize evicting blocks that havent had a hit recently") btp = Param.Percent(3, "Percentage of blocks to be inserted with long RRPV") + +class RRIPRP(BRRIPRP): +btp = 0 -- To view, visit https://gem5-review.googlesource.com/8981 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: Iba716eb5df2bf2be156e765f889d94f6ad00c91b Gerrit-Change-Number: 8981 Gerrit-PatchSet: 12 Gerrit-Owner: Daniel Carvalho Gerrit-Reviewer: Daniel Carvalho Gerrit-Reviewer: Jason Lowe-Power Gerrit-Reviewer: Nikos Nikoleris Gerrit-MessageType: merged ___ gem5-dev mailing list gem5-dev@gem5.org http://m5sim.org/mailman/listinfo/gem5-dev
[gem5-dev] Change in public/gem5[master]: mem-cache: Create BRRIP replacement policy
Daniel Carvalho has submitted this change and it was merged. ( https://gem5-review.googlesource.com/8891 ) Change subject: mem-cache: Create BRRIP replacement policy .. mem-cache: Create BRRIP replacement policy Implementation of a Bimodal Re-Reference Interval Prediction replacement policy. Change-Id: I25d4a59a60ef7ac496c66852e394fd6cbaf50912 Reviewed-on: https://gem5-review.googlesource.com/8891 Reviewed-by: Nikos NikolerisMaintainer: Nikos Nikoleris --- M src/mem/cache/blk.hh M src/mem/cache/replacement_policies/ReplacementPolicies.py M src/mem/cache/replacement_policies/SConscript A src/mem/cache/replacement_policies/brrip_rp.cc A src/mem/cache/replacement_policies/brrip_rp.hh 5 files changed, 261 insertions(+), 0 deletions(-) Approvals: Nikos Nikoleris: Looks good to me, approved; Looks good to me, approved diff --git a/src/mem/cache/blk.hh b/src/mem/cache/blk.hh index a1e4502..65f32ff 100644 --- a/src/mem/cache/blk.hh +++ b/src/mem/cache/blk.hh @@ -129,6 +129,11 @@ */ Tick lastTouchTick; +/** + * Re-Reference Interval Prediction Value. Used with RRIP repl policy. + */ +unsigned rrpv; + protected: /** * Represents that the indicated thread context has a "lock" on diff --git a/src/mem/cache/replacement_policies/ReplacementPolicies.py b/src/mem/cache/replacement_policies/ReplacementPolicies.py index be9f2de..9176d2b 100644 --- a/src/mem/cache/replacement_policies/ReplacementPolicies.py +++ b/src/mem/cache/replacement_policies/ReplacementPolicies.py @@ -54,3 +54,13 @@ type = 'RandomRP' cxx_class = 'RandomRP' cxx_header = "mem/cache/replacement_policies/random_rp.hh" + +class BRRIPRP(BaseReplacementPolicy): +type = 'BRRIPRP' +cxx_class = 'BRRIPRP' +cxx_header = "mem/cache/replacement_policies/brrip_rp.hh" +max_RRPV = Param.Unsigned(3, "Maximum RRPV possible") +hit_priority = Param.Bool(False, +"Prioritize evicting blocks that havent had a hit recently") +btp = Param.Percent(3, +"Percentage of blocks to be inserted with long RRPV") diff --git a/src/mem/cache/replacement_policies/SConscript b/src/mem/cache/replacement_policies/SConscript index 45a7b4f..4ac8fe8 100644 --- a/src/mem/cache/replacement_policies/SConscript +++ b/src/mem/cache/replacement_policies/SConscript @@ -33,6 +33,7 @@ SimObject('ReplacementPolicies.py') Source('base.cc') +Source('brrip_rp.cc') Source('fifo_rp.cc') Source('lru_rp.cc') Source('mru_rp.cc') diff --git a/src/mem/cache/replacement_policies/brrip_rp.cc b/src/mem/cache/replacement_policies/brrip_rp.cc new file mode 100644 index 000..9185638 --- /dev/null +++ b/src/mem/cache/replacement_policies/brrip_rp.cc @@ -0,0 +1,121 @@ +/** + * Copyright (c) 2018 Inria + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer; + * redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution; + * neither the name of the copyright holders nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * Authors: Daniel Carvalho + */ + +#include "mem/cache/replacement_policies/brrip_rp.hh" + +#include "base/random.hh" +#include "debug/CacheRepl.hh" + +BRRIPRP::BRRIPRP(const Params *p) +: BaseReplacementPolicy(p), + maxRRPV(p->max_RRPV), hitPriority(p->hit_priority), btp(p->btp) +{ +if (maxRRPV == 0){ +fatal("max_RRPV should be greater than zero.\n"); +} +} + +void +BRRIPRP::touch(CacheBlk *blk) +{ +BaseReplacementPolicy::touch(blk); + +// Update RRPV if not 0 yet +// Every hit in HP mode makes the block the last to be evicted, while +
[gem5-dev] Change in public/gem5[master]: mem-cache: Create BRRIP replacement policy
Hello Jason Lowe-Power, Nikos Nikoleris, I'd like you to reexamine a change. Please visit https://gem5-review.googlesource.com/8891 to look at the new patch set (#10). Change subject: mem-cache: Create BRRIP replacement policy .. mem-cache: Create BRRIP replacement policy Implementation of a Bimodal Re-Reference Interval Prediction replacement policy. Change-Id: I25d4a59a60ef7ac496c66852e394fd6cbaf50912 --- M src/mem/cache/blk.hh M src/mem/cache/replacement_policies/ReplacementPolicies.py M src/mem/cache/replacement_policies/SConscript A src/mem/cache/replacement_policies/brrip_rp.cc A src/mem/cache/replacement_policies/brrip_rp.hh 5 files changed, 261 insertions(+), 0 deletions(-) -- To view, visit https://gem5-review.googlesource.com/8891 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: I25d4a59a60ef7ac496c66852e394fd6cbaf50912 Gerrit-Change-Number: 8891 Gerrit-PatchSet: 10 Gerrit-Owner: Daniel CarvalhoGerrit-Reviewer: Daniel Carvalho Gerrit-Reviewer: Jason Lowe-Power Gerrit-Reviewer: Nikos Nikoleris Gerrit-MessageType: newpatchset ___ gem5-dev mailing list gem5-dev@gem5.org http://m5sim.org/mailman/listinfo/gem5-dev
Re: [gem5-dev] Multicore ARM v8 KVM based simulation
Now out of the blue I'm hitting errors having to do with setting GIC "attributes" of some sort with code that was working a few hours earlier. Any idea what it's upset about? gem5 Simulator System. http://gem5.org gem5 is copyrighted software; use the --copyright option for details. gem5 compiled Mar 30 2018 03:08:57 gem5 started Mar 30 2018 03:13:05 gem5 executing on localhost, pid 9033 command line: build/ARM/gem5.debug gem5/google/configs/kvm.py INFO:root:Disk 0: /home/gabeblack/dist/m5/system/disks/disk.img INFO:root:Add GPU: NoMali GPU model... INFO:root:Kernel: /home/gabeblack/dist/m5/system/binaries/vmlinux INFO:root:Device tree: /home/gabeblack/dist/m5/system/binaries/armv8_1440x2560_google_v1_2cpu.dtb Global frequency set at 1 ticks per second warn: system.pci_ide adopting orphan SimObject param 'disks' info: kernel located at: /home/gabeblack/dist/m5/system/binaries/vmlinux warn: Highest ARM exception-level set to AArch32 but bootloader is for AArch64. Assuming you wanted these to match. Listening for system connection on port 5900 Listening for system connection on port 3456 Listening for uart1 connection on port 3457 0: system.remote_gdb: listening for remote gdb on port 7000 0: system.remote_gdb: listening for remote gdb on port 7001 warn: CoherentXBar system.membus has no snooping ports attached! info: Using bootloader at address 0x10 info: Using kernel entry physical address at 0x8008 info: Loading DTB file: /home/gabeblack/dist/m5/system/binaries/armv8_1440x2560_google_v1_2cpu.dtb at address 0x8800 info: KVM: Coalesced MMIO disabled by config. info: KVM: Coalesced MMIO disabled by config. warn: Existing EnergyCtrl, but no enabled DVFSHandler found. panic: Failed to set attribute (group: 2, attr: 9, errno: 6) Memory Usage: 3516676 KBytes Program aborted at tick 0 --- BEGIN LIBC BACKTRACE --- build/ARM/gem5.debug(_Z15print_backtracev+0x2c)[0x1a3e750] build/ARM/gem5.debug(_Z12abortHandleri+0x7c)[0x1a47070] [0x7988061510] /lib/aarch64-linux-gnu/libc.so.6(gsignal+0x38)[0x798771b528] --- END LIBC BACKTRACE --- Aborted (core dumped) On Wed, Mar 28, 2018 at 5:14 PM, Gabe Blackwrote: > Ok, I think I figured it out, and it all has to do with the simulation > quantum. If the quantum is too big, the kernel might poke hardware and > expect to get an interrupt within a certain period of time. It could be > that the CPU gets to the end of its timeout before the simulated hardware > has had a chance to trigger an interrupt, even though the interrupt would > happen first if the event queues were held in tighter sync. If I decrease > the size of the quantum from 500ms (per your suggestion) to 1ms, then I see > the errors from the keyboard/mouse drivers and the ATA driver go away, at > least in the one CPU/multiple event queue configuration. > > I'm going to do some more testing to make sure there isn't some other > problem that pops up, and also to characterize the performance impact which > I'm hopeful won't be too bad. > > Also, I was thinking it would be nice if KVM CPUs could set up their event > queues in some more automatic, less error prone way. Before I knew that > they needed their own event queue (which I think is just institutional > knowledge that isn't documented/warned about/etc.?), I had no idea what was > going wrong when just dropping in some KVM CPUs in place of regular CPUs. I > don't have a fully fleshed out plan for how to do that, but it doesn't > *seem* like something that should be that hard to do. > > Gabe > > On Mon, Mar 26, 2018 at 7:06 PM, Gabe Black wrote: > >> I looked into this a little further, and I see the same problem happen >> with one CPU but with the CPU and the devices in different event queues. I >> haven't figured out exactly where things go wrong, but it looks like a >> write DMA is set up but doesn't happen for some reason. I'm not sure if the >> DMA starts but then gets stuck, or if it never starts at all. It could also >> be that the DMA happens, but the completion event (which is what doesn't >> seem to happen) is mishandled because of the additional event queue. >> >> I turned on the DMA debug flag, but that produced so much debug output >> that my tools are crashing. I'll have to see what I can do to narrow things >> down a bit. >> >> Gabe >> >> On Thu, Mar 22, 2018 at 11:28 AM, Gabe Black >> wrote: >> >>> Ok, thanks. We're deciding internally what approach to use to tackle >>> this. >>> >>> Gabe >>> >>> On Wed, Mar 21, 2018 at 3:01 AM, Andreas Sandberg < >>> andreas.sandb...@arm.com> wrote: >>> Hi Gabe, There are issues with the IDE model that prevent it from working with in-kernel GIC emulation. I believe the model doesn't clear interrupts correctly, which confuses the host kernel. I tried to debug this at some point, but wasn't able to do much immaediate progress and decided it wasn't worth the effort. The VirtIO block
[gem5-dev] Change in public/gem5[master]: mem: Remove unused 'using namespace'
Daniel Carvalho has uploaded this change for review. ( https://gem5-review.googlesource.com/9601 Change subject: mem: Remove unused 'using namespace' .. mem: Remove unused 'using namespace' Removal of unused/barely used 'using namespace' from C++ files. Change-Id: I66dc548c04506db2e41180b9ea7ab5abd7d5375a --- M src/mem/cache/mshr.cc M src/mem/cache/mshr_queue.cc M src/mem/cache/tags/base.cc M src/mem/cache/tags/base_set_assoc.cc M src/mem/cache/tags/fa_lru.cc M src/mem/cache/write_queue.cc M src/mem/cache/write_queue_entry.cc M src/mem/dram_ctrl.cc M src/mem/drampower.cc M src/mem/fs_translating_port_proxy.cc M src/mem/mem_checker_monitor.cc M src/mem/packet_queue.cc M src/mem/page_table.cc M src/mem/simple_mem.cc 14 files changed, 6 insertions(+), 35 deletions(-) diff --git a/src/mem/cache/mshr.cc b/src/mem/cache/mshr.cc index 493b7f0..cc26b56 100644 --- a/src/mem/cache/mshr.cc +++ b/src/mem/cache/mshr.cc @@ -60,8 +60,6 @@ #include "mem/cache/cache.hh" #include "sim/core.hh" -using namespace std; - MSHR::MSHR() : downstreamPending(false), pendingModified(false), postInvalidate(false), postDowngrade(false), @@ -617,7 +615,7 @@ std::string MSHR::print() const { -ostringstream str; +std::ostringstream str; print(str); return str.str(); } diff --git a/src/mem/cache/mshr_queue.cc b/src/mem/cache/mshr_queue.cc index f4992e1..29358d7 100644 --- a/src/mem/cache/mshr_queue.cc +++ b/src/mem/cache/mshr_queue.cc @@ -47,8 +47,6 @@ #include "mem/cache/mshr_queue.hh" -using namespace std; - MSHRQueue::MSHRQueue(const std::string &_label, int num_entries, int reserve, int demand_reserve) : Queue(_label, num_entries, reserve), diff --git a/src/mem/cache/tags/base.cc b/src/mem/cache/tags/base.cc index 8b52b74..b647787 100644 --- a/src/mem/cache/tags/base.cc +++ b/src/mem/cache/tags/base.cc @@ -52,8 +52,6 @@ #include "mem/cache/base.hh" #include "sim/sim_exit.hh" -using namespace std; - BaseTags::BaseTags(const Params *p) : ClockedObject(p), blkSize(p->block_size), blkMask(blkSize - 1), size(p->size), diff --git a/src/mem/cache/tags/base_set_assoc.cc b/src/mem/cache/tags/base_set_assoc.cc index 2475e6f..01836b7 100644 --- a/src/mem/cache/tags/base_set_assoc.cc +++ b/src/mem/cache/tags/base_set_assoc.cc @@ -52,8 +52,6 @@ #include "base/intmath.hh" #include "sim/core.hh" -using namespace std; - BaseSetAssoc::BaseSetAssoc(const Params *p) :BaseTags(p), assoc(p->assoc), allocAssoc(p->assoc), blks(p->size / p->block_size), diff --git a/src/mem/cache/tags/fa_lru.cc b/src/mem/cache/tags/fa_lru.cc index a38d0bf..3fa14da 100644 --- a/src/mem/cache/tags/fa_lru.cc +++ b/src/mem/cache/tags/fa_lru.cc @@ -53,8 +53,6 @@ #include "base/intmath.hh" #include "base/logging.hh" -using namespace std; - FALRU::FALRU(const Params *p) : BaseTags(p), cacheBoundaries(nullptr) { @@ -117,7 +115,6 @@ void FALRU::regStats() { -using namespace Stats; BaseTags::regStats(); hits .init(numCaches+1) @@ -135,7 +132,7 @@ ; for (unsigned i = 0; i <= numCaches; ++i) { -stringstream size_str; +std::stringstream size_str; if (i < 3){ size_str << (1<<(i+7)) <<"K"; } else { diff --git a/src/mem/cache/write_queue.cc b/src/mem/cache/write_queue.cc index 7a876b3..13e0fc5 100644 --- a/src/mem/cache/write_queue.cc +++ b/src/mem/cache/write_queue.cc @@ -48,8 +48,6 @@ #include "mem/cache/write_queue.hh" -using namespace std; - WriteQueue::WriteQueue(const std::string &_label, int num_entries, int reserve) : Queue(_label, num_entries, reserve) diff --git a/src/mem/cache/write_queue_entry.cc b/src/mem/cache/write_queue_entry.cc index 663c231..b8275e1 100644 --- a/src/mem/cache/write_queue_entry.cc +++ b/src/mem/cache/write_queue_entry.cc @@ -61,8 +61,6 @@ #include "mem/cache/cache.hh" #include "sim/core.hh" -using namespace std; - inline void WriteQueueEntry::TargetList::add(PacketPtr pkt, Tick readyTime, Counter order) @@ -163,7 +161,7 @@ std::string WriteQueueEntry::print() const { -ostringstream str; +std::ostringstream str; print(str); return str.str(); } diff --git a/src/mem/dram_ctrl.cc b/src/mem/dram_ctrl.cc index 62de18d..fed519d 100644 --- a/src/mem/dram_ctrl.cc +++ b/src/mem/dram_ctrl.cc @@ -2302,8 +2302,6 @@ void DRAMCtrl::Rank::regStats() { -using namespace Stats; - pwrStateTime .init(6) .name(name() + ".memoryStateTime") @@ -2367,8 +2365,8 @@ .name(name() + ".totalIdleTime") .desc("Total Idle time Per DRAM Rank"); -registerDumpCallback(new RankDumpCallback(this)); -registerResetCallback(new RankResetCallback(this)); +Stats::registerDumpCallback(new RankDumpCallback(this)); +Stats::registerResetCallback(new
[gem5-dev] Cron <m5test@zizzer> /z/m5/regression/do-regression quick
* build/RISCV/tests/opt/quick/se/02.insttest/riscv/linux-rv64c/minor-timing: 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-rv64c/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-rv64c/simple-timing-ruby: FAILED!--- quick/se/02.insttest/riscv/linux-rv64d/minor-timing --- * build/HSAIL_X86/tests/opt/quick/se/04.gpu/x86/linux/gpu-ruby-GPU_RfO: FAILED! * 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/se/01.hello-2T-smt/alpha/linux/o3-timing-mt: CHANGED! * build/ALPHA/tests/opt/quick/se/03.learning-gem5/alpha/linux/learning-gem5-p1-simple: CHANGED! * build/ALPHA/tests/opt/quick/se/03.learning-gem5/alpha/linux/learning-gem5-p1-two-level: CHANGED! * build/ALPHA/tests/opt/quick/fs/10.linux-boot/alpha/linux/tsunami-simple-atomic: CHANGED! *** stat_diff: FAILURE: Statistics mismatch* 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/ALPHA/tests/opt/quick/fs/10.linux-boot/alpha/linux/tsunami-simple-timing-dual: CHANGED! * build/MIPS/tests/opt/quick/se/00.hello/mips/linux/o3-timing: CHANGED! * build/MIPS/tests/opt/quick/se/00.hello/mips/linux/simple-timing: CHANGED! * build/MIPS/tests/opt/quick/se/00.hello/mips/linux/simple-timing-ruby: CHANGED!*** diff[simerr]: SKIPPED * build/MIPS/tests/opt/quick/se/03.learning-gem5/mips/linux/learning-gem5-p1-simple: CHANGED! * build/MIPS/tests/opt/quick/se/03.learning-gem5/mips/linux/learning-gem5-p1-two-level: CHANGED! * build/NULL_MOESI_hammer/tests/opt/quick/se/60.rubytest/null/none/rubytest-ruby-MOESI_hammer: CHANGED! * build/NULL_MESI_Two_Level/tests/opt/quick/se/60.rubytest/null/none/rubytest-ruby-MESI_Two_Level: CHANGED! * build/NULL_MOESI_CMP_directory/tests/opt/quick/se/60.rubytest/null/none/rubytest-ruby-MOESI_CMP_directory: CHANGED! * build/NULL_MOESI_CMP_token/tests/opt/quick/se/60.rubytest/null/none/rubytest-ruby-MOESI_CMP_token: CHANGED! * build/POWER/tests/opt/quick/se/00.hello/power/linux/o3-timing: CHANGED! * build/SPARC/tests/opt/quick/se/00.hello/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/o3-timing: CHANGED! * build/SPARC/tests/opt/quick/se/40.m5threads-test-atomic/sparc/linux/o3-timing-mp: CHANGED! * build/SPARC/tests/opt/quick/se/40.m5threads-test-atomic/sparc/linux/simple-atomic-mp: CHANGED! * build/SPARC/tests/opt/quick/se/40.m5threads-test-atomic/sparc/linux/simple-timing-mp: 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-two-level: CHANGED! * build/SPARC/tests/opt/quick/se/50.vortex/sparc/linux/simple-timing: CHANGED! * build/SPARC/tests/opt/quick/se/70.twolf/sparc/linux/simple-timing: CHANGED! * build/X86/tests/opt/quick/se/00.hello/x86/linux/simple-timing: CHANGED! * build/X86/tests/opt/quick/se/00.hello/x86/linux/simple-atomic: CHANGED! * build/X86/tests/opt/quick/se/00.hello/x86/linux/o3-timing: CHANGED! * build/X86/tests/opt/quick/se/00.hello/x86/linux/simple-timing-ruby: 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/X86/tests/opt/quick/se/10.mcf/x86/linux/simple-atomic: CHANGED! * build/X86/tests/opt/quick/se/70.twolf/x86/linux/simple-atomic: CHANGED! * build/X86/tests/opt/quick/se/70.twolf/x86/linux/simple-timing: CHANGED! * build/ARM/tests/opt/quick/se/03.learning-gem5/arm/linux/learning-gem5-p1-simple: CHANGED! * build/ARM/tests/opt/quick/se/00.hello/arm/linux/simple-timing: CHANGED! * build/ARM/tests/opt/quick/se/00.hello/arm/linux/simple-atomic: CHANGED! * build/ARM/tests/opt/quick/se/00.hello/arm/linux/minor-timing: CHANGED! *** diff[simout]: SKIPPED* build/ARM/tests/opt/quick/se/00.hello/arm/linux/o3-timing-checker: CHANGED! * build/ARM/tests/opt/quick/se/00.hello/arm/linux/simple-atomic-dummychecker: CHANGED! * build/ARM/tests/opt/quick/se/00.hello/arm/linux/o3-timing: CHANGED! * build/ARM/tests/opt/quick/se/03.learning-gem5/arm/linux/learning-gem5-p1-two-level: CHANGED! *