Andrew Waterman and GitHub
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 Waterman and Henry 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 Waterman and GitHub
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 Waterman and GitHub
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 Waterman and GitHub
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 Waterman and GitHub
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 Waterman and GitHub
efdb418559
Merge pull request #1098 from freechipsproject/frontend
...
Frontend improvements
2017-11-09 17:44:38 -08:00
Andrew Waterman and GitHub
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 Waterman and GitHub
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 Waterman and GitHub
7bef935d2a
Don't emit PTW covers when !usingVM
2017-11-03 15:03:27 -07:00
Andrew Waterman and GitHub
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 Waterman and GitHub
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 Waterman and GitHub
b2bc46471b
Conditionalize some covers that are sometimes impossible ( #1043 )
2017-10-10 17:14:33 -07:00
Andrew Waterman and GitHub
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 Waterman and GitHub
a9686ab883
Merge pull request #1035 from freechipsproject/big-paddr
...
Fix paddrBits < xLen && paddrBits == vaddrBits case
2017-10-09 20:59:21 -07:00
Andrew Waterman and GitHub
d78ad857ee
Merge pull request #1034 from freechipsproject/base-tile
...
Generalize Tile/Coreplex hierarchy
2017-10-09 11:42:20 -07:00
Andrew Waterman and GitHub
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 Waterman and GitHub
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 Waterman and GitHub
32fda51a2c
Get rid of paddrBits from SystemBus ( #1029 )
2017-10-04 12:11:37 -07:00
Andrew Waterman and GitHub
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 Waterman and GitHub
5b2f458214
Merge branch 'master' into ma-fetch
2017-09-20 12:18:03 -07:00
Andrew Waterman and GitHub
f1a506476b
Merge pull request #994 from freechipsproject/beu
...
Add L1 bus-error unit
2017-09-20 12:17:08 -07:00
Andrew Waterman and GitHub
acea94bcef
Merge pull request #1001 from freechipsproject/address-decoder
...
Address decoder "improvements"
2017-09-19 22:38:53 -07:00
Andrew Waterman and GitHub
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 Waterman and GitHub
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 Waterman and GitHub
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 Waterman and GitHub
e945f6e265
Merge pull request #955 from freechipsproject/fix-acquire-before-release
...
Fix acquire before release
2017-08-13 18:29:58 -07:00
Andrew Waterman and GitHub
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 Waterman and GitHub
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 Waterman and GitHub
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 Waterman and GitHub
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 Waterman and GitHub
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 Waterman and GitHub
7fd8bb1159
Merge pull request #928 from freechipsproject/critical-paths
...
Critical paths
2017-08-06 18:50:59 -07:00
Andrew Waterman and GitHub
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 Waterman and GitHub
7937db0c84
Merge pull request #919 from freechipsproject/imiss-perf-counter
...
Fix I$ miss perfctr
2017-08-04 01:04:23 -07:00
Andrew Waterman and GitHub
ba4eecc0f0
Use UIntToOH1 ( #921 )
...
Closes #920
2017-08-03 14:55:39 -07:00
Andrew Waterman and GitHub
1be1433f04
Merge pull request #918 from freechipsproject/icache-prefetch
...
Icache prefetch
2017-08-02 21:22:20 -07:00
Andrew Waterman and GitHub
d66e8f8e80
Merge pull request #914 from freechipsproject/critical-paths
...
Fix some critical paths
2017-08-02 19:05:31 -07:00
Andrew Waterman and GitHub
27d5557177
Merge pull request #891 from freechipsproject/fix-l2-tlb
...
Fix L2 TLB
2017-07-26 09:43:16 -07:00
Andrew Waterman and GitHub
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 Waterman and GitHub
a0cbc376b4
Merge pull request #849 from freechipsproject/l2-tlb
...
L1 memory system improvements
2017-07-06 13:03:06 -07:00
Andrew Waterman and GitHub
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 Waterman and GitHub
ec9fbe26d8
Merge pull request #843 from freechipsproject/tag-ecc
...
Add tag ECC to D$
2017-07-04 16:20:11 -07:00
Andrew Waterman and GitHub
936096dd42
Merge pull request #826 from freechipsproject/tlb2
...
Various memory system improvements
2017-06-28 13:51:24 -07:00
Andrew Waterman and GitHub
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 Waterman and GitHub
f396b4142d
Merge pull request #806 from freechipsproject/mulh
...
Improve integer mul/div
2017-06-20 13:01:16 -07:00
Andrew Waterman and GitHub
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 Waterman and GitHub
e69badb205
Merge pull request #791 from freechipsproject/tlb
...
Fix I$ reset regression
2017-06-09 15:49:25 -07:00
Andrew Waterman and GitHub
5a4daebbcc
minNum -> minimumNumber ( #766 )
2017-06-08 11:12:52 -07:00
Andrew Waterman and GitHub
8cb250cfe6
Fix FMUL sign, again ( #789 )
2017-06-08 01:50:00 -07:00
Andrew Waterman and GitHub
d45fc0d670
Merge pull request #785 from freechipsproject/fmul-fix
...
Fix FMUL sign of zero
2017-06-06 00:46:03 -07:00
Andrew Waterman and GitHub
efce8f06b8
Merge pull request #769 from freechipsproject/new-div-sqrt
...
Incorporate new div/sqrt unit
2017-06-03 03:58:52 -07:00
Andrew Waterman and GitHub
618468a06b
Make plusarg_reader default args work with VCS ( #765 )
...
Resolves #764
2017-05-24 21:38:56 -07:00
Andrew Waterman and Henry Cook
dbc5e7c494
Add TLB miss performance counters ( #762 )
2017-05-23 12:52:25 -07:00
Andrew Waterman and Henry Cook
b2b4c1abcd
Separate tag ECC and data ECC options ( #761 )
2017-05-23 12:51:48 -07:00
Andrew Waterman and GitHub
3a9bbd7e58
Merge branch 'master' into vectored-stvec
2017-05-08 14:08:09 -07:00
Andrew Waterman and GitHub
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 Waterman and Yunsup Lee
4efcb5a139
Increase frontend decoupling ( #722 )
...
Reduce pathological RVC stalls
2017-05-03 07:54:46 -07:00
Andrew Waterman and Yunsup 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 Waterman and GitHub
9b688ce7e2
Merge pull request #707 from ucb-bar/itim
...
ITIM
2017-04-28 02:55:01 -07:00
Andrew Waterman and Wesley 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 Waterman and Henry 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