1. 20 6月, 2022 1 次提交
  2. 26 5月, 2022 1 次提交
  3. 11 5月, 2022 1 次提交
    • W
      Fix vcs simulation support, support manually set ram_size (#1551) · 25ac26c6
      William Wang 提交于
      * difftest: disable runahead to make vcs happy
      
      * difftest: bump huancun to make vcs happy
      
      * difftest: bump difftest and ready-to-run
      
      * difftest support ramsize and paddr base config
      * 8GB/16GB nemu so are provided by ready-to-run
      
      * ci: update nightly ci, manually set ram_size
      
      * difftest: bump huancun to make vcs happy
      
      * difftest,nemu: support run-time assign mem size
      
      * ci: polish nightly ci script
      25ac26c6
  4. 28 4月, 2022 1 次提交
    • Y
      core,rob: support the WFI instruction · b6900d94
      Yinan Xu 提交于
      The RISC-V WFI instruction is previously decoded as NOP. This commit
      adds support for the real wait-for-interrupt (WFI).
      
      We add a state_wfi FSM in the ROB. After WFI leaves the ROB, the next
      instruction will wait in the ROB until an interrupt.
      b6900d94
  5. 14 2月, 2022 1 次提交
  6. 05 1月, 2022 1 次提交
    • L
      Debug mode: various bug fixes (#1412) · d7dd1af1
      Li Qianruo 提交于
      * Reduce trigger hit wires that goes into exceptiongen
      * Fix frontend triggers rewriting hit wire
      * Retrieved some accidentally dropped changes in branch dm-debug (mainly fixes to debug mode)
      * Fix dmode in tdata1
      * Fix ebreaks not causing exception in debug mode
      * Fix dcsr field bugs
      * Fix faulty distributed tEnable
      * Fix store triggers not using vaddr
      * Fix store trigger rewriting hit vector
      * Initialize distributed tdata registers in MemBlock and Frontend to zero
      * Fix load trigger select bit in mcontrol
      * Fix singlestep bit valid in debug mode
      * Mask all interrupts in debug mode
      d7dd1af1
  7. 20 12月, 2021 1 次提交
  8. 18 12月, 2021 1 次提交
  9. 16 12月, 2021 1 次提交
    • J
      Fix false hit bug after IFU timing optimization (#1367) · a1351e5d
      Jay 提交于
      * fix invalidTakenFault use wrong seqTarget
      
      * IFU: fix oversize bug
      
      * ctrl: mark all flushes as level.flush for frontend
      
      This commit changes how flushes behave for frontend.
      
      When ROB commits an instruction with a flush, we notify the frontend
      of the flush without the commit.
      
      Flushes to frontend may be delayed by some cycles and commit before
      flush causes errors. Thus, we make all flush reasons to behave the
      same as exceptions for frontend, that is, RedirectLevel.flush.
      
      * IFU: exclude lastTaken situation when judging beyond fetch
      Co-authored-by: NYinan Xu <xuyinan@ict.ac.cn>
      a1351e5d
  10. 15 12月, 2021 1 次提交
    • Y
      rename: add fused lui and load (#1356) · fd7603d9
      Yinan Xu 提交于
      This commit adds fused load support by bypassing LUI results to load.
      
      For better timing, detection is done at the rename stage. Imm is stored
      in psrc(1), psrc(0) and imm.
      fd7603d9
  11. 11 12月, 2021 1 次提交
    • Y
      core: delay csrCtrl for two cycles (#1336) · 6f688dac
      Yinan Xu 提交于
      This commit adds DelayN(2) to some CSR-related signals, including
      control bits to ITLB, DTLB, PTW, etc.
      
      To avoid accessing the ITLB before control bits change, we also need
      to delay the flush for two cycles. We assume branch misprediction or
      memory violation does not cause csrCtrl to change.
      6f688dac
  12. 10 12月, 2021 1 次提交
  13. 09 12月, 2021 1 次提交
    • Y
      core: refactor writeback parameters (#1327) · 6ab6918f
      Yinan Xu 提交于
      This commit adds WritebackSink and WritebackSource parameters for
      multiple modules. These traits hide implementation details from
      other modules by defining IO-related functions in modules.
      
      By using WritebackSink, ROB is able to choose the writeback sources.
      Now fflags and exceptions are connected from exe units to reduce write
      ports and optimize timing.
      
      Further optimizations on write-back to RS and better coding style to
      be added later.
      6ab6918f
  14. 05 12月, 2021 1 次提交
  15. 23 11月, 2021 1 次提交
    • W
      mem,mdp: use robIdx instead of sqIdx (#1242) · 980c1bc3
      William Wang 提交于
      * mdp: implement SSIT with sram
      
      * mdp: use robIdx instead of sqIdx
      
      Dispatch refactor moves lsq enq to dispatch2, as a result, mdp can not
      get correct sqIdx in dispatch. Unlike robIdx, it is hard to maintain a
      "speculatively assigned" sqIdx, as it is hard to track store insts in
      dispatch queue. Yet we can still use "speculatively assigned" robIdx
      for memory dependency predictor.
      
      For now, memory dependency predictor uses "speculatively assigned"
      robIdx to track inflight store.
      
      However, sqIdx is still used to track those store which's addr is valid
      but data it not valid. When load insts try to get forward data from
      those store, load insts will get that store's sqIdx and wait in RS.
      They will not waken until store data with that sqIdx is issued.
      
      * mdp: add track robIdx recover logic
      980c1bc3
  16. 16 11月, 2021 1 次提交
    • J
      Fix multi-core dedup bug (#1235) · 5668a921
      Jiawei Lin 提交于
      * FDivSqrt: use hierarchy API to avoid dedup bug
      
      * Dedup: use hartId from io port instead of core parameters
      
      * Bump fudian
      5668a921
  17. 24 10月, 2021 1 次提交
  18. 23 10月, 2021 1 次提交
  19. 16 10月, 2021 2 次提交
    • Y
      rename: support full-featured move elimination (#1123) · 70224bf6
      Yinan Xu 提交于
      This commit optimizes the move elimination implementation.
      
      Reference counting for every physical register is recorded. Originally
      0-31 registers have counters of ones. Every time the physical register
      is allocated or deallocated, the counter is increased or decreased by
      one. When the counter becomes zero from a non-zero value, the register
      is freed and released to freelist.
      70224bf6
    • Y
      core: use redirect ports for flush (#1121) · f4b2089a
      Yinan Xu 提交于
      This commit removes flush IO for every module. Flush now re-uses
      redirect ports to flush the instructions.
      f4b2089a
  20. 13 10月, 2021 1 次提交
  21. 10 10月, 2021 1 次提交
    • Y
      renameTable: optimize read and write timing (#1101) · 7fa2c198
      Yinan Xu 提交于
      This commit optimizes RenameTable's timing.
      
      Read addresses come from instruction buffer directly and has best
      timing. So we let data read at decode stage and bypass write data
      from this clock cycle to the read data at next cycle.
      
      For write, we latch the write request and process it at the next cycle.
      7fa2c198
  22. 09 10月, 2021 1 次提交
    • W
      Add runahead debug signals (#1082) · 20edb3f7
      William Wang 提交于
      * runahead: add runahead support (WIP)
      
      * runahead: fix redirect event
      
      * difftest: bump difftest
      
      * runahead: bump version
      
      Note: current runahead does not support instruction fusion, disable that
      in XiangShan if runahead is needed
      
      * runahead: bump version
      
      * difftest: bump version to support runahead
      
      * chore: bump huancun to make ci happy
      
      * chore: fix wrong submodule url
      
      * difftest: bump version
      
      BREAKING CHANGE: nemu update_config api has changed
      20edb3f7
  23. 01 10月, 2021 1 次提交
    • Y
      core: update parameters and module organizations (#1080) · 2b4e8253
      Yinan Xu 提交于
      This commit moves load/store reservation stations into the first
      ExuBlock (or calling it IntegerBlock). The unnecessary dispatch module
      is also removed from CtrlBlock.
      
      Now the module organization becomes:
      * ExuBlock: Int RS, Load/Store RS, Int RF, Int FUs
      * ExuBlock_1: Fp RS, Fp RF, Fp FUs
      * MemBlock: Load/Store FUs
      
      Besides, load queue has 80 entries and store queue has 64 entries now.
      2b4e8253
  24. 28 9月, 2021 1 次提交
  25. 19 9月, 2021 1 次提交
    • Y
      core: add timer counters for important stages (#1045) · ebb8ebf8
      Yinan Xu 提交于
      This commit adds timer counters for some important pipeline stages,
      including rename, dispatch, dispatch2, select, issue, execute, commit.
      We add performance counters for different types of instructions to see
      the latency in different pipeline stages.
      ebb8ebf8
  26. 13 9月, 2021 1 次提交
    • Y
      backend: clean up exception vector usages (#1026) · c88c3a2a
      Yinan Xu 提交于
      This commit cleans up exception vector usages in backend.
      
      Previously the exception vector will go through the pipeline with the
      uop. However, instructions with exceptions will enter ROB when they are
      dispatched. Thus, actually we don't need the exception vector when an
      instruction enters a function unit.
      
      * exceptionVec, flushPipe, replayInst are reset when an instruction
      enters function units.
      
      * For execution units that don't have exceptions, we reset their output
      exception vectors to avoid ROB to record them.
      
      * Move replayInst to CtrlSignals.
      c88c3a2a
  27. 02 9月, 2021 2 次提交
  28. 01 9月, 2021 1 次提交
  29. 21 8月, 2021 2 次提交
    • Y
      backend, rename: support move elimination (#920) · 8b8e745d
      YikeZhou 提交于
      * Bundle, Rename: Add some comments
      FreeList, RenameTable: Comment out unused variables
      
      * refcnt: Implement AdderTree for reference counter
      
      * build.sc: add testOne method for unit test
      
      * AdderTest: add testbench for Adder (passed)
      
      * AdderTree: Add testbench for AdderTree (passed)
      
      * ReferenceCounter: implement a 2-bit counter
      
      * Rename: remove redundant code
      
      * Rename: prepared for move elimination [WIP]
      
      * Roq: add eliminated move bit in roq entry;
        label elim move inst as writebacked
      AlternativeFreeList: new impl for int free list
      Rename: change io of free list
      Dispatch1: (todo) not send move to intDq
      Bundle: add eliminatedMove bit in roqCommitInfo, uop and debugio
      ReferenceCounter: add debug print msg
      
      * Dispatch1: [BUG FIX] not send move inst to IntDq
      
      * DecodeUnit: [BUG FIX] differentiate li from mv
      
      * Bug fix:
        1. Dispatch1: should not label pdest of move as busy in busy table
        2. Rename: use psrc0 to index bit vec isMax
        3. AlternativeFreeList: fix maxVec calculation logic and ref counter
           increment logic
      Besides, more debug info and assertions were added.
      
      * AlternativeFreeList Bug Fix:
        1. add redirect input - shouldn't allocate reg when redirect is
           valid
        2. handle duplicate preg in roqCommits in int free list
      
      * AlternativeFreeList: Fix value assignment race condition
      
      * Rename: Fix value assignment race condition too
      
      * RenameTable: refactor spec/arch table write process
      
      * Roq: Fix debug_exuData of move(addi) instruction
        (it was trash data before because move needn't enter exu)
      
      * Rename: change intFreeList's redirect process
        (by setting headPtr back) and flush process
      
      * ME: microbench & coremark & linux-hello passed
        1. DecodeUnit: treat `mv x,x` inst as non-move
        2. AlternativeFreeList: handle duplicate walk req correctly
        3. Roq: fix debug_exuData bug (make sure writeback that updates
      debug_exuData happens before ME instruction in program order)
      
      * AlternativeFreeList: License added
      build.sc: remove unused config
      Others: comments added
      
      * package rename: remove unused modules
      
      * Roq: Replace debug_prf with a cleaner fix method
      
      * Disp1/AltFL/Rename: del unnecessary white spaces
      
      * build.sc: change stack size
      AlternativeFreeList: turn off assertions
      
      * build.sc: change stack size for test
      8b8e745d
    • L
      ftq, ctrlblock: code clean ups · 5e63d5cb
      Lingrui98 提交于
      5e63d5cb
  30. 20 8月, 2021 1 次提交
    • W
      mem: loadpipe will not miss if fullForward succeed · 3db2cf75
      William Wang 提交于
      New option `EnableFastForward` is added to config list.
      EnableFastForward will reduce L1D$ miss but make timing worse.
      
      * `forwardMaskFast` is generated at load_s1, it is used to generate
      fastUop for fast wakeup
      * `forwardMask` is generated at load_s2, it will be used to check if
      forward result is correct
      3db2cf75
  31. 19 8月, 2021 1 次提交
    • L
      core: add basic debug mode features (#918) · d4aca96c
      lqre 提交于
      Basic features of debug mode are implemented.
      
      * Rewrite CSR for debug mode
      * Peripheral work for implementing debug module
      * Added single step support
      * Use difftest with JTAG support
      d4aca96c
  32. 16 8月, 2021 2 次提交
  33. 02 8月, 2021 1 次提交
  34. 31 7月, 2021 1 次提交
    • Z
      bpu: Add Tage · 8a597714
      zoujr 提交于
      Add Tage into Composer
      Add global history manage logic in BPU
      Modify CfiUpdate interface: sawNotTakenBranch -> br_hit
      8a597714
  35. 29 7月, 2021 1 次提交
  36. 24 7月, 2021 1 次提交