Skip to content

fix(RequestArb): Add CMO ALL snoop blocking logic#479

Closed
yulightenyu wants to merge 4 commits intomasterfrom
fix_cmo_hit_snoop
Closed

fix(RequestArb): Add CMO ALL snoop blocking logic#479
yulightenyu wants to merge 4 commits intomasterfrom
fix_cmo_hit_snoop

Conversation

@yulightenyu
Copy link
Copy Markdown
Contributor

When CMO ALL flushes a set, need to block same-set snoop requests:

1. If snoop comes first: - snoop occupies MSHR - mshrValid = true - CMO ALL waits in sCMOREQ/sWAITMSHR until MSHR free

2. If CMO ALL comes first:
   - Set cmoAllSnpBlock = true, cmoAllSnpBlockSet = current set
   - RequestArb blocks any snoop with same set - Block released when CMO ALL moves to next set

Added fields in TaskBundle:
- cmoAllSnpBlock: CMO ALL active
- cmoAllSnpBlockSet: set being flushed

When CMO ALL flushes a set, need to block same-set snoop requests:

    1. If snoop comes first:
       - snoop occupies MSHR
       - mshrValid = true
       - CMO ALL waits in sCMOREQ/sWAITMSHR until MSHR free

    2. If CMO ALL comes first:
       - Set cmoAllSnpBlock = true, cmoAllSnpBlockSet = current set
       - RequestArb blocks any snoop with same set
       - Block released when CMO ALL moves to next set

Added fields in TaskBundle:
    - cmoAllSnpBlock: CMO ALL active
    - cmoAllSnpBlockSet: set being flushed
good-circle pushed a commit to OpenXiangShan/XiangShan that referenced this pull request Mar 8, 2026
good-circle added a commit to OpenXiangShan/XiangShan that referenced this pull request Mar 9, 2026
… RequestBuffer

* cmoAllSnpBlock generated in SinkA needs to pass through RequestBuffer
* RequestBuffer: RequestBuffer only samples input data when SinkA.io.task.valid is true
* cmoAll: cmoAllSnpBlock must remain valid even during cycles when valid is false (CMO ALL is a multi-cycle operation)
good-circle added a commit to OpenXiangShan/XiangShan that referenced this pull request Mar 9, 2026
good-circle added a commit to OpenXiangShan/XiangShan that referenced this pull request Mar 10, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants