1. 20 6月, 2022 1 次提交
  2. 18 6月, 2022 1 次提交
    • Y
      decode: do not set lsrc of LUI for better timing (#1586) · a19215dd
      Yinan Xu 提交于
      This commit changes the lsrc/psrc of LUI in dispatch instead of
      decode to optimize the timing of lsrc in DecodeStage, which is
      critical for rename table.
      
      lsrc/ldest should be directly get from instr for the timing. Fused
      instructions change lsrc/ldest now, which will be optimized later.
      a19215dd
  3. 31 5月, 2022 1 次提交
  4. 26 5月, 2022 1 次提交
  5. 11 5月, 2022 2 次提交
    • 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
    • Y
      rob: don't set hasWFI if there're exceptions (#1550) · d2df63c3
      Yinan Xu 提交于
      An instruction with exceptions may have arbitrary instr values and
      may be decoded into WFI instructions, which cause errors.
      d2df63c3
  6. 09 5月, 2022 1 次提交
  7. 06 5月, 2022 1 次提交
    • H
      feat: parameterize load store (#1527) · 46f74b57
      Haojin Tang 提交于
      * feat: parameterize load/store pipeline, etc.
      
      * fix: use LoadPipelineWidth rather than LoadQueueSize
      
      * fix: parameterize `rdataPtrExtNext`
      
      * SBuffer: fix idx update logic
      
      * atomic: parameterize atomic logic in `MemBlock`
      
      * StoreQueue: update allow enque requirement
      
      * feat: support one load/store pipeline
      
      * feat: parameterize `EnsbufferWidth`
      
      * chore: resharp codes for better generated name
      46f74b57
  8. 05 5月, 2022 1 次提交
    • Y
      csr: init status.fs to 01 · 80dd83d8
      Yinan Xu 提交于
      XiangShan does not support fs=0 because when fs=0, all floating-point
      states are not accessible. Spike supports fs=0. To diff with Spike,
      we temporarily set fs to 1 when initialized.
      80dd83d8
  9. 04 5月, 2022 2 次提交
  10. 29 4月, 2022 1 次提交
  11. 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
  12. 25 4月, 2022 2 次提交
  13. 02 4月, 2022 1 次提交
    • W
      mem: reduce refill to use latency (#1401) · 09203307
      William Wang 提交于
      * mem: optimize missq reject to lq timing
      
      DCache replay request is quite slow to generate, as it need to compare
      load address with address in all valid miss queue entries.
      
      Now we delay the usage of replay request from data cache.
      Now replay request will not influence normal execuation flow until
      load_s3 (1 cycle after load_s2, load result writeback to RS).
      
      It is worth mentioning that "select refilling inst for load
      writeback" will be disabled if dcacheRequireReplay in the
      last cycle.
      
      * dcache: compare probe block addr instead of full addr
      
      * mem: do not replay from RS when ldld vio or fwd failed
      
      ld-ld violation or forward failure will let an normal load inst replay
      from fetch. If TLB hit and ld-ld violation / forward failure happens,
      we write back that inst immediately. Meanwhile, such insts will not be
      replayed from rs.
      
      It should fix "mem: optimize missq reject to lq timing"
      
      * mem: fix replay from rs condition
      
      * mem: reduce refill to use latency
      
      This commit update lq entry flag carefully in load_s3 to avoid extra
      refill delay. It will remove the extra refill delay introduced by #1375
      without harming memblock timing.
      
      In #1375, we delayed load refill when dcache miss queue entry fails
      to accept a miss. #1375 exchanges performance for better timing.
      
      * mem: fix rs feedback priority
      
      When dataInvalid && mshrFull, a succeed refill should not cancel
      rs replay.
      09203307
  14. 31 3月, 2022 1 次提交
  15. 24 2月, 2022 2 次提交
  16. 14 2月, 2022 1 次提交
  17. 23 1月, 2022 2 次提交
  18. 14 1月, 2022 1 次提交
  19. 09 1月, 2022 1 次提交
  20. 07 1月, 2022 4 次提交
  21. 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
  22. 01 1月, 2022 2 次提交
  23. 30 12月, 2021 1 次提交
  24. 29 12月, 2021 3 次提交
    • J
      ICache: add parity check enable and prefetch enable control registers (#1406) · ecccf78f
      Jay 提交于
      * Add Prefetch and Parity enable register for ICache
      
      * Add ICache parity enable control for pipe
      ecccf78f
    • L
      c7f0997b
    • Y
      dispatch: block enq when previous instructions have exception (#1400) · 3a6db8a3
      Yinan Xu 提交于
      This commit adds blocking logic for instructions when they enter
      dispatch queues. If previous instructions have exceptions, any
      following instructions should be enter dispatch queue.
      
      Consider the following case. If uop(0) has an exception and is a load.
      If uop(1) does not have an exception and is a load as well. Then the
      allocation logic in dispatch queue will allocate an entry for both
      uop(0) and uop(1). However, uop(0) will not set enq.valid and leave
      the entry in dispatch queue empty. uop(1) will be allocated in dpq.
      In dispatch queue, pointers are updated according to the real number
      of instruction enqueue, which is one. While the second is actually
      allocated. This causes errors.
      3a6db8a3
  25. 28 12月, 2021 1 次提交
    • W
      mem: refactor l1 error implementation (#1391) · 9ef181f4
      William Wang 提交于
      * dcache: add source info in L1CacheErrorInfo
      
      * ICache: fix valid signal and add source/opType
      
      * dcache: fix bug in ecc error
      
      * mem,csr: send full L1CacheErrorInfo to CSR
      
      * icache: provide cache error info for CSR
      
      * dcache: force resp hit if tag ecc error happens
      
      * mem: reorg l1 cache error report path
      
      Now dcache tag error will force trigger a hit
      
      * dcache: fix readline ecc check error
      
      * dcache: mainpipe will not be influenced by tag error
      
      * dcache: fix data ecc check error
      
      * dcache: if coh state is Nothing, do not raise error
      Co-authored-by: Nzhanglinjuan <zhanglinjuan20s@ict.ac.cn>
      Co-authored-by: NJinYue <jinyue20s@ict.ac.cn>
      9ef181f4
  26. 26 12月, 2021 1 次提交
  27. 24 12月, 2021 1 次提交
  28. 22 12月, 2021 1 次提交
    • W
      mem: optimize missq reject to lq timing (#1375) · 6b6d88e6
      William Wang 提交于
      * mem: optimize missq reject to lq timing
      
      DCache replay request is quite slow to generate, as it need to compare
      load address with address in all valid miss queue entries.
      
      Now we delay the usage of replay request from data cache.
      Now replay request will not influence normal execution flow until
      load_s3 (1 cycle after load_s2, load result writeback to RS).
      
      Note1: It is worth mentioning that "select refilling inst for load
      writeback" will be disabled if dcacheRequireReplay in the
      last cycle.
      
      Note2: ld-ld violation or forward failure will let an normal load inst replay
      from fetch. If TLB hit and ld-ld violation / forward failure happens,
      we write back that inst immediately. Meanwhile, such insts will not be
      replayed from rs.
      
      * dcache: compare probe block addr instead of full addr
      6b6d88e6
  29. 21 12月, 2021 1 次提交
    • Y
      lsq: add LsqEnqCtrl to optimize enqueue timing (#1380) · 10551d4e
      Yinan Xu 提交于
      This commit adds an LsqEnqCtrl module to add one more clock cycle
      between dispatch and load/store queue.
      
      LsqEnqCtrl maintains the lqEnqPtr/sqEnqPtr and lqCounter/sqCounter.
      They are used to determine whether load/store queue can accept new
      instructions. After that, instructions are sent to load/store queue.
      This module decouples queue allocation and real enqueue.
      
      Besides, uop storage in load/store queue are optimized. In dispatch,
      only robIdx is required. Other information is naturally conveyed in
      the pipeline and can be stored later in load/store queue if needed.
      For example, exception vector, trigger, ftqIdx, pdest, etc are
      unnecessary before the instruction leaves the load/store pipeline.
      10551d4e