-
Notifications
You must be signed in to change notification settings - Fork 670
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
feat(CtrlUnit, DCache): support L1 DCache RAS #4009
Open
cz4e
wants to merge
6
commits into
master
Choose a base branch
from
feat-l1dcache-ras-support
base: master
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
cz4e
requested review from
linjuanZ,
Ivyfeather,
happy-lx,
good-circle and
bosscharlie
as code owners
December 9, 2024 10:53
cz4e
force-pushed
the
feat-l1dcache-ras-support
branch
from
December 11, 2024 05:55
cad44db
to
488c05c
Compare
[Generated by IPC robot]
master branch:
|
linjuanZ
requested changes
Dec 12, 2024
linjuanZ
changed the title
feat(L1DCache RAS): l1dcache ras support
feat(CtrlUnit, DCache): support L1 DCache RAS
Dec 12, 2024
linjuanZ
approved these changes
Dec 12, 2024
[Generated by IPC robot]
master branch:
|
cz4e
force-pushed
the
feat-l1dcache-ras-support
branch
from
December 13, 2024 06:02
3580c5e
to
56127a2
Compare
[Generated by IPC robot]
master branch:
|
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
L1 DCache RAS extension support
The L1 DCache supports the part of Reliability, Availability, and
Serviceability (RAS) Extension.
(SECDED) ECC on the RAMs. This includes the L1 DChace tag and data RAMs.
Not recovery error tag or data.
ECC Error Detect
An error might be triggered, when access L1 DCache.
Error Report:
is judged that an ECC error has occurred.
that an ECC error has occurred. If it does not hit, it will not be processed.
considered and an exception is reported.
be sent to BEU.
triggers the NMI external interrupt(65).
Load instruction:
and the errors will be reported to the BEU and a
Hardware Error
will be reported.
Probe/Snoop:
and a
ProbeAck
withcorrupt=1
needs to be returned to l2.the rules. If data needs to be returned,
ProbeAckData
withcorrupt=1
needs to be returned to l2.
Replace/Evict:
ReleaseData
withcorrupt=1
needs to be returned to l2.Store to L1 DCache:
Repalce/Evict
process and the data is written to L1 DCache withoutreporting errors to l2.
the error to l2.
Atomics:
Hardware Error
, do not report errors to l2.Error Inject
Each core's L1 DCache is configured with a memory map register-controlled
controller, and each hardware unit that supports ECC is configured with a
control bank. After the Bank register configuration is completed, L1 DCache
will trigger an ecc error for the first access L1 DCache.
Address Space
Address space
0x38022000
-0x3802207F
, a total of 128 bytes of space,this space is the local space of each hart.
L1 DCache Control Bank
Each Control Bank contains registers:
ECCCTL
,ECCEID
,ECCMASK
,each register is 8 bytes.
ese(error signaling enable)
: Indicates that the injection is validand is initialized to 0. When the injection is successful and
pst==0
,ese will be clean.
pst(persist)
: Continuously inject signals. Whenpst==1
,the
ECCEID
counter decreases to 0 and after successful injection, the
injection timer will be restored to the last set
ECCEID
and re-injected;when
pst==0
, it will be injected only once.ede(error delay enable)
: Indicates that counter is valid andinitialized to 0. If
ese==1
andede==0
, error injection is effective immediately.ese==1
andede==1
, you need to wait untilECCEID
decrements to 0 before the injection is effective.
cmp(component)
: Injection target, initialized to 0.bank
: The bank valid signal is initialized to 0. When the bit inthe
bank
is set, the corresponding mask is valid.ese==1
andede==1
, itstarts to decrease until it reaches 0. Currently, the same clock as
the core frequency is used, which can also be divided. Since ECC
injection relies on L1 DCache access, the time of the
EID
and thetime when the ECC error is triggered may not be consistent.
Tag injection only uses the bits in
ECCMASK0
corresponding tothe tag length.
Error Inject Example