generous hit detection on PutBlocks
This commit is contained in:
parent
19059bf0eb
commit
fb8071c12d
@ -609,10 +609,10 @@ class L2AcquireTracker(trackerId: Int, bankId: Int) extends L2XactTracker {
|
|||||||
val present_puts = Reg(init=Bits(0, width = innerDataBeats))
|
val present_puts = Reg(init=Bits(0, width = innerDataBeats))
|
||||||
present_puts := (present_puts | addPendingBitWhenHasData(io.inner.acquire))
|
present_puts := (present_puts | addPendingBitWhenHasData(io.inner.acquire))
|
||||||
|
|
||||||
val is_hit = xact_tag_match &&
|
val is_hit = (if(isLastLevelCache)
|
||||||
(xact_meta.coh.outer.isHit(xact.op_code()) ||
|
(xact.isBuiltInType(Acquire.putBlockType) ||
|
||||||
(Bool(isLastLevelCache) && // LLC has all the permissions
|
xact_meta.coh.outer.isValid())
|
||||||
xact_meta.coh.outer.isValid()))
|
else (xact_tag_match && xact_meta.coh.outer.isHit(xact.op_code())))
|
||||||
val do_allocate = xact.allocate()
|
val do_allocate = xact.allocate()
|
||||||
val needs_writeback = !xact_tag_match && do_allocate &&
|
val needs_writeback = !xact_tag_match && do_allocate &&
|
||||||
(xact_meta.coh.outer.requiresVoluntaryWriteback() ||
|
(xact_meta.coh.outer.requiresVoluntaryWriteback() ||
|
||||||
@ -857,10 +857,10 @@ class L2AcquireTracker(trackerId: Int, bankId: Int) extends L2XactTracker {
|
|||||||
pending_coh := io.meta.resp.bits.meta.coh
|
pending_coh := io.meta.resp.bits.meta.coh
|
||||||
val _coh = io.meta.resp.bits.meta.coh
|
val _coh = io.meta.resp.bits.meta.coh
|
||||||
val _tag_match = io.meta.resp.bits.tag_match
|
val _tag_match = io.meta.resp.bits.tag_match
|
||||||
val _is_hit = _tag_match &&
|
val _is_hit = (if(isLastLevelCache)
|
||||||
(_coh.outer.isHit(xact.op_code()) ||
|
(xact.isBuiltInType(Acquire.putBlockType) ||
|
||||||
(Bool(isLastLevelCache) && // LLC has all the permissions
|
_coh.outer.isValid())
|
||||||
_coh.outer.isValid()))
|
else (_tag_match && _coh.outer.isHit(xact.op_code())))
|
||||||
|
|
||||||
val _needs_writeback = !_tag_match && do_allocate &&
|
val _needs_writeback = !_tag_match && do_allocate &&
|
||||||
(_coh.outer.requiresVoluntaryWriteback() ||
|
(_coh.outer.requiresVoluntaryWriteback() ||
|
||||||
|
Loading…
Reference in New Issue
Block a user