Skip to content

Commit

Permalink
LSQ: refactor vector load/store commit judging logic to fix X in vcs (#…
Browse files Browse the repository at this point in the history
  • Loading branch information
weidingliu committed Jun 11, 2024
1 parent 3bec463 commit ff9b84b
Show file tree
Hide file tree
Showing 4 changed files with 6 additions and 6 deletions.
4 changes: 2 additions & 2 deletions src/main/scala/xiangshan/mem/lsqueue/LoadQueueRAR.scala
Original file line number Diff line number Diff line change
Expand Up @@ -133,7 +133,7 @@ class LoadQueueRAR(implicit p: Parameters) extends XSModule
XSError(allocated(enqIndex), p"LoadQueueRAR: You can not write an valid entry! check: ldu $w, robIdx $debug_robIdx")

freeList.io.doAllocate(w) := true.B

// Allocate new entry
allocated(enqIndex) := true.B

Expand Down Expand Up @@ -169,7 +169,7 @@ class LoadQueueRAR(implicit p: Parameters) extends XSModule
val needFlush = uop(i).robIdx.needFlush(io.redirect)
val fbk = io.vecFeedback
for (j <- 0 until VecLoadPipelineWidth) {
vecLdCanceltmp(i)(j) := fbk(j).valid && fbk(j).bits.isFlush && uop(i).robIdx === fbk(j).bits.robidx && uop(i).uopIdx === fbk(j).bits.uopidx
vecLdCanceltmp(i)(j) := allocated(i) && fbk(j).valid && fbk(j).bits.isFlush && uop(i).robIdx === fbk(j).bits.robidx && uop(i).uopIdx === fbk(j).bits.uopidx
}
vecLdCancel(i) := vecLdCanceltmp(i).reduce(_ || _)

Expand Down
2 changes: 1 addition & 1 deletion src/main/scala/xiangshan/mem/lsqueue/LoadQueueRAW.scala
Original file line number Diff line number Diff line change
Expand Up @@ -183,7 +183,7 @@ class LoadQueueRAW(implicit p: Parameters) extends XSModule
val needCancel = uop(i).robIdx.needFlush(io.redirect)
val fbk = io.vecFeedback
for (j <- 0 until VecLoadPipelineWidth) {
vecLdCanceltmp(i)(j) := fbk(j).valid && fbk(j).bits.isFlush && uop(i).robIdx === fbk(j).bits.robidx && uop(i).uopIdx === fbk(j).bits.uopidx
vecLdCanceltmp(i)(j) := allocated(i) && fbk(j).valid && fbk(j).bits.isFlush && uop(i).robIdx === fbk(j).bits.robidx && uop(i).uopIdx === fbk(j).bits.uopidx
}
vecLdCancel(i) := vecLdCanceltmp(i).reduce(_ || _)

Expand Down
4 changes: 2 additions & 2 deletions src/main/scala/xiangshan/mem/lsqueue/LoadQueueReplay.scala
Original file line number Diff line number Diff line change
Expand Up @@ -726,8 +726,8 @@ class LoadQueueReplay(implicit p: Parameters) extends XSModule
for (i <- 0 until LoadQueueReplaySize) {
val fbk = io.vecFeedback
for (j <- 0 until VecLoadPipelineWidth) {
vecLdCanceltmp(i)(j) := fbk(j).valid && fbk(j).bits.isFlush && uop(i).robIdx === fbk(j).bits.robidx && uop(i).uopIdx === fbk(j).bits.uopidx
vecLdCommittmp(i)(j) := fbk(j).valid && fbk(j).bits.isCommit && uop(i).robIdx === fbk(j).bits.robidx && uop(i).uopIdx === fbk(j).bits.uopidx
vecLdCanceltmp(i)(j) := allocated(i) && fbk(j).valid && fbk(j).bits.isFlush && uop(i).robIdx === fbk(j).bits.robidx && uop(i).uopIdx === fbk(j).bits.uopidx
vecLdCommittmp(i)(j) := allocated(i) && fbk(j).valid && fbk(j).bits.isCommit && uop(i).robIdx === fbk(j).bits.robidx && uop(i).uopIdx === fbk(j).bits.uopidx
}
vecLdCancel(i) := vecLdCanceltmp(i).reduce(_ || _)
vecLdCommit(i) := vecLdCommittmp(i).reduce(_ || _)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -205,7 +205,7 @@ class VirtualLoadQueue(implicit p: Parameters) extends XSModule
for (i <- 0 until VirtualLoadQueueSize) {
val cmt = io.vecCommit
for (j <- 0 until VecLoadPipelineWidth) {
vecLdCommittmp(i)(j) := cmt(j).valid && cmt(j).bits.isCommit && uop(i).robIdx === cmt(j).bits.robidx && uop(i).uopIdx === cmt(j).bits.uopidx
vecLdCommittmp(i)(j) := allocated(i) && cmt(j).valid && cmt(j).bits.isCommit && uop(i).robIdx === cmt(j).bits.robidx && uop(i).uopIdx === cmt(j).bits.uopidx
}
vecLdCommit(i) := vecLdCommittmp(i).reduce(_ || _)

Expand Down

0 comments on commit ff9b84b

Please sign in to comment.