Commit Graph

796 Commits

Author SHA1 Message Date
Peter Rugg
f3ac024b73 Remove exceptions from CUnseal 2023-06-20 12:32:49 +01:00
Peter Rugg
ca711eab2a Remove exceptions from CToPtr and CFromPtr 2023-06-20 09:45:48 +01:00
Peter Rugg
9f24a516e6 Remove traps from CSeal and CCSeal 2023-01-16 10:43:32 +00:00
Peter Rugg
ecdc2e0107 Remove remaining unsealed checks 2023-01-11 17:50:37 +00:00
Peter Rugg
4c166c95b9 Change treatment of reserved types in CCopyType 2023-01-11 17:40:51 +00:00
Peter Rugg
de0c0315f4 Remove trap conditions for CCopyType 2022-10-25 22:11:58 +01:00
Peter Rugg
b0233a01c4 Remove trap on CSetBounds* 2022-10-25 22:03:31 +01:00
Peter Rugg
2b471b0196 Don't require permit_x when constructing sentries 2022-10-18 15:51:52 +01:00
Peter Rugg
04ba0cb7ab Prefer tag clearing to trapping when manipulating a sealed capability
This causes the behaviour of CCSeal and CSeal to diverge in non-trapping cases,
meaning an extra case is added to CapModify.
2022-10-18 15:48:35 +01:00
Peter Rugg
e37339b147 Return 0 on CToPtr if authority tag unset 2022-05-18 14:59:56 +01:00
Peter Rugg
338b98e0d2 Remove tag-assertions when manipulating capabilities 2022-05-18 14:59:56 +01:00
Peter Rugg
b113d05095 Prioritise misaligned over RVFIDII load access fault 2022-05-18 14:59:43 +01:00
Franz Fuchs
fd639f4b22 added typedef for static number in Ras.bsv 2022-05-14 17:16:40 +01:00
Jonathan Woodruff
25013c9713 Revert to including performance improvements by default. 2022-03-29 10:26:35 +00:00
Jonathan Woodruff
c273314084 Remove all BSC protections in an attempt to get a baseline bitfile for
that work.
2022-03-29 10:17:12 +00:00
Jonathan Woodruff
163ca1d099 Use only parameters that improve performance. 2022-03-25 14:08:43 +00:00
Jonathan Woodruff
9bfaf4cbf0 Swap poliarity of prediction for comparison with upstream. 2022-03-25 14:03:06 +00:00
Jonathan Woodruff
6d7f95571f Merge remote-tracking branch 'origin/CHERI' into jdw57_prediction 2022-03-25 13:06:22 +00:00
Jonathan Woodruff
ad7bcbb559 Temprarily remove all protections for a baseline bitfile. 2022-03-25 11:09:32 +00:00
Jonathan Woodruff
3248e42485 Temporarily turn off late push so we can run benchmarks for non-push
case.
2022-03-21 10:14:08 +00:00
Jonathan Woodruff
3cdc2d31c8 Experimentally increase delay before reset. 2022-03-21 10:13:48 +00:00
Jonathan Woodruff
09db91f8c8 Reset counter if head becomes valid. 2022-03-16 11:39:57 +00:00
Peter Rugg
d0c1d97a2a Print RVFI packets in RVFI_DII also 2022-03-15 10:04:18 +00:00
Jonathan Woodruff
7b78c0ed7b Delay returns (up to 10 cycles) if there is an outstanding push. 2022-03-14 18:45:34 +00:00
Peter Rugg
a6b39b58a1 Clean up prints 2022-03-11 10:24:39 +00:00
Jonathan Woodruff
37a7745f1a Fix a few errors in the previous commit, and importantly, make the
"push" from writeback just a write to the location that was meant to
push to, rather than the current head.
2022-03-10 11:04:54 +00:00
Peter Rugg
00c0021479 Enable RVFI by default for bluesim builds 2022-03-09 22:18:08 +00:00
Peter Rugg
d005d4ea61 Bump BSV-RVFI-DII 2022-03-09 22:18:08 +00:00
Peter Rugg
a6976c0071 Fix RVFI-only build 2022-03-09 22:18:08 +00:00
Jonathan Woodruff
9d68d877d9 Move to much simpler design.
Just update the head in Decode, and write data from Execute.
A loop calling from the same place will at least find the correct
address.
Also, the bad fixup interaction is solved.
2022-03-09 12:32:01 +00:00
Jonathan Woodruff
bbdcf6dde9 A more sophisticated RAS protection delay.
Saturate down, and also predict with old push value if there is more
than 6 cycles of delay.
2022-03-08 15:17:54 +00:00
Jonathan Woodruff
064cd22114 Inteligently delay Decode (for up to 8 cycles) if we encounter a pop
while waiting for a push.
2022-03-07 17:52:11 +00:00
Franz Fuchs
56c0ca328b Added missing update due to changing version of BlueStuff 2022-02-28 13:03:00 +00:00
Jonathan Woodruff
6d65de5c88 Experimentally remove delayed RSB_PUSH for synthesis. 2022-02-24 11:49:35 +00:00
Jonathan Woodruff
6ea972931d Add missing verilog file that is inadvertantly used. 2022-02-23 16:46:43 +00:00
Jonathan Woodruff
28646b252d Add BSC protections to the hardware makefile. 2022-02-23 11:43:41 +00:00
Jonathan Woodruff
c17874bdba Add options to disable each of 5 aspects of enforcment of the Branching
Speculation Contract.
2022-02-22 16:21:53 +00:00
Franz Fuchs
90f236aab1 Bumped BlueStuff, TagController and BSV-RVFI-DII 2022-02-21 14:39:44 +00:00
Franz Fuchs
f46b961674 Bumped TagController 2022-02-21 09:19:25 +00:00
Jonathan Woodruff
e889bb95fa Add a "delay" for fixups after a push.
A push updates the head pointer from Execute, but the instructions
between Decode and execute will have an out-of-date head pointer.
If a branch in that window mispredicts, it will get the head pointer
out of sync by resetting it to ignore the push.
By delaying by one branch, we seem to eliminate over 60% of the misses,
and reduce the cycle overhead from 0.5% to 0.2% in CoreMark, and still
well ahead of the baseline with no fixup.
2022-02-18 18:00:02 +00:00
Jonathan Woodruff
75d1afe8b4 Only push to RAS when the linking instruction is non-speculative.
That is, don't push in Decode, push from the training structure coming
from Execute, which is delayed until the instruction that issued it is
non-speculative.
2022-02-18 13:22:02 +00:00
Jonathan Woodruff
2b9ebb5b40 Ugly hack to avoid redirection epoch from being killed by the killAll.
Commit stage redirections are post-prediction and should need to somehow
be treated specially in the SpecFifo for epochs in the fetch stage.
They are post-commit, so should be unkillable somehow.  I guess
SpecFifos are not meant to hold post-commit state currently.
2022-02-16 12:23:05 +00:00
Jonathan Woodruff
4961d321b9 Merge branch 'CHERI' into jdw57_prediction 2022-02-16 10:10:00 +00:00
Jonathan Woodruff
e118e7c0ee Merge branch 'CHERI' into jdw57_schedule_experiments_III 2022-02-14 16:01:47 +00:00
Jonathan Woodruff
05df76073b Revert some unintended changes from the last commit. 2022-02-01 11:08:37 +00:00
Jonathan Woodruff
01132d165a Enable tracing of physical addresses for RVFI (if PADDR_RVFI is
defined).
This is done by adding a vector of padder lookup interfaces to the load
store queue.
This should help with targeted memory translation debugging, and also
with compatability with the current Sail RVFI implemenation which is
probably incorrect with respect to the RVFI spec which calls for virtual
addresses in the maddr field.
2022-02-01 09:10:48 +00:00
Jonathan Woodruff
ad5d5aca0d Also pause branch execution when there is a pending wrong speculation. 2022-01-31 12:36:17 +00:00
Jonathan Woodruff
a56deab46c Simpelest strategy for making wrongSpec not conflict with loads of
rules.
This triggers some assertions in the ROB what should be dealt with
properly if this is going to work.
2022-01-31 12:36:17 +00:00
Jonathan Woodruff
4fbb7b5648 A version that seems to actually run.
The buffer in GlobalSpecUpdate has to be a SpecFifo.
2022-01-31 12:09:38 +00:00
Jonathan Woodruff
c1c4a46b1e Simpelest strategy for making wrongSpec not conflict with loads of
rules.
This triggers some assertions in the ROB what should be dealt with
properly if this is going to work.
2022-01-31 12:09:38 +00:00