Open SoCScholar opened 8 months ago
Hi,
It is kinda complicated, as the writeback decision of the previous line doesn't occure in a single point :
doesn't occur in a single point
I guess we might need to write different if else statement
add((masterHit && l2c.events.acquire.miss).setCompositeName(l2c.events.acquire.miss, s"nax_$i"), i * 0x80 + 0x40)
I wonder Why + 0x40 for data cache miss?
if (withL2) {
val l2c = l2.cache.logic.cache
l2c.rework{
//For each core, generate a L2 d$ miss probe
val masterSpec = l2c.p.unp.m.masters.find(_.name == p).get
val masterHit = masterSpec.sourceHit(l2c.ctrl.processStage(l2c.CTRL_CMD).source)
add((masterHit && l2c.events.acquire.miss).setCompositeName(l2c.events.acquire.miss, s"nax_$i"), i * 0x80 + 0x40)
//This block will estimate the WB {
{
add((masterHit && l2c.events.acquire.miss).setCompositeName(l2c.events.acquire.miss, s"nax_$i"), i * 0x80 + 4*0x14) // 4 is number of way and 0x014 is offset use in L1 cache.writeback.push.fire ( WB)
when(preCtrl.IS_EVICT){
askWriteBackend := True
toWriteBackend.evict := True
toWriteBackend.toDownA := True
toWriteBackend.size := log2Up(blockSize)
}
}
}
}
}
I wonder Why + 0x40 for data cache miss?
Why not, to make some space, could be more, could be less
Why not, to make some space, could be more, could be less
Is it for the L2 cache? As L2 is an inclusive cache, which has a copy of L1 data
That to leave some space for hart specific non l2 probes, ex : add(p.logic.cache.refill.push.fire, i 0x80 + 0x010) add(p.logic.cache.writeback.push.fire, i 0x80 + 0x014)
Hi
As 1 miss => 1 refill (for the current config), i am wondering how to measure L2 cache Write Back(WB) of specific cpu core?
i am wondering how to update here ?