From 97a766100b3731a843158099ba40c4cad887da7a Mon Sep 17 00:00:00 2001 From: "Daniel R. Carvalho" Date: Mon, 3 Jun 2019 15:37:58 +0200 Subject: [PATCH] mem-cache: Override print function of sector and super blocks Pass management of printing sector and super block's contents to them. Change-Id: Ided8d404450a0fa39127ac7d2d6578d95691f509 Signed-off-by: Daniel R. Carvalho Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/36582 Reviewed-by: Nikos Nikoleris Maintainer: Nikos Nikoleris Tested-by: kokoro --- src/mem/cache/tags/compressed_tags.cc | 8 ++------ src/mem/cache/tags/sector_blk.cc | 13 +++++++++++++ src/mem/cache/tags/sector_blk.hh | 7 +++++++ src/mem/cache/tags/super_blk.cc | 6 ++++++ src/mem/cache/tags/super_blk.hh | 2 ++ 5 files changed, 30 insertions(+), 6 deletions(-) diff --git a/src/mem/cache/tags/compressed_tags.cc b/src/mem/cache/tags/compressed_tags.cc index f71dedacd..33d822a55 100644 --- a/src/mem/cache/tags/compressed_tags.cc +++ b/src/mem/cache/tags/compressed_tags.cc @@ -150,12 +150,8 @@ CompressedTags::findVictim(Addr addr, const bool is_secure, assert(!victim->isValid()); // Print all co-allocated blocks - DPRINTF(CacheComp, "Co-Allocation: offset %d with blocks\n", offset); - for (const auto& blk : victim_superblock->blks){ - if (blk->isValid()) { - DPRINTFR(CacheComp, "\t[%s]\n", blk->print()); - } - } + DPRINTF(CacheComp, "Co-Allocation: offset %d of %s\n", offset, + victim_superblock->print()); } // Update number of sub-blocks evicted due to a replacement diff --git a/src/mem/cache/tags/sector_blk.cc b/src/mem/cache/tags/sector_blk.cc index f738e0222..c1c5f6aaf 100644 --- a/src/mem/cache/tags/sector_blk.cc +++ b/src/mem/cache/tags/sector_blk.cc @@ -150,3 +150,16 @@ SectorBlk::setPosition(const uint32_t set, const uint32_t way) blk->setPosition(set, way); } } + +std::string +SectorBlk::print() const +{ + std::string sub_blk_print; + for (const auto& sub_blk : blks) { + if (sub_blk->isValid()) { + sub_blk_print += "\t[" + sub_blk->print() + "]\n"; + } + } + return csprintf("%s valid sub-blks (%d):\n%s", + TaggedEntry::print(), getNumValid(), sub_blk_print); +} diff --git a/src/mem/cache/tags/sector_blk.hh b/src/mem/cache/tags/sector_blk.hh index 049f49b58..ba3245027 100644 --- a/src/mem/cache/tags/sector_blk.hh +++ b/src/mem/cache/tags/sector_blk.hh @@ -177,6 +177,13 @@ class SectorBlk : public TaggedEntry * @param way The way of this entry and sub-entries. */ void setPosition(const uint32_t set, const uint32_t way) override; + + /** + * Print relevant information for this sector block and its sub-blocks. + * + * @return A string with the contents of the sector block. + */ + std::string print() const override; }; #endif //__MEM_CACHE_TAGS_SECTOR_BLK_HH__ diff --git a/src/mem/cache/tags/super_blk.cc b/src/mem/cache/tags/super_blk.cc index d81cbc313..9a1de45cf 100644 --- a/src/mem/cache/tags/super_blk.cc +++ b/src/mem/cache/tags/super_blk.cc @@ -236,3 +236,9 @@ SuperBlk::setCompressionFactor(const uint8_t compression_factor) compressionFactor = compression_factor; } } + +std::string +SuperBlk::print() const +{ + return csprintf("CF: %d %s", getCompressionFactor(), SectorBlk::print()); +} diff --git a/src/mem/cache/tags/super_blk.hh b/src/mem/cache/tags/super_blk.hh index d98c14e19..64d73bdf0 100644 --- a/src/mem/cache/tags/super_blk.hh +++ b/src/mem/cache/tags/super_blk.hh @@ -236,6 +236,8 @@ class SuperBlk : public SectorBlk void setCompressionFactor(const uint8_t compression_factor); void invalidate() override; + + std::string print() const override; }; #endif //__MEM_CACHE_TAGS_SUPER_BLK_HH__ -- 2.30.2