Commit Graph
69 Commits
Author SHA1 Message Date
Andrew WatermanandGitHub 206892899f Merge pull request #1171 from freechipsproject/fix-msb-check
Enforce physical-address canonicalization
2018-01-03 12:06:18 -08:00
Andrew WatermanandGitHub 5c204f98d5 When writing full words to ITIM, ECC errors are correctable (#1148)
* When writing full words to ITIM, ECC errors are correctable

* Disable D$ tag reset state machine when using scratchpad
2017-12-07 16:00:26 -08:00
Andrew WatermanandHenry Cook 44eb4d12b5 Avoid data corruption under correctable tag error during flush (#1130)
This esoteric bug manifests if a tag-read error occurs when a FENCE.I is
executed, even if the error was correctable.  Subsequently, an attempt to
flush a dirty line may flush the wrong line's data.
2017-11-29 09:42:00 -08:00
Andrew WatermanandGitHub 5155eb6059 Don't emit writeback state machine logic for scratchpad (#1127)
Firrtl can't DCE it because it would require analyzing the state machine.
2017-11-22 18:40:02 -06:00
Andrew WatermanandGitHub 39f1acfd34 Merge pull request #1122 from freechipsproject/fix-itim
Fix ITIM deallocation during I$ refill causing data corruption
2017-11-20 15:08:25 -08:00
Andrew WatermanandGitHub b317735319 Merge pull request #1106 from freechipsproject/bump-tools
bump tools for .align 2 fix in riscv-tests
2017-11-11 23:36:28 -08:00
Andrew WatermanandGitHub 35d377d122 Merge pull request #1100 from freechipsproject/disable-local-amos
Provide option to support AMOs only on I/O, not DTIM/D$
2017-11-09 21:20:55 -08:00
Andrew WatermanandGitHub efdb418559 Merge pull request #1098 from freechipsproject/frontend
Frontend improvements
2017-11-09 17:44:38 -08:00
Andrew WatermanandGitHub 4514adb77c Merge pull request #1093 from freechipsproject/local-error-interrupt
generate local interrupts on bus/ecc errors
2017-11-07 14:19:53 -08:00
Andrew WatermanandGitHub bdda2cb145 Merge pull request #1089 from freechipsproject/aswaterman-patch-1
Don't emit PTW covers when !usingVM
2017-11-06 18:03:36 -08:00
Andrew WatermanandGitHub 7bef935d2a Don't emit PTW covers when !usingVM 2017-11-03 15:03:27 -07:00
Andrew WatermanandGitHub 3db066303b Fix ITIM bug overwriting I$ contents when deallocating ITIM (#1079)
Workaround: disable interrupts and then do:

.align 3
sb x0, (t0) # t0 contains ITIM-deallocate address
fence.i
2017-10-31 00:49:56 -07:00
Andrew WatermanandGitHub 21b5367259 Expand C.UNIMP correctly (#1052)
It was expanding to AMOADD.W, which is clearly not an illegal instruction.
2017-10-12 14:00:14 -07:00
Andrew WatermanandGitHub b2bc46471b Conditionalize some covers that are sometimes impossible (#1043) 2017-10-10 17:14:33 -07:00
Andrew WatermanandGitHub 50429daef4 Merge pull request #1036 from freechipsproject/l1-cover
Add some covers for L1 memory system
2017-10-10 12:28:48 -07:00
Andrew WatermanandGitHub a9686ab883 Merge pull request #1035 from freechipsproject/big-paddr
Fix paddrBits < xLen && paddrBits == vaddrBits case
2017-10-09 20:59:21 -07:00
Andrew WatermanandGitHub d78ad857ee Merge pull request #1034 from freechipsproject/base-tile
Generalize Tile/Coreplex hierarchy
2017-10-09 11:42:20 -07:00
Andrew WatermanandGitHub 86a1953287 Merge pull request #1032 from freechipsproject/fpga_pipeline_fpu_master
FPU FMA FPGA retiming assist
2017-10-05 20:11:34 -07:00
Andrew WatermanandGitHub 5a84564203 Merge pull request #1023 from freechipsproject/csr-cleanup
Generalize CSR file to support simpler cores
2017-10-04 14:04:59 -07:00
Andrew WatermanandGitHub 32fda51a2c Get rid of paddrBits from SystemBus (#1029) 2017-10-04 12:11:37 -07:00
Andrew WatermanandGitHub 9137f54f59 Merge pull request #1020 from freechipsproject/fix-trace-insn
Provide correct trace insn on interrupts when possible
2017-09-27 18:47:24 -07:00
Andrew WatermanandGitHub 5b2f458214 Merge branch 'master' into ma-fetch 2017-09-20 12:18:03 -07:00
Andrew WatermanandGitHub f1a506476b Merge pull request #994 from freechipsproject/beu
Add L1 bus-error unit
2017-09-20 12:17:08 -07:00
Andrew WatermanandGitHub acea94bcef Merge pull request #1001 from freechipsproject/address-decoder
Address decoder "improvements"
2017-09-19 22:38:53 -07:00
Andrew WatermanandGitHub 1f606d924f Don't perform in-place correction if there was a recent store (#988)
Since the correction updates the entire word, the WAW hazard detection
logic is not sufficient to prevent overwriting a recent store.  So,
re-read the word after all pending stores have drained.
2017-09-08 16:26:54 -07:00
Andrew WatermanandGitHub 53dfc5e9be Remove overzealous assertion (#987)
This assertion made sure the D$ controller was able to write the tag RAM
when a cache line was refilled.  However, it is benign if it fails to do
so: the metadata is invalid at this point, so the miss will simply happen
a second time.

This happens when resolving a tag ECC error during hit-under-miss.
2017-09-07 18:17:56 -07:00
Andrew WatermanandGitHub 82df766f4a Merge pull request #963 from freechipsproject/interrupt-order
Respect ISA requirements on interrupt priority order
2017-08-18 00:10:19 -07:00
Andrew WatermanandGitHub e945f6e265 Merge pull request #955 from freechipsproject/fix-acquire-before-release
Fix acquire before release
2017-08-13 18:29:58 -07:00
Andrew WatermanandGitHub 41a2a03f90 Merge pull request #953 from freechipsproject/fix-dcache-ecc
Don't trigger ECC writebacks when a release is in flight
2017-08-12 16:47:19 -07:00
Andrew WatermanandGitHub a3358f34a0 Fix priority inversion for two back-to-back divides (#948)
If the first one is killed for some unrelated reason (e.g. write port
hazard), the second one will still issue to the div-sqrt unit.  While
it will itself later be killed, the fact that the later instruction
acquires a resource needed by the former instruction leads to deadlock.
2017-08-10 17:12:09 -07:00
Andrew WatermanandGitHub 0a591c5b5b Roll back use of UIntToOH1 (#946)
These appear to be equivalent, but the old one seems to fail in Vivado and
this one seems to pass.  This is not yet conclusive.
2017-08-09 18:39:47 -07:00
Andrew WatermanandGitHub 82e13443b2 Merge pull request #937 from freechipsproject/critical-paths
Perform tag error detectoin/correction in same cycle as RAM
2017-08-08 15:03:28 -07:00
Andrew WatermanandGitHub dd103ae7ec Merge pull request #938 from freechipsproject/dtim-ignore-cacheable
Don't report to the DTIM that data is cacheable
2017-08-08 15:00:13 -07:00
Andrew WatermanandGitHub 7fd8bb1159 Merge pull request #928 from freechipsproject/critical-paths
Critical paths
2017-08-06 18:50:59 -07:00
Andrew WatermanandGitHub 82ff81e40d Merge pull request #924 from freechipsproject/dont-build-debug-verilog
Don't build verilog twice for emulator and emulator-debug
2017-08-04 10:16:59 -07:00
Andrew WatermanandGitHub 7937db0c84 Merge pull request #919 from freechipsproject/imiss-perf-counter
Fix I$ miss perfctr
2017-08-04 01:04:23 -07:00
Andrew WatermanandGitHub ba4eecc0f0 Use UIntToOH1 (#921)
Closes #920
2017-08-03 14:55:39 -07:00
Andrew WatermanandGitHub 1be1433f04 Merge pull request #918 from freechipsproject/icache-prefetch
Icache prefetch
2017-08-02 21:22:20 -07:00
Andrew WatermanandGitHub d66e8f8e80 Merge pull request #914 from freechipsproject/critical-paths
Fix some critical paths
2017-08-02 19:05:31 -07:00
Andrew WatermanandGitHub 27d5557177 Merge pull request #891 from freechipsproject/fix-l2-tlb
Fix L2 TLB
2017-07-26 09:43:16 -07:00
Andrew WatermanandGitHub d43f02268b Merge pull request #889 from freechipsproject/acq-before-rel-and-jump-in-frontend
Acquire before release; jump in frontend
2017-07-25 16:26:47 -07:00
Andrew WatermanandGitHub a0cbc376b4 Merge pull request #849 from freechipsproject/l2-tlb
L1 memory system improvements
2017-07-06 13:03:06 -07:00
Andrew WatermanandGitHub e1cc0a0a0e Mask debug interrupts similarly to other interrupts (#847)
This makes single-step exceptions higher-priority than debug interrupts.
2017-07-06 12:03:24 -07:00
Andrew WatermanandGitHub ec9fbe26d8 Merge pull request #843 from freechipsproject/tag-ecc
Add tag ECC to D$
2017-07-04 16:20:11 -07:00
Andrew WatermanandGitHub 936096dd42 Merge pull request #826 from freechipsproject/tlb2
Various memory system improvements
2017-06-28 13:51:24 -07:00
Andrew WatermanandGitHub 72c46e6c05 Merge pull request #818 from sashimi-yzh/faster-verilator-compile
emulator,Makefile-verilator: add --output-split-cfuncs flag
2017-06-26 11:39:42 -07:00
Andrew WatermanandGitHub f396b4142d Merge pull request #806 from freechipsproject/mulh
Improve integer mul/div
2017-06-20 13:01:16 -07:00
Andrew WatermanandGitHub 4a24e9a6c6 Merge pull request #792 from freechipsproject/fix-fdiv
Fix FPU control bug for div/sqrt
2017-06-09 18:27:19 -07:00
Andrew WatermanandGitHub e69badb205 Merge pull request #791 from freechipsproject/tlb
Fix I$ reset regression
2017-06-09 15:49:25 -07:00
Andrew WatermanandGitHub 5a4daebbcc minNum -> minimumNumber (#766) 2017-06-08 11:12:52 -07:00
Andrew WatermanandGitHub 8cb250cfe6 Fix FMUL sign, again (#789) 2017-06-08 01:50:00 -07:00
Andrew WatermanandGitHub d45fc0d670 Merge pull request #785 from freechipsproject/fmul-fix
Fix FMUL sign of zero
2017-06-06 00:46:03 -07:00
Andrew WatermanandGitHub efce8f06b8 Merge pull request #769 from freechipsproject/new-div-sqrt
Incorporate new div/sqrt unit
2017-06-03 03:58:52 -07:00
Andrew WatermanandGitHub 618468a06b Make plusarg_reader default args work with VCS (#765)
Resolves #764
2017-05-24 21:38:56 -07:00
Andrew WatermanandHenry Cook dbc5e7c494 Add TLB miss performance counters (#762) 2017-05-23 12:52:25 -07:00
Andrew WatermanandHenry Cook b2b4c1abcd Separate tag ECC and data ECC options (#761) 2017-05-23 12:51:48 -07:00
Andrew WatermanandGitHub 3a9bbd7e58 Merge branch 'master' into vectored-stvec 2017-05-08 14:08:09 -07:00
Andrew WatermanandGitHub e21b74c232 Merge pull request #724 from ucb-bar/rvc-speculative
Fix RVC/uncacheable instruction memory performance bug
2017-05-03 18:48:49 -07:00
Andrew WatermanandYunsup Lee 4efcb5a139 Increase frontend decoupling (#722)
Reduce pathological RVC stalls
2017-05-03 07:54:46 -07:00
Andrew WatermanandYunsup Lee d6e69066a5 Fix ITIM loads (#716)
An incorrectly-set ready signal caused bad data to be read from the RAM.
2017-05-01 17:41:25 -07:00
Andrew WatermanandGitHub 9b688ce7e2 Merge pull request #707 from ucb-bar/itim
ITIM
2017-04-28 02:55:01 -07:00
Andrew WatermanandWesley W. Terpstra 8dfbf4532a Use 1 MHz as default timebase (#628)
Defaulting to 0 prevents Linux from booting
2017-03-28 19:59:56 -07:00
Andrew WatermanandHenry Cook 915697cb09 Fix FEQ flag generation (#479)
FEQ is not a signaling comparison (i.e., qNaN is not an invalid input).

Also, minor code cleanup.
2016-12-06 11:54:29 -08:00
Andrew Waterman a98127c09e Merge branch 'ss-frontend' 2015-01-04 20:26:38 -08:00
Andrew Waterman b70f7683d3 Merge branch 'master' into ss-frontend
Conflicts:
	src/main/scala/ctrl.scala
2015-01-04 19:59:18 -08:00
Andrew Waterman 87ad1a5703 More control cleanup 2015-01-04 19:46:01 -08:00
Andrew Waterman 2aee85cb11 Flush pipeline from MEM stage
This means we no longer have to rely on the instruction behind a serializing
instruction being valid, simplifying the control.  But we have to be a
little more cautious when flusing the I$/ITLB/BTB.
2015-01-04 16:40:16 -08:00
Andrew Waterman 94b75c7cb1 Continue refactoring control 2015-01-04 15:32:05 -08:00
Andrew Waterman 6181de4cc9 Much refactor, so control 2015-01-03 13:34:38 -08:00