1. 06 2月, 2023 2 次提交
  2. 05 2月, 2023 4 次提交
  3. 04 2月, 2023 1 次提交
  4. 19 1月, 2023 1 次提交
  5. 18 1月, 2023 1 次提交
  6. 16 1月, 2023 1 次提交
  7. 12 1月, 2023 1 次提交
  8. 11 1月, 2023 2 次提交
  9. 04 1月, 2023 1 次提交
    • Maxpicca's avatar
      dcache: setup way predictor framework (#1857) · 144422dc
      Maxpicca 提交于
      This commit sets up a basic dcache way predictor framework and a dummy predictor.
      A Way Predictor Unit (WPU) module has been added to dcache. Dcache data SRAMs
      have been reorganized for that. 
      
      The dummy predictor is disabled by default. 
      
      Besides, dcache bank conflict check has been optimized. It may cause timing problems,
      to be fixed in the future.
      
      * ideal wpu
      
      * BankedDataArray: change architecture to reduce bank_conflict
      
      * BankedDataArray: add db analysis
      
      * Merge: the rest
      
      * BankedDataArray: change the logic of rrl_bank_conflict, but let the number of rw_bank_conflict up
      
      * Load Logic: changed to be as expected
      
      reading data will be delayed by one cycle to make selection
      writing data will be also delayed by one cycle to do write operation
      
      * fix: ecc check error
      
      * update the gitignore
      
      * WPU: add regular wpu and change the replay mechanism
      
      * WPU: fix refill fail bug, but a new addiw fail bug appears
      
      * WPU: temporarily turn off to PR
      
      * WPU: tfix all bug
      
      * loadqueue: fix the initialization of replayCarry
      
      * bankeddataarray: fix the bug
      
      * DCacheWrapper: fix bug
      
      * ready-to-run: correct the version
      
      * WayPredictor: comments clean
      
      * BankedDataArray: fix ecc_bank bug
      
      * Parameter: set the enable signal of wpu
      144422dc
  10. 03 1月, 2023 1 次提交
  11. 02 1月, 2023 3 次提交
  12. 28 12月, 2022 1 次提交
    • H
      lq: Remove LQ data (#1862) · 683c1411
      happy-lx 提交于
      This PR remove data in lq.
      
      All cache miss load instructions will be replayed by lq, and the forward path to the D channel
      and mshr is added to the pipeline.
      Special treatment is made for uncache load. The data is no longer stored in the datamodule
      but stored in a separate register. ldout is only used as uncache writeback, and only ldout0
      will be used. Adjust the priority so that the replayed instruction has the highest priority in S0.
      
      Future work:
      1. fix `milc` perf loss
      2. remove data from MSHRs
      
      * difftest: monitor cache miss latency
      
      * lq, ldu, dcache: remove lq's data
      
      * lq's data is no longer used
      * replay cache miss load from lq (use counter to delay)
      * if dcache's mshr gets refill data, wake up lq's missed load
      * uncache load will writeback to ldu using ldout_0
      * ldout_1 is no longer used
      
      * lq, ldu: add forward port
      
      * forward D and mshr in load S1, get result in S2
      * remove useless code logic in loadQueueData
      
      * misc: revert monitor
      683c1411
  13. 25 12月, 2022 1 次提交
  14. 21 12月, 2022 2 次提交
  15. 15 12月, 2022 1 次提交
  16. 11 12月, 2022 1 次提交
  17. 08 12月, 2022 1 次提交
  18. 07 12月, 2022 1 次提交
    • S
      Uncache: optimize write operation (#1844) · 37225120
      sfencevma 提交于
      This commit adds an uncache write buffer to accelerate uncache write
      
      For uncacheable address range, now we use atomic bit in PMA to indicate
      uncache write in this range should not use uncache write buffer.
      
      Note that XiangShan does not support atomic insts in uncacheable address range.
      
      * uncache: optimize write operation
      
      * pma: add atomic config
      
      * uncache: assign hartId
      
      * remove some pma atomic
      
      * extend peripheral id width
      Co-authored-by: NLyn <lyn@Lyns-MacBook-Pro.local>
      37225120
  19. 05 12月, 2022 1 次提交
  20. 02 12月, 2022 2 次提交
    • H
      Replay all load instructions from LQ (#1838) · a760aeb0
      happy-lx 提交于
      This intermediate architecture replays all load instructions from LQ.
      An independent load replay queue will be added later.
      
      Performance loss caused by changing of load replay sequences will be
      analyzed in the future.
      
      * memblock: load queue based replay
      
      * replay load from load queue rather than RS
      * use counters to delay replay logic
      
      * memblock: refactor priority
      
      * lsq-replay has higher priority than try pointchasing
      
      * RS: remove load store rs's feedback port
      
      * ld-replay: a new path for fast replay
      
      * when fast replay needed, wire it to loadqueue and it will be selected
      this cycle and replay to load pipline s0 in next cycle
      
      * memblock: refactor load S0
      
      * move all the select logic from lsq to load S0
      * split a tlbReplayDelayCycleCtrl out of loadqueue to speed up
      generating emu
      
      * loadqueue: parameterize replay
      a760aeb0
    • H
      mmu: increase mmu timeout to 10000 (#1839) · 914b8455
      Haoyuan Feng 提交于
      914b8455
  21. 30 11月, 2022 1 次提交
  22. 22 11月, 2022 1 次提交
  23. 21 11月, 2022 1 次提交
  24. 19 11月, 2022 8 次提交
    • W
      lsu: fix nanhu cherry-pick conflict · 34ffc2fb
      William Wang 提交于
      34ffc2fb
    • W
      atom: lr should raise load misalign exception · 8c343485
      William Wang 提交于
      8c343485
    • W
      ci: add extra pmp test · b4edc553
      William Wang 提交于
      b4edc553
    • W
      csr: medeleg write should have 0xb3ff mask · 5e4ec482
      William Wang 提交于
      According to the RISC-V manual, exception code 14 is reserved.
      
      See https://github.com/OpenXiangShan/NEMU/commit/9800da6a5e660dae5411c9b303833bc84bc04db4
      5e4ec482
    • W
      Fix atom inst pmp inplementation (#1813) · 0fedb24c
      William Wang 提交于
      * atom: fix atom inst storeAccessFault gen logic
      
      * atom, pmp: atom access !r addr should raise SAF
      
      * atom: lr should raise load access fault
      0fedb24c
    • W
      dcache: fix replace & probeAck TtoB perm problem (#1791) · b8f6ff86
      William Wang 提交于
      * chore: fix WBQEntryReleaseUpdate bundle naming
      
      There is no real hardware change
      
      * dcache: fix replace & probeAck TtoB perm problem
      
      When dcache replaces a cacheline, it will move that cacheline data to
      writeback queue, and wait until refill data come. When refill data
      comes, it writes dcache data array and update meta for that cacheline,
      then wakes up cacheline release req and write data to l2 cache.
      
      In previous design, if a probe request comes before real l1 to l2 release
      req, it can be merged in the same writeback queue entry. Probe req will
      update dcache meta in mainpipe s3, then be merged in writeback queue.
      However, for a probe TtoB req, the following problem may happen:
      
      1) a replace req waits for refill in writeback queue entry X
      2) probe TtoB req enters mainpipe s3, set cacheline coh to B
      3) probe TtoB req is merged to writeback queue entry X
      4) writeback queue entry X is waken up, do probeack immediately (TtoN)
      5) refill data for replace req comes from l2, a refill req enters mainpipe
      and update dcache meta (set cacheline being replaced coh to N)
      
      Between 4) and 5), l2 thinks that l1 coh is N, but l1 coh is actually B,
      here comes the problem.
      
      Temp patch for nanhu:
      
      Now we let all probe req do extra check. If it is a TtoB probe req and the
      coresponding cacheline release req is already in writeback queue, we set
      dcache meta coh to N. As we do set block in dcache mainpipe, we can do
      that check safely when probe req is in mainpipe.
      b8f6ff86
    • W
      dcache: optimize data sram read fanout (#1784) · a19ae480
      William Wang 提交于
      a19ae480
    • W
      ldu: fix replay from fetch signal for missed load (#1780) · 4b7b4cc9
      William Wang 提交于
      When write back missed load, io.ldout.bits.uop.ctrl.replayInst
      should not be overwriteen by load pipeline replay check result
      `s3_need_replay_from_fetch`
      4b7b4cc9