when will the scoreboard(core) be cleared in term of a dcache(blocking) refill? #3142
Replies: 3 comments
-
The scoreboard is only set for instructions that actually retire. In the event of a blocking miss, the offending memory access doesn't actually retire (it's nacked and replayed). So the scoreboard never gets set (and therefore never gets cleared). |
Beta Was this translation helpful? Give feedback.
-
@aswaterman Thanks for your reply. I know the general idea, which the offending mem access instruction will get replayed. But specifically I thought the |
Beta Was this translation helpful? Give feedback.
-
As you said, I'm guessing you aren't looking at a waveform, since you probably would've figured this out already if you had been. I'm also a proponent of studying the code first, then studying the waveform if that approach fails. But it turns out that the best approach depends on the situation. |
Beta Was this translation helpful? Give feedback.
-
When a dcache miss happens, the wb_dcache_miss (
val wb_dcache_miss = wb_ctrl.mem && !io.dmem.resp.valid
) will be asserted, and therefore specific bit of the scoreboard will be set(val wb_set_sboard = wb_ctrl.div || wb_dcache_miss || wb_ctrl.rocc).
However, I have trouble figuring out the time that bit gets cleared once the missing block is acquired. As far as I can tell, the bit in scoreboard will be cleared only whenllwen
is asserted(sboard.clear(ll_wen, ll_waddr)
), however thellwen
is set totrue
whendmem_resp_replay && dmem_resp_xpu
is asserted , seems only the mmio resp will set theio.dmem.resp.bits.replay
and consequently makellwen
asserted.:Can anyone shed some light into this? Is there something that I miss? Thanks
@aswaterman
Beta Was this translation helpful? Give feedback.
All reactions