1
0
Commit Graph

5631 Commits

Author SHA1 Message Date
0380aed329 PUM -> SUM 2017-03-24 16:39:52 -07:00
2a413e4496 Remove fruitless debug() 2017-03-24 16:39:52 -07:00
29414f3a23 Simplify interrupt-stack discipline
f2ed45b179
2017-03-24 16:39:52 -07:00
723352c3e2 Mitigate some more PMP critical paths 2017-03-24 16:39:52 -07:00
7484f27ed3 Don't gate exception-cause pipeline registers separately
They are too narrow to justify gating separately from the other pipeline
registers (and one of the clock gates was on the PMP critical path).
2017-03-24 16:39:52 -07:00
3ea822c2cf Make blocking L1 D$ the default
The nonblocking cache is overdesigned for most Rocket-class cores, so
the blocking cache is the more appropriate default.
2017-03-24 16:39:52 -07:00
487b8db5ef Address some PMP critical paths 2017-03-24 16:39:52 -07:00
03fb334c4c Take mprv calculation off critical path 2017-03-24 16:39:52 -07:00
f0796f0509 Pass correct access size information to PMP checker 2017-03-24 16:39:52 -07:00
a6874c03f7 Remove DecoupledTLB 2017-03-24 16:39:52 -07:00
78f9f6b9ef When SFENCE.VMA has rs2 != x0, don't flush global mappings 2017-03-24 16:39:52 -07:00
1b950128e1 PTW should always use S-mode privilege
If an exception occurs while a page-table walk is coincidentally in
progress (e.g., an illegal instruction executes during data TLB refill),
then the processor might enter M-mode.  However, the PTW's accesses
should proceed without M privilege, to avoid bypassing PMPs.

Note, the same argument doesn't apply to the nonblocking cache's replay
queues, because those accesses have already been checked against the PMPs.
The cache correctly ignores access exceptions reported on replays,
provided no exceptions were reported on the initial access.
2017-03-24 16:39:52 -07:00
aace526857 WIP on PMP 2017-03-24 16:39:52 -07:00
b1b405404d Set PRV=M when entering debug mode
Debug mode mostly behaves like M-mode, so this approach avoids having
to check the debug bit in most permission checks.
2017-03-24 16:39:52 -07:00
cf168e419b Support SFENCE.VMA rs1 argument
This one's a little invasive.  To flush a specific entry from the TLB, you
need to reuse its CAM port.  Since the TLB lookup can be on the critical
path, we wish to avoid muxing in another address.

