fix 5
This commit is contained in:
parent
219211ddee
commit
c03fafcf95
|
|
@ -46,7 +46,7 @@ int CacheConfig::log2(uint32_t x)
|
||||||
|
|
||||||
uint32_t CacheConfig::getMaxIndex()
|
uint32_t CacheConfig::getMaxIndex()
|
||||||
{
|
{
|
||||||
return (1 << i);
|
return (1 << index);
|
||||||
}
|
}
|
||||||
|
|
||||||
uint32_t CacheConfig::getVictimAs()
|
uint32_t CacheConfig::getVictimAs()
|
||||||
|
|
@ -61,50 +61,50 @@ uint32_t CacheConfig::getAs()
|
||||||
|
|
||||||
void CacheConfig::setupTIO()
|
void CacheConfig::setupTIO()
|
||||||
{
|
{
|
||||||
// setup t, i, b
|
// setup tag, index, b
|
||||||
o = log2(blockSize);
|
o = log2(blockSize);
|
||||||
i = log2(s / (blockSize * assoc));
|
index = log2(s / (blockSize * assoc));
|
||||||
t = 32 - o - i;
|
tag = 32 - o - index;
|
||||||
|
|
||||||
om = (1 << o) - 1;
|
offsetMask = (1 << o) - 1;
|
||||||
im = ((1 << i) - 1) << o;
|
indexMask = ((1 << index) - 1) << o;
|
||||||
|
|
||||||
if (!victimSize)
|
if (!victimSize)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
vo = log2(blockSize);
|
victimOffset = log2(blockSize);
|
||||||
vi = 0;
|
victimIndex = 0;
|
||||||
vt = 32 - vo - vi;
|
victimTag = 32 - victimOffset - victimIndex;
|
||||||
victimAsso = victimSize / blockSize;
|
victimAsso = victimSize / blockSize;
|
||||||
|
|
||||||
vom = (1 << vo) - 1;
|
vom = (1 << victimOffset) - 1;
|
||||||
// vim = ((1<<vi)-1) << vo;
|
// vim = ((1<<victimIndex)-1) << victimOffset;
|
||||||
}
|
}
|
||||||
|
|
||||||
CacheIndex CacheConfig::parserVictimAddr(uint32_t addr)
|
CacheIndex CacheConfig::parserVictimAddr(uint32_t addr)
|
||||||
{
|
{
|
||||||
uint32_t offset = addr & vom;
|
uint32_t offset = addr & vom;
|
||||||
// uint32_t index = (addr & vim) >> vo;
|
// uint32_t index = (addr & vim) >> victimOffset;
|
||||||
uint32_t tag = addr >> vo;
|
uint32_t tag = addr >> victimOffset;
|
||||||
return {tag, 0, offset, addr};
|
return {tag, 0, offset, addr};
|
||||||
}
|
}
|
||||||
|
|
||||||
CacheIndex CacheConfig::AddrParser(uint32_t addr)
|
CacheIndex CacheConfig::AddrParser(uint32_t addr)
|
||||||
{
|
{
|
||||||
uint32_t offset = addr & om;
|
uint32_t offset = addr & offsetMask;
|
||||||
uint32_t index = (addr & im) >> o;
|
uint32_t index = (addr & indexMask) >> o;
|
||||||
uint32_t tag = addr >> (o + i);
|
uint32_t tag = addr >> (o + this->index);
|
||||||
return {tag, index, offset, addr};
|
return {tag, index, offset, addr};
|
||||||
}
|
}
|
||||||
|
|
||||||
uint32_t CacheConfig::UnParser(uint32_t tag, CacheIndex tio)
|
uint32_t CacheConfig::UnParser(uint32_t tag, CacheIndex tio)
|
||||||
{
|
{
|
||||||
return (tag << (o + i)) | (tio.index << o) | (tio.offset);
|
return (tag << (o + index)) | (tio.index << o) | (tio.offset);
|
||||||
}
|
}
|
||||||
|
|
||||||
uint32_t CacheConfig::UnParserVic(uint32_t tag, CacheIndex tio)
|
uint32_t CacheConfig::UnParserVic(uint32_t tag, CacheIndex tio)
|
||||||
{
|
{
|
||||||
return (tag << (vo)) | (tio.offset);
|
return (tag << (victimOffset)) | (tio.offset);
|
||||||
}
|
}
|
||||||
|
|
||||||
Cache::Cache(CacheConfig* config, Cache* nextCache)
|
Cache::Cache(CacheConfig* config, Cache* nextCache)
|
||||||
|
|
|
||||||
|
|
@ -18,25 +18,25 @@ class CacheConfig
|
||||||
public:
|
public:
|
||||||
string level;
|
string level;
|
||||||
|
|
||||||
int blockSize; // Block Size
|
int blockSize;
|
||||||
int s; // Size
|
int s; // Size
|
||||||
int assoc; // Assoc
|
int assoc; // Assoc
|
||||||
int replicementPolicy; // Replicement Policy
|
int replicementPolicy;
|
||||||
int writePolicy; // Write Policy: 1 -> WTNA, 0 ->
|
int writePolicy;
|
||||||
|
|
||||||
int victimSize; // Victim Size
|
int victimSize;
|
||||||
int victimAsso; // Victim Asso
|
int victimAsso;
|
||||||
|
|
||||||
int t; // tag bit
|
int tag; // tag bit
|
||||||
int i; // index
|
int index; // index
|
||||||
int o; // offset
|
int o; // offset
|
||||||
|
|
||||||
uint32_t om; // offset mask
|
uint32_t offsetMask;
|
||||||
uint32_t im; // index mask
|
uint32_t indexMask;
|
||||||
|
|
||||||
int vt; // victim tag bit
|
int victimTag;
|
||||||
int vi; // victim index
|
int victimIndex;
|
||||||
int vo; // victim offset
|
int victimOffset;
|
||||||
|
|
||||||
uint32_t vom; // victim offset mask
|
uint32_t vom; // victim offset mask
|
||||||
uint32_t vim; // victim index mask
|
uint32_t vim; // victim index mask
|
||||||
|
|
@ -88,7 +88,6 @@ public:
|
||||||
int writeBack = 0;
|
int writeBack = 0;
|
||||||
int exchange = 0;
|
int exchange = 0;
|
||||||
|
|
||||||
|
|
||||||
int getCommunication();
|
int getCommunication();
|
||||||
double getMR();
|
double getMR();
|
||||||
double getMR2();
|
double getMR2();
|
||||||
|
|
|
||||||
Binary file not shown.
Binary file not shown.
Loading…
Reference in New Issue