Commit graph

2223 commits

Author SHA1 Message Date
Sven Stucki
3a992372d6 Merge branch 'rvc18'
Adds support for the updated RVC extension. The spec is not final yet, but the
compiler already supports and uses it. This update makes it possible to use
the most up-to-date compiler version.
2015-09-25 13:19:41 +02:00
Andreas Traber
1aa8b78a73 Prefetcher now tells the core when it is safe to shut down 2015-09-24 16:32:17 +02:00
Andreas Traber
4571bc30ae Make instr_addr_o in prefetcher independent of instr_rvalid_i 2015-09-24 13:20:11 +02:00
Andreas Traber
efb607a792 Fix exception problem after stages are more independent 2015-09-24 13:16:18 +02:00
Andreas Traber
415546609e Simplify rdata output from prefetcher, we can simply use the higher part
of rdata_o for rdata_unaligned_o, it's the same after all, always
2015-09-24 09:59:04 +02:00
Andreas Traber
2f89182e8b Clear prefetch bit when branch is incoming 2015-09-24 09:32:28 +02:00
Andreas Traber
cc90e85471 Fix RVC handling in prefetch_L0_buffer
The code is not so nice and should be further cleaned up
2015-09-23 17:25:15 +02:00
Andreas Traber
b41b2a697d Further cleanups, try to make the code a bit easier to understand... 2015-09-23 17:25:15 +02:00
Flo Zaruba
d988f06f0e Fixed synopsis syntax error 2015-09-23 15:44:03 +02:00
Andreas Traber
88614ea124 Fix id_valid signal propagation to exception controller 2015-09-23 15:33:02 +02:00
Andreas Traber
a3256c4df2 Fix small error in prefetcher where GNT occur one cycle after we wanted
to prefetch
2015-09-23 15:32:30 +02:00
Sven Stucki
b5c885b027 Cleanup compressed decoder 2015-09-23 14:12:34 +02:00
Sven Stucki
6ececfc676 Update compressed_decoder to RVC v1.8 2015-09-23 14:11:42 +02:00
Andreas Traber
9ceeb15bc8 This fixes the instruction fetch miss performance counter 2015-09-22 16:35:16 +02:00
Andreas Traber
072cd65e65 Change indentation of prefetch buffer to match RI5CYs style 2015-09-22 12:50:28 +02:00
Andreas Traber
74f5d5c0a4 Integrated prefetch_L0_buffer from Igor
We can now pass icache lines directly to the core
2015-09-22 11:14:16 +02:00
Andreas Traber
49f7249b0a Decentralize stall control
Stall control for IF/ID pipeline is not yet ideal though, we could still
gain one or two cycles there
2015-09-21 18:26:08 +02:00
Andreas Traber
e98e47b9e5 Something went wrong in the cherry-pick, remove remains of timer
Rename decoder to riscv_decoder to avoid naming conflicts with hwpe
2015-09-18 13:12:56 +02:00
Flo Zaruba
90cc39a9ca Exception controller update 2015-09-17 13:52:11 +02:00
Flo Zaruba
d274068643 Cherry pick 1 2015-09-17 13:51:54 +02:00
Andreas Traber
8fe67b303d Run through linter and do some cleanup 2015-09-15 13:08:26 +02:00
Andreas Traber
9858caff47 Separated decoder and controller and cleanup 2015-09-15 12:52:15 +02:00
Andreas Traber
d27a2a3f63 Various debug related improvements
Implemented c.ebreak instruction
Debugging with rvc seems to work properly now
2015-09-15 09:46:04 +02:00
Andreas Traber
10ae9df25a Remove movhi ALU opcode, it is of no use for RI5CY 2015-09-14 15:53:17 +02:00
Andreas Traber
d2a549bfae Fix misaligned access, they did not correctly forward and used the wrong
increment...
2015-09-14 12:46:46 +02:00
Andreas Traber
1b2a80e7c9 Oops... is_compressed can of course no longer be generated in id stage
but must be pipelined from if stage
2015-09-11 17:42:15 +02:00
Andreas Traber
52d3608a93 Simplify exception controller and make sure external IRQs work as well 2015-09-11 14:06:38 +02:00
Andreas Traber
0608b98440 Make illegal instruction exceptions work again 2015-09-11 13:14:56 +02:00
Andreas Traber
e41c7b96be Change LSU to use correct protocol
With prefetching there is no long path to the icache anymore starting
from the LSU, so this modification is no longer critical
2015-09-10 13:12:19 +02:00
Andreas Traber
6fb05eab34 Rename instr_core_intf to prefetch_buffer, add if_busy signal again 2015-09-10 13:12:19 +02:00
Andreas Traber
84ea2c90ee Fix aborting on instr core interface 2015-09-10 13:12:19 +02:00
Andreas Traber
463e74cf05 Only stall IF fsms when absolutely necessary
This should take care of our synthesis issues (hopefully)
2015-09-10 13:12:19 +02:00
Andreas Traber
847b652ce5 Change IF fifo depth to 3 to get performance from old IF back 2015-09-10 13:12:19 +02:00
Andreas Traber
db82a7ab8e Fix problem with unaligned compressed access 2015-09-10 13:12:19 +02:00
Andreas Traber
e0ea57968b Prefetcher basically done, works in pulpino without rvc 2015-09-10 13:12:19 +02:00
Andreas Traber
79bce5b31b Add a basic datasheet for RI5CY
Not very detailed yet, needs a lot of work still
2015-09-09 18:35:07 +02:00
Andreas Traber
b347299f31 Move compressed decoder/expander to IF stage
I.e. the decoder is now before the IF/ID pipeline
It turns out there is enough timing budget to put it there and thus it
simplifies timing in the ID stage
2015-09-08 19:33:10 +02:00
Sven Stucki
f5e1020f57 Add performance counter for compressed instructions 2015-09-08 17:24:39 +02:00
Andreas Traber
a330a8fe70 Improve inline comments in if_stage 2015-09-07 16:02:32 +02:00
Sven Stucki
216362365c Fix hwloop we 2015-09-07 11:53:21 +02:00
Sven Stucki
c2b519786b Merge branch 'hwloops' 2015-09-07 03:41:28 +02:00
Sven Stucki
b5aea15659 Finish hwloops addition 2015-09-07 03:40:28 +02:00
Sven Stucki
82afb4c839 Remove another unnecessary signal 2015-09-05 18:15:18 +02:00
Sven Stucki
24f0a588f5 More cleanup, remove unused signal 2015-09-05 16:33:51 +02:00
Sven Stucki
f9d0911329 Cleanup ID 2015-09-05 16:00:41 +02:00
Sven Stucki
a6dc8271e9 Wire up hwloops correctly, other small fixes 2015-09-05 03:37:50 +02:00
Andreas Traber
4f06b67e65 Simplify instr core interface 2015-09-04 15:52:35 +02:00
Andreas Traber
adb40aef43 Make instr_req_o signal dependent only on state
=> removes ~1 gate from critical path and simplifies paths through i$
This will cost one cycle when waking up from sleep though :-/
2015-09-04 13:54:19 +02:00
Sven Stucki
87e2eec128 Move hwloop regs into ID stage, WIP 2015-09-03 13:39:11 +02:00
Sven Stucki
77ef44a82f Separate jump target calculation from jump_in_id 2015-09-03 02:08:48 +02:00