Jonathan Woodruff
4cc86b1e56
Revert more changes to buffer speculative training, as previous
...
buffering of training from execute should be sufficient for the BTB as
well.
2021-12-16 15:01:46 +00:00
Jonathan Woodruff
3322d1d3d7
Revert "An attempt at wiring up the specUpdate interface for the Btb."
...
This reverts commit 022df36199 .
2021-12-16 12:10:50 +00:00
Jonathan Woodruff
022df36199
An attempt at wiring up the specUpdate interface for the Btb.
2021-12-15 18:40:58 +00:00
Jonathan Woodruff
696f546ecb
Version using searchableSpecFifo in BTB with actual searching, but
...
without killing speculative elements yet. This one is full performance
in CoreMark.
2021-12-15 18:27:45 +00:00
Jonathan Woodruff
657453a0a0
Two modules (that build) that should be helpful in delaying the commit
...
of training data.
2021-12-15 17:06:46 +00:00
Jonathan Woodruff
af69f2e5db
Merge branch 'CHERI' into jdw57_prediction
2021-12-15 16:47:42 +00:00
Jonathan Woodruff
34c6ee1894
Specifically give priority to wrong_spec when they conflict.
...
This appears to yield 10% performance improvement as our default setup
appears to choose a wrong priority.
2021-12-03 12:36:40 +00:00
Jonathan Woodruff
e761f18c26
Code to trace RAS predictions for measuring accuracy in simulation.
2021-11-29 12:19:00 +00:00
Franz Fuchs
37074525e1
removed unnecessary execute permissions for Decode.bsv, Exec.bsv, ProcTypes.bsv, ReorderBuffer.bsv, and AluExePipeline.bsv
2021-11-29 10:38:23 +00:00
Jonathan Woodruff
59836cc9e5
Hopefully optimise this function to have just one call to modifyOffset.
2021-11-26 11:07:12 +00:00
Jonathan Woodruff
ad149db5c0
Hopefully optimise this function to have just one call to modifyOffset.
2021-11-25 17:39:46 +00:00
Jonathan Woodruff
4e0da006e8
Make non-speculative training optional.
...
Removing non-speculative training actually improves performance in
CoreMark. While it's "safer", I guess this isn't required for BSC.
2021-11-24 17:11:36 +00:00
Jonathan Woodruff
cc0114f645
Swap write priority, as suggested by Franz.
2021-11-16 15:40:01 +00:00
Jonathan Woodruff
7b472d4d3c
Reduce area overhead by using an unguarded specfifo that does not have
...
to be worst-case-sized, but can drop elements if it is full.
2021-11-16 13:53:34 +00:00
Jonathan Woodruff
618dea1225
Feed head of RAS through to execute with training info to reset the head
...
on a misprediction.
2021-11-16 11:00:04 +00:00
Jonathan Woodruff
d56045effe
Make the associative BTB compressed.
...
That is, only store the bottom 16 bits of the target if the upper bits
of pc and nextPc match.
Have a single "way" dedicated to full targets.
2021-11-15 11:50:57 +00:00
Jonathan Woodruff
54c0ccadf0
Only train from branches that have all previous branches resolved.
2021-11-12 17:55:04 +00:00
Marno
0f86f09b6a
Updated copyright statement
2021-11-11 12:15:45 +00:00
Marno
6ae92f786b
Checking tag and seal on rVal2 and checking type on rVal1 in a way that does not use undefined behavior.
2021-11-11 11:36:45 +00:00
Marno
4d1dc29f79
Added ccopytype_bypass
2021-11-10 11:53:26 +00:00
Jonathan Woodruff
04a5d82ff0
Go back to standard tournament predictor (which performs the best on
...
CoreMark), though cleaning up slightly to use standard functions.
2021-11-10 09:54:34 +00:00
Jonathan Woodruff
8379d77cc5
Don't use a synthesis barrier for Bht so that we don't have to add it to
...
XML. The direction predictor already has one anyway.
2021-11-08 13:51:52 +00:00
Jonathan Woodruff
e342600cb5
Try the traditional Bht, as it seems like it might be less fiddly with
...
speculative training.
2021-11-08 12:34:07 +00:00
Jonathan Woodruff
6713505d12
Experiment with different Bht constants to see if these affect our
...
benchmark.
2021-11-05 18:52:40 +00:00
Jonathan Woodruff
d5e52a9ecb
Revert to upstream direction predictors to reduce diffs and prepare for
...
improvements that can be upstreamed.
Basically, only use addresses in these predictors rather than
capabilities, and just pass an address in from the FetchStage.
2021-11-05 17:42:19 +00:00
Franz Fuchs
001c5e8347
put changing the interrupt counter and writing back to a register in the right order
2021-11-05 13:47:39 +00:00
Jonathan Woodruff
836ed5b143
Merge branch 'jdw57-jr-bsc-safety' into CHERI
2021-11-03 16:46:21 +00:00
Jonathan Woodruff
cb1858447b
Fix tracing of Sc.
...
Sc is unique in that it writes both memory and a register value.
This implementation works around the fact that the memory store data and
the register write data are sharing the same field in the reorder buffer
by inferring the writeback value of Sc from the byteEnable field.
2021-11-03 12:45:15 +00:00
Jonathan Woodruff
3908c5f955
A merge resolution not included in previous commit due to not saving file.
...
Doh.
2021-11-02 18:12:05 +00:00
Jonathan Woodruff
7437c0c5e7
Some cleanups.
2021-11-02 18:09:06 +00:00
Franz Fuchs
56173bf2c2
Added interrupt counter
2021-11-02 15:48:02 +00:00
Jessica Clarke
fb1a629e07
Decode: Fix capability width mode-dependent LR/SC
...
All of St, Amo, Lr and Sc use the normal 3-bit encoding for the width;
rather than add Lr and Sc to the list, switch it just to exclude Ld as
the special case that's handled by the other half of the expression.
Previously LR.C and SC.C were decoded as LR.BU and SC.BU.
2021-10-27 15:44:23 +01:00
Jonathan Woodruff
87785eb25c
Don't translate invalid vaddrs in the DTLB.
2021-10-14 17:13:18 +00:00
Jonathan Woodruff
dad3d504b1
Take into account BTB predictions.
...
nextPc only reflected things known in the Decode stage, but not before
(i.e. BTB predictions).
This meant that we were pretty much always redirecting JRs.
I needed to pipe through whether a jump was predicted by the BTB or not,
and then only stop predicting if there is no nextPc prediction and also
no BTB prediction. This should actually reasonably approximate SBC.
Also, this one is not "redirecting", it's just flushing (flipping
decode_epoch_local), trusting that we'll get a later redirection.
2021-10-11 16:23:45 +00:00
Jonathan Woodruff
3636f6239a
Use Matt's slightly cleaner version of the function.
2021-10-11 16:23:22 +00:00
Jonathan Woodruff
1b5a036c46
Two fixes: do a proper "all bits are the same" function, as well as
...
prepare a capability target to pass back.
2021-10-08 16:35:42 +00:00
Jonathan Woodruff
5d5bee3e08
Use an invalid virtual address when preventing prediction, and also
...
detect invalid virtual addresses in the TLB and miss rather than proceed
with page walking.
2021-10-08 11:00:11 +00:00
Jonathan Woodruff
cec55419f5
Merge branch 'CHERI' into jdw57-jr-bsc-safety
2021-10-08 09:50:45 +00:00
Jonathan Woodruff
3d0aee0af4
Remove some verbosity from the committed state.
2021-10-07 16:30:32 +00:00
Jonathan Woodruff
81a12b89cb
Move to NonPipelinedSquareRooter to hopefully fit more
...
deterministically.
We're still waiting for a fixed NonPipelinedDivider.
2021-10-07 16:28:57 +00:00
Jonathan Woodruff
520b09a6ed
Use less wierd default value.
2021-10-07 16:17:19 +00:00
Jonathan Woodruff
fe9e000f43
Merge branch 'CHERI' into jdw57-jr-bsc-safety
2021-10-04 08:37:56 +00:00
Franz Fuchs
db54d27368
Move import DReg::* into ifdefs
2021-10-01 16:54:17 +01:00
Jonathan Woodruff
c69acc2fc4
Don't predict next instruction for JR without a BTB prediction.
2021-09-30 12:20:40 +00:00
gameboo
9657339d87
"fix" non PERFORMANCE_MONITORING build
2021-09-29 18:09:06 +01:00
Franz Fuchs
87977461a6
Merge branch 'CHERI' of github.com:CTSRD-CHERI/Toooba into CHERI
2021-09-29 14:23:20 +01:00
Franz Fuchs
cf8bfdc4a8
Merge branch 'faf28_hpm_consistency' into CHERI
2021-09-29 14:04:08 +01:00
Franz Fuchs
db9b5c7f54
re-integrated TagController
2021-09-24 11:39:23 +01:00
Peter Rugg
8ef44b0a6c
Workaround single step wedges by not waiting for flush before halting
2021-09-24 10:33:58 +00:00
Franz Fuchs
4cfac08bca
Bumped BlueStuff and made necessary adaptations
2021-09-23 15:25:46 +01:00