Merge pull request #208 from paulusmack/faster
authorMichael Neuling <mikey@neuling.org>
Fri, 19 Jun 2020 01:50:47 +0000 (11:50 +1000)
committerGitHub <noreply@github.com>
Fri, 19 Jun 2020 01:50:47 +0000 (11:50 +1000)
commitb90a0a2139df87ff16e2d8f085068ee95f4a1f15
tree2ed40cf9d68b031521bde73dedb2a69296bea9f0
parent1fedc7a86adedc145c8fab6f8984e38607db8e4a
parent64efd494e512d7a962896ebdfc38817880d0d281
Merge pull request #208 from paulusmack/faster

Make the core go faster

Several major improvements in here:
- Simple branch predictor
- Reduced latency for mispredicted branches and interrupts by removing fetch2 stage
- Cache improvements
  o Request critical dword first on refill
  o Handle hits while refilling, including on line being refilled
  o Sizes doubled for both D and I
- Loadstore improvements: can now do one load or store every two cycles in most cases
- Optimized 2-cycle multiplier for Xilinx 7-series parts using DSP slices
- Timing improvements, including:
  o Stash buffer in decode1
  o Reduced width of execute1 result mux
  o Improved SPR decode in decode1
  o Some non-critical operation take a cycle longer so we can break some long combinatorial chains
- Core logging: logs 256 bits of info every cycle into a ring buffer, to help with debugging and performance analysis

This increases the LUT usage for the "synth" + A35 target from 9182 to 10297 = 12%.
fpga/top-arty.vhdl
soc.vhdl