提交 92a4fb31 编写于 作者: Y Yinan Xu

sbuffer: allow forwarding from both waitingCacheLine and data array

上级 b13e1328
......@@ -333,11 +333,7 @@ class Sbuffer extends XSModule with HasSBufferConst {
when (waitingCacheLine.mask(i.U + getByteOffset(io.forward(loadIdx).paddr)) && io.forward(loadIdx).mask(i)) {
io.forward(loadIdx).forwardData(i) := waitingCacheLine.data(i.U + getByteOffset(io.forward(loadIdx).paddr))
io.forward(loadIdx).forwardMask(i) := true.B
} .otherwise {
io.forward(loadIdx).forwardData(i) := 0.U
io.forward(loadIdx).forwardMask(i) := false.B
}
})
}
......@@ -348,18 +344,11 @@ class Sbuffer extends XSModule with HasSBufferConst {
// this mask is not 'mask for cache line' and we need to check low bits of paddr
// to get certain part of one line
// P.S. data in io.in will be manipulated by lsroq
(0 until XLEN / 8).foreach(i => {
when (cache(sBufIdx).mask(i.U + getByteOffset(io.forward(loadIdx).paddr)) && io.forward(loadIdx).mask(i)) {
io.forward(loadIdx).forwardData(i) := cache(sBufIdx).data(i.U + getByteOffset(io.forward(loadIdx).paddr))
io.forward(loadIdx).forwardMask(i) := true.B
} .otherwise {
io.forward(loadIdx).forwardData(i) := 0.U
io.forward(loadIdx).forwardMask(i) := false.B
}
// io.forward(loadIdx).forwardData(i) := cache(sBufIdx).data(i.U + getByteOffset(io.forward(loadIdx).paddr))
// io.forward(loadIdx).forwardMask(i) := cache(sBufIdx).mask(i.U + getByteOffset(io.forward(loadIdx).paddr))
})
when (io.forward(loadIdx).valid) {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册