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

TLB: Check for PutPartial support separately from PutFull #2503

Merged
merged 4 commits into from
Jun 8, 2020

Conversation

aswaterman
Copy link
Member

Previously, the TLB would report that M_PWR (PutPartial) was permissible
anywhere that M_XWR (PutFull) was. This is fine for cache transactions,
since the caches can handle PutPartial internally. It's not fine for
uncached transactions, since PutFull support does not imply PutPartial
support.

So, check for PutPartial support separately, similar to AMOs. If the
access is cached, assume the access can proceed, since it'll be handled
in cache. If the access is uncached, check the PMA.

Rocket never issues M_PWR, so there's no functional change on that front.

Type of change: other enhancement

Impact: API addition (no impact on existing code)

Previously, the TLB would report that M_PWR (PutPartial) was permissible
anywhere that M_XWR (PutFull) was.  This is fine for cache transactions,
since the caches can handle PutPartial internally.  It's not fine for
uncached transactions, since PutFull support does not imply PutPartial
support.

So, check for PutPartial support separately, similar to AMOs.  If the
access is cached, assume the access can proceed, since it'll be handled
in cache.  If the access is uncached, check the PMA.

Rocket never issues M_PWR, so there's no functional change on that front.
@aswaterman aswaterman requested a review from ingallsj June 5, 2020 12:22
@ingallsj
Copy link
Contributor

ingallsj commented Jun 5, 2020

TLSimpleUnitTestConfig has now failed twice in Continuous Integration / Test (1) (pull_request)

@aswaterman
Copy link
Member Author

Similar to #2502 -- "Killed", so probably OOM, not a definitive test failure.

Rather than having one big ALU with a coreDataBits-sized adder,
have two smaller ALUs with shorter critical paths.  This is just
a QoR improvement for e.g. RV32D, which has xLen=32 and coreDataBits=64.
For other uses of the D$ that require coreDataBits>64, it's also a
functional fix.
src/main/scala/rocket/DCache.scala Show resolved Hide resolved
@aswaterman aswaterman merged commit ab84792 into master Jun 8, 2020
@aswaterman aswaterman deleted the putpartial-vector branch June 8, 2020 03:55
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