Skip to content

Conversation

@aswaterman
Copy link
Collaborator

@aswaterman aswaterman commented Oct 31, 2025

The algorithm is as follows:

  • An instruction-side Bloom filter knows which PPNs might be in the I$
  • A store-side Bloom filter knows which PPNs might get store TLB hits
  • When refilling the store TLB, search the I-Bloom filter; on a hit, remove the ITLB entry, rebuild the I-Bloom filter, and flush the I$
  • When refilling the ITLB, search the store-Bloom filter; on a hit, remove the store TLB entry and rebuild the store-Bloom filter

The effect is that any word that can be stored-to cannot be in any I$.

The old scheme (periodically flush I$) was hacky and didn't correctly respect the in-order fetch rule (i.e. fetches are in-order wrt. each other, and so they see ordered stores in order).

cc @jerryz123 - this is just a proof of concept for the moment. It is possible to be smarter with the data structures, e.g. build two snoop filters (one global set that remembers all PPNs that might be in any I$, and another global set that remembers all PPNs that might be in any store TLB). If you have any cleverer ideas, LMK.

@aswaterman aswaterman force-pushed the ziccid branch 3 times, most recently from c4b14ab to d96724b Compare November 6, 2025 13:02
The intention is to simplify future handling of I$ coherence data structures.
@aswaterman aswaterman force-pushed the ziccid branch 2 times, most recently from eafb7f9 to 1054bf9 Compare November 6, 2025 14:56
The algorithm is as follows:
- An instruction-side Bloom filter knows which PPNs might be in the I$
- A store-side Bloom filter knows which PPNs might get store TLB hits
- When refilling the store TLB, search the I-Bloom filter; on a hit,
  remove the ITLB entry, rebuild the I-Bloom filter, and flush the I$
- When refilling the ITLB, search the store-Bloom filter; on a hit,
  remove the store TLB entry and rebuild the store-Bloom filter

The effect is that any word that can be stored-to cannot be in any I$.

The old scheme (periodically flush I$) was hacky and didn't correctly
respect the in-order fetch rule (i.e. fetches are in-order wrt.
each other, and so they see ordered stores in order).
@aswaterman aswaterman changed the title Implement Ziccid (I$ coherence) correctly and cleanly Implement Ziccid (I$ coherence) Nov 7, 2025
@aswaterman aswaterman merged commit ffe67c7 into master Nov 8, 2025
3 checks passed
@aswaterman aswaterman deleted the ziccid branch November 8, 2025 01:23
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