You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Why we need s2_miss_req_fire? It's confusing that s2_valid==0 will lead s2_miss_req_fire==0 and s2_mq_nack==1. It seems like that s2_valid is directly related to s2_mq_nack. This may or may not cause errors, due to the complex prioritization logic that follows. For example, the tlb miss will lead the s2_valid equals 0, but C_TM has higher priority than C_DR.
I would like to know whether s2_miss_req_fire is redundant. If not, please explain why, and if so, please modify the code for better readability.
Thanks!!!
The text was updated successfully, but these errors were encountered:
Thank you for your interest in the OpenXiangShan.
It does look like this is a redundant signal, which may have been inherited from the code of a previous version. We will discuss again whether more redundant signals can be removed, and we will get back to you if there is any new development.
Thank you again.
Remove the redundant logic of the miss queue nack based on the issues
raised in the
issues(#3916).
When a tlb miss and a dcache miss occur at the same time and the miss
queue nack, it will cause the `LoadUnit` to generate both replay signals
`C_TM` and `C_DR`. We will give priority to `C_TM`, which is why we need
to send a kill signal to dcache when a tlb miss occurs.
Although there was no problem before, as the
issue(#3916) says, this
will cause ambiguity, and the miss queue nack message is already
included in `s2_nack_no_mshr`, so the choice is to remove the
`s2_miss_req_fire` signal from the generation logic of the `s2_mq_nack`
signal.
Before start
Describe the question
When I read the source code and try to figure out the reasons which make load to replay, I encountered some problems.
The following situations will cause the load instruction to be quickly reissued in the S3 stage:
But the logic of generating
s2_mq_nack
signal is puzzling. The original code snippet as follows:Why we need
s2_miss_req_fire
? It's confusing thats2_valid==0
will leads2_miss_req_fire==0
ands2_mq_nack==1
. It seems like thats2_valid
is directly related tos2_mq_nack
. This may or may not cause errors, due to the complex prioritization logic that follows. For example, the tlb miss will lead thes2_valid
equals 0, butC_TM
has higher priority thanC_DR
.I would like to know whether
s2_miss_req_fire
is redundant. If not, please explain why, and if so, please modify the code for better readability.Thanks!!!
The text was updated successfully, but these errors were encountered: