tilelink: split Acquire into Acquire{Block,Perm} (#1030)
We had planned for a while to add an 'Overwrite' message which obtains permissions without requiring retrieval of data. This is useful whenever a master knows it will completely replace the contents of a cache block. Instead of calling it Overwrite, we decided to split the Acquire type. If you AcquirePerm, you MUST Release and ProbeAck with Data.
This commit is contained in:
committed by
GitHub
parent
81b9ac42a3
commit
bd045a3b95
@ -384,7 +384,7 @@ class DCacheModule(outer: DCache) extends HellaCacheModule(outer) {
|
||||
val a_size = mtSize(s2_req.typ)
|
||||
val a_data = Fill(beatWords, pstore1_data)
|
||||
val acquire = if (edge.manager.anySupportAcquireB) {
|
||||
edge.Acquire(UInt(0), acquire_address, lgCacheBlockBytes, s2_grow_param)._2 // Cacheability checked by tlb
|
||||
edge.AcquireBlock(UInt(0), acquire_address, lgCacheBlockBytes, s2_grow_param)._2 // Cacheability checked by tlb
|
||||
} else {
|
||||
Wire(new TLBundleA(edge.bundle))
|
||||
}
|
||||
|
@ -276,7 +276,7 @@ class MSHR(id: Int)(implicit edge: TLEdgeOut, p: Parameters) extends L1HellaCach
|
||||
io.wb_req.bits.voluntary := Bool(true)
|
||||
|
||||
io.mem_acquire.valid := state === s_refill_req && grantackq.io.enq.ready
|
||||
io.mem_acquire.bits := edge.Acquire(
|
||||
io.mem_acquire.bits := edge.AcquireBlock(
|
||||
fromSource = UInt(id),
|
||||
toAddress = Cat(io.tag, req_idx) << blockOffBits,
|
||||
lgSize = lgCacheBlockBytes,
|
||||
|
Reference in New Issue
Block a user