Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[prefetcher] Fix issue causing a race condition between cache access … #220

Open
wants to merge 1 commit into
base: master
Choose a base branch
from

Conversation

medav
Copy link

@medav medav commented Dec 4, 2018

…and invalidates

When the prefetcher issues memory requests, it uses the same child lock as the given
demand request. This means when the parent cache begins its transaction, it gives up
this lock meaning a pending invalidate could overwrite the demand request before the
response is sent back to the child cache. This causes an assert failure in the cache
coherence code (coherence_ctrls.cpp:114).

This fix resolves the issue by performing the demand access LAST in the prefetcher's
access routine. This ensures the request always returns with a valid coherence state
and does not cause the assert failure.

…and invalidates

When the prefetcher issues memory requests, it uses the same child lock as the given
demand request. This means when the parent cache begins its transaction, it gives up
this lock meaning a pending invalidate could overwrite the demand request before the
response is sent back to the child cache. This causes an assert failure in the cache
coherence code (coherence_ctrls.cpp:114).

This fix resolves the issue by performing the demand access LAST in the prefetcher's
access routine. This ensures the request always returns with a valid coherence state
and does not cause the assert failure.
@qianlong-zhang
Copy link

Hi @medav , do you know how to enable prefetcher for multi-cache system? here is my problem:
#240
Thanks!

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