提交 06c91a3d 编写于 作者: W William Wang

[WIP] LoadUnit: provide meta for dcache

上级 dd1ffd4d
...@@ -145,7 +145,7 @@ class Memend extends XSModule { ...@@ -145,7 +145,7 @@ class Memend extends XSModule {
lsroq.io.stout <> io.backend.stout lsroq.io.stout <> io.backend.stout
lsroq.io.commits <> io.backend.commits lsroq.io.commits <> io.backend.commits
lsroq.io.dp1Req <> io.backend.dp1Req lsroq.io.dp1Req <> io.backend.dp1Req
lsroq.io.lsIdxs <> io.backend.lsIdxs lsroq.io.lsIdxs <> io.backend.lsIdxs
lsroq.io.brqRedirect := io.backend.redirect lsroq.io.brqRedirect := io.backend.redirect
lsroq.io.roqDeqPtr := io.backend.roqDeqPtr lsroq.io.roqDeqPtr := io.backend.roqDeqPtr
io.backend.replayAll <> lsroq.io.rollback io.backend.replayAll <> lsroq.io.rollback
......
...@@ -160,6 +160,12 @@ class LoadQueue extends XSModule with HasDCacheParameters with NeedImpl { ...@@ -160,6 +160,12 @@ class LoadQueue extends XSModule with HasDCacheParameters with NeedImpl {
io.dcache.req.bits.mask := DontCare io.dcache.req.bits.mask := DontCare
io.dcache.req.bits.meta.id := DontCare // TODO: // FIXME io.dcache.req.bits.meta.id := DontCare // TODO: // FIXME
io.dcache.req.bits.meta.vaddr := DontCare // data(missRefillSel).vaddr
io.dcache.req.bits.meta.paddr := missRefillBlockAddr
io.dcache.req.bits.meta.uop := uop(missRefillSel)
io.dcache.req.bits.meta.mmio := false.B // data(missRefillSel).mmio
io.dcache.req.bits.meta.tlb_miss := false.B
io.dcache.req.bits.meta.mask := DontCare
io.dcache.req.bits.meta.replay := false.B io.dcache.req.bits.meta.replay := false.B
io.dcache.resp.ready := true.B io.dcache.resp.ready := true.B
...@@ -266,7 +272,8 @@ class LoadQueue extends XSModule with HasDCacheParameters with NeedImpl { ...@@ -266,7 +272,8 @@ class LoadQueue extends XSModule with HasDCacheParameters with NeedImpl {
io.ldout(i).valid := loadWbSelVec(loadWbSel(i)) io.ldout(i).valid := loadWbSelVec(loadWbSel(i))
when(io.ldout(i).fire()) { when(io.ldout(i).fire()) {
writebacked(loadWbSel(i)) := true.B writebacked(loadWbSel(i)) := true.B
XSInfo(io.loadIn(i).valid, "load miss write to cbd idx %d pc 0x%x paddr %x data %x mmio %x\n", XSInfo("load miss write to cbd roqidx %d lqidx %d pc 0x%x paddr %x data %x mmio %x\n",
io.ldout(i).bits.uop.roqIdx,
io.ldout(i).bits.uop.lqIdx, io.ldout(i).bits.uop.lqIdx,
io.ldout(i).bits.uop.cf.pc, io.ldout(i).bits.uop.cf.pc,
data(loadWbSel(i)).paddr, data(loadWbSel(i)).paddr,
......
...@@ -253,7 +253,7 @@ class LoadUnit extends XSModule { ...@@ -253,7 +253,7 @@ class LoadUnit extends XSModule {
p"vaddr ${Hexadecimal(load_s0.io.out.bits.vaddr)}, mask ${Hexadecimal(load_s0.io.out.bits.mask)}\n") p"vaddr ${Hexadecimal(load_s0.io.out.bits.vaddr)}, mask ${Hexadecimal(load_s0.io.out.bits.mask)}\n")
XSDebug(load_s1.io.out.valid, XSDebug(load_s1.io.out.valid,
p"S1: pc ${Hexadecimal(load_s1.io.out.bits.uop.cf.pc)}, tlb_miss ${io.dtlb.resp.bits.miss}, " + p"S1: pc ${Hexadecimal(load_s1.io.out.bits.uop.cf.pc)}, tlb_miss ${io.dtlb.resp.bits.miss}, " +
p"paddr ${Hexadecimal(load_s1.io.out.bits.paddr)}, mmio ${load_s1.io.out.bits.mmio}") p"paddr ${Hexadecimal(load_s1.io.out.bits.paddr)}, mmio ${load_s1.io.out.bits.mmio}\n")
// writeback to LSROQ // writeback to LSROQ
// Current dcache use MSHR // Current dcache use MSHR
...@@ -279,7 +279,7 @@ class LoadUnit extends XSModule { ...@@ -279,7 +279,7 @@ class LoadUnit extends XSModule {
// io.lsroq.ldout <> cdbArb.io.in(1) // missLoadOut // io.lsroq.ldout <> cdbArb.io.in(1) // missLoadOut
load_s2.io.out.ready := true.B load_s2.io.out.ready := true.B
io.lsroq.ldout.ready := !hitLoadOut.valid io.lsroq.ldout.ready := !hitLoadOut.valid
io.ldout.bits := Mux(load_s2.io.out.ready, hitLoadOut.bits, io.lsroq.ldout.bits) io.ldout.bits := Mux(hitLoadOut.valid, hitLoadOut.bits, io.lsroq.ldout.bits)
io.ldout.valid := hitLoadOut.valid || io.lsroq.ldout.valid io.ldout.valid := hitLoadOut.valid || io.lsroq.ldout.valid
when(io.ldout.fire()){ when(io.ldout.fire()){
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册