diff options
author | Daniel R. Carvalho <odanrc@yahoo.com.br> | 2018-02-26 15:22:33 +0100 |
---|---|---|
committer | Daniel Carvalho <odanrc@yahoo.com.br> | 2018-03-01 08:14:33 +0000 |
commit | 3c076e4d69b38be9e4ce7ca9cfb7145ae6f27393 (patch) | |
tree | 5e0ceaa3782b22db7fa01e521955be3b01f915ad /src/mem/cache/tags/base_set_assoc.cc | |
parent | f4d83eaf52926aa379292a9f75ba6b36eb04c52d (diff) | |
download | gem5-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.cc | 18 |
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 { |