Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
IPrefetch: MSHR should update IPrefetch s1 waymask (#3122)
Fixes MC-Linux CI fail: https://github.com/OpenXiangShan/XiangShan/actions/runs/9709320741/job/26802800197. In IPrefetch: 1. s0 send read request to MetaArray 2. s1: - receive response from MetaArray (therefore `s1_SRAM_valid === true.B`) - and receive update request from MSHR(`fromMSHR.valid && !fromMSHR.bits.corrupt === true.B`) - and `s1_fire === true.B` 3. waymasks directly from SRAM(which might be outdated) enters s2 stage, and update request from MSHR is actually discarded. If it is a miss(`waymask === 0.U`), IPrefetch will send miss request to MSHR. In this case, multiple refills of the same cache block may occur, which in turn causes a bug with multiple hits in the MetaArray. As a fix, we should use information from MSHR to update `s1_SRAM_waymasks` too. Local MC-Linux test passed with seed=1244.
- Loading branch information