From 7b4e9dd137cd907760c82ce984de7d37a67ec939 Mon Sep 17 00:00:00 2001 From: Henry Cook Date: Tue, 6 Jan 2015 20:30:52 -0800 Subject: [PATCH] Block L2 transactions on the same set from proceeding in parallel --- uncore/src/main/scala/cache.scala | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/uncore/src/main/scala/cache.scala b/uncore/src/main/scala/cache.scala index 468b6587..e7f0ce8a 100644 --- a/uncore/src/main/scala/cache.scala +++ b/uncore/src/main/scala/cache.scala @@ -688,8 +688,8 @@ class L2AcquireTracker(trackerId: Int, bankId: Int, innerId: String, outerId: St //TODO: Are there any races between lines with the same idx? //TODO: Allow hit under miss for stores - io.has_acquire_conflict := co.isCoherenceConflict(xact.addr, c_acq.payload.addr) && - xact.addr(idxMSB,idxLSB) === c_acq.payload.addr(idxMSB,idxLSB) && + io.has_acquire_conflict := (co.isCoherenceConflict(xact.addr, c_acq.payload.addr) || + xact.addr(idxMSB,idxLSB) === c_acq.payload.addr(idxMSB,idxLSB)) && (state != s_idle) && !collect_cacq_data io.has_acquire_match := co.messageHasData(xact) && @@ -857,9 +857,9 @@ class L2AcquireTracker(trackerId: Int, bankId: Int, innerId: String, outerId: St } } is(s_data_read) { - io.data.read.valid := Bool(true) + io.data.read.valid := (if(tlDataBeats == 1) Bool(true) + else !collect_cacq_data || (local_data_resp_cnt < cacq_data_cnt)) when(io.data.resp.valid) { - //TODO make sure cacq data is actually present before merging xact_data(local_data_resp_cnt) := mergeData(xact, xact_data(local_data_resp_cnt), io.data.resp.bits.data) }