summaryrefslogtreecommitdiff
path: root/src/mem/cache/tags/base_set_assoc.cc
diff options
context:
space:
mode:
authorDaniel R. Carvalho <odanrc@yahoo.com.br>2018-02-26 15:22:33 +0100
committerDaniel Carvalho <odanrc@yahoo.com.br>2018-03-01 08:14:33 +0000
commit3c076e4d69b38be9e4ce7ca9cfb7145ae6f27393 (patch)
tree5e0ceaa3782b22db7fa01e521955be3b01f915ad /src/mem/cache/tags/base_set_assoc.cc
parentf4d83eaf52926aa379292a9f75ba6b36eb04c52d (diff)
downloadgem5-3c076e4d69b38be9e4ce7ca9cfb7145ae6f27393.tar.xz
mem-cache: Vectorize C arrays in BaseSetAssoc.
Transform BaseSetAssoc's arrays into C++ vectors to avoid unnecessary resource management. Change-Id: I656f42f29e5f9589eba491b410ca1df5a64f2f34 Reviewed-on: https://gem5-review.googlesource.com/8621 Reviewed-by: Nikos Nikoleris <nikos.nikoleris@arm.com> Reviewed-by: Jason Lowe-Power <jason@lowepower.com> Maintainer: Jason Lowe-Power <jason@lowepower.com>
Diffstat (limited to 'src/mem/cache/tags/base_set_assoc.cc')
-rw-r--r--src/mem/cache/tags/base_set_assoc.cc18
1 files changed, 4 insertions, 14 deletions
diff --git a/src/mem/cache/tags/base_set_assoc.cc b/src/mem/cache/tags/base_set_assoc.cc
index c39822929..728f5a5f9 100644
--- a/src/mem/cache/tags/base_set_assoc.cc
+++ b/src/mem/cache/tags/base_set_assoc.cc
@@ -56,8 +56,11 @@ using namespace std;
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)
+ sequentialAccess(p->sequential_access),
+ sets(p->size / (p->block_size * p->assoc))
{
// Check parameters
if (blkSize < 4 || !isPowerOf2(blkSize)) {
@@ -74,12 +77,6 @@ BaseSetAssoc::BaseSetAssoc(const Params *p)
setMask = numSets - 1;
tagShift = setShift + floorLog2(numSets);
- sets = new SetType[numSets];
- blks = new BlkType[numSets * assoc];
- // allocate data storage in one big chunk
- numBlocks = numSets * assoc;
- dataBlks = new uint8_t[numBlocks * blkSize];
-
unsigned blkIndex = 0; // index into blks array
for (unsigned i = 0; i < numSets; ++i) {
sets[i].assoc = assoc;
@@ -110,13 +107,6 @@ BaseSetAssoc::BaseSetAssoc(const Params *p)
}
}
-BaseSetAssoc::~BaseSetAssoc()
-{
- delete [] dataBlks;
- delete [] blks;
- delete [] sets;
-}
-
CacheBlk*
BaseSetAssoc::findBlock(Addr addr, bool is_secure) const
{