[bug fix]: bpd sram rw the same addrparts #2314
Open
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
The BTB and other BPD components are implemented using dual-port SRAMs. When the predictor performed a simultaneous write and read to the same SRAM entry, the read port would return an indeterminate value instead of either the old or new data. This violated the expected behavior and caused mispredictions.
Environment:
The issue occurred when:
Solution
Implemented read-valid control logic to prevent read operations when a write targets the same address:
- data_rvalid (BIM)
- s0_rbtb_valid, s0_rmeta_valid (BTB)
- rtage_valid, rhius_valid, rlous_valid (TAGE)
- Compare read index with write index
- Compare read index with reset index (during initialization)
- Disable read when addresses match
Modified Files
Verification
Impact