This is simple on the data side, where the datapath already carries rs1 to
the TLB (it's the same path as the AMO address calculation).  It's trickier
for the I$, where the TLB lookup address comes from the fetch stage PC.
The trick is to temporarily redirect the PC to rs1, then redirect the PC
again to the instruction after SFENCE.VMA.
2017-03-24 16:39:52 -07:00
797c18b8db Make some requirement failures more verbose (#608)
* tilelink: verbose requires in xbar

* diplomacy: verbose requires
2017-03-23 21:55:11 -07:00
bd08f10816 tilelink2: make sink ids optional (#607)
* tilelink2: make sink ids optional

* CacheCork: add a special-case for 1 sink id
2017-03-23 18:19:04 -07:00
19eb9b6906 l1tol2: put a flow Q on the exits (#606)
This Xbar connects the largest components in the design; the cores
and the L2 banks. We already have a full buffer on the core side.
However, the valid path going to the L2 comes back as a ready path.
Putting a flow Q also on the outputs of the l1tol2 cuts this path
in half at no cost to IPC.
2017-03-23 16:28:32 -07:00
055b8ba1f0 rocket: avoid LinkedHashMap.keys to preserve traversal order (#603) 2017-03-22 14:38:33 -07:00
4f78eafbdf Merge pull request #602 from ucb-bar/tl-mmio-pipeline
TL pipeline MMIO
2017-03-21 14:59:11 -07:00
76f083b469 FIFOFixer: Not all D-channel messages are A-channel responses 2017-03-21 14:17:38 -07:00
3609254e4a There's no structural hazard on MMIO store responses
So don't stall as though there were.
2017-03-21 14:17:32 -07:00
5eae7e1da4 make DCache s1_nack less conservative for pipelined MMIO requests 2017-03-21 11:16:51 -07:00
4c00066746 rocket: describe dcache as two clients (fifo+cached) 2017-03-21 11:16:51 -07:00
81d717e82f coreplex: guarantee FIFO for those tiles that need it 2017-03-21 11:16:51 -07:00
198afddb4b tilelink2: add the FIFOFixer 2017-03-21 11:16:51 -07:00
c33f31dd3c tilelink2 RAMModel: weaken fifo requirement check 2017-03-21 11:16:51 -07:00
930438adba tilelink2 SourceShrinker: destroy FIFO behaviour 2017-03-21 11:16:51 -07:00
fd521c56a6 tilelink2: add client-side FIFO parameterization 2017-03-21 11:16:51 -07:00
d4c9c13fb4 Merge pull request #600 from ucb-bar/monitor-spec
Update monitor spec
2017-03-20 15:23:34 -07:00
4eef317e84 RegisterRouter: support devices with gaps 2017-03-20 14:49:22 -07:00
431cb41e27 tilelink2 Parameters: clarify client minLatency is B=>C, not D=>E 2017-03-20 14:49:22 -07:00
04892fea01 Monitor: support early ack 2017-03-20 14:49:19 -07:00
278f6fea24 tilelink2: define is{Request,Response} based on spec 2017-03-20 13:41:02 -07:00
778e189bba Monitor: ProbeAckData and ReleaseData may carry an error 2017-03-20 11:44:13 -07:00
48c7aed4e1 Monitor: any probe supported by the client is legal 2017-03-20 11:34:19 -07:00
5a50acfd9d Merge pull request #595 from ucb-bar/ignore-tl-c
Ignore TL-C
2017-03-19 18:49:11 -07:00
0c92283a61 rocket icache: tie off b ready 2017-03-19 17:18:50 -07:00
c9459fe4eb tilelink2 Xbar: don't use unnecessary ports 2017-03-19 17:02:24 -07:00
7971947d6c tilelink2 Monitor: don't inspect bits if valid is forbidden 2017-03-19 16:34:23 -07:00
a4ca424a22 AHBToTL: finally get the error signal right? (#594) 2017-03-18 22:24:20 -07:00
d4272db067 travis: only run 4 jobs at once (#593)
We can only run 4 at a time; 5 causes the test time to double.
In the past we had a 50minute build deadline, but that's fixed.
2017-03-18 04:14:50 -07:00
f6daa782d3 AHBToTL: fix the order of updates to d_pause (#592) 2017-03-17 19:34:40 -07:00
dcc9827ab4 Rename Prci.scala to Clint.scala (#591)
The internals of this were renamed to CoreplexLocalInterrupter, so changing the top level name to match.
2017-03-17 15:36:10 -07:00
db55a1d755 Fragmenter: fix a bug when underlying device supports larger bursts (#589) 2017-03-17 11:00:49 -07:00
eb953c40f0 Merge pull request #587 from ucb-bar/ahb-fix
ahb: rewrote TLToAHB to avoid retracting requests on stall
2017-03-16 20:55:39 -07:00
9b5b3279a6 AHBToTL: don't report error during idle cycles 2017-03-16 18:18:29 -07:00
5efd38bf97 apb: put both aFlow options under regression 2017-03-16 15:36:14 -07:00
882a7ff8ff TLToAPB: use the now standard aFlow parameter name 2017-03-16 15:34:59 -07:00
e31b84af33 axi4: use common BufferParams 2017-03-16 15:32:17 -07:00