diff --git a/src/mem/cache/tags/compressed_tags.cc b/src/mem/cache/tags/compressed_tags.cc index f71dedacd7..33d822a55c 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 f738e02226..c1c5f6aaf6 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 049f49b586..ba32450275 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 d81cbc313f..9a1de45cf1 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 d98c14e19c..64d73bdf07 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__