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