1. 05 8月, 2023 1 次提交
  2. 25 5月, 2023 1 次提交
    • W
      Merge coupledL2 into master (#2064) · 15ee59e4
      wakafa 提交于
      * icache: Acquire -> Get to L2
      
      * gitmodules: add coupledL2 as submodule
      
      * cpl2: merge coupledL2 into master
      
      * Changes includes:
      *   coupledL2 integration
      *   modify user&echo fields in i$/d$/ptw
      *   set d$ never always-releasedata
      *   remove hw perfcnt connection for L2
      
      * bump utility
      
      * icache: remove unused releaseUnit
      
      * config: minimalconfig includes l2
      
      * Otherwise, dirty bits maintainence may be broken
      * Known issue: L2 should have more than 1 bank to avoid compiling problem
      
      * bump Utility
      
      * bump coupledL2: fix bugs in dual-core
      
      * bump coupledL2
      
      * icache: set icache as non-coherent node
      
      * bump coupledL2: fix dirty problem in L2 ProbeAckData
      
      ---------
      Co-authored-by: Nguohongyu <20373696@buaa.edu.cn>
      Co-authored-by: NXiChen <chenxi171@mails.ucas.ac.cn>
      15ee59e4
  3. 21 5月, 2023 1 次提交
    • S
      lsu: split lq for larger ooo load window (#2077) · e4f69d78
      sfencevma 提交于
      BREAKING CHANGE: new LSU/LQ architecture introduced in this PR
      
      In this commit, we replace unified LQ with:
      * virtual load queue
      * load replay queue
      * load rar queue
      * load raw queue
      * uncache buffer
      
      It will provide larger ooo load window.
      
      NOTE: IPC loss in this commit is caused by MDP problems, for previous MDP
      does not fit new LSU architecture. 
      MDP update is not included in this commit, IPC loss will be fixed by MDP update later.
      
      ---------
      Co-authored-by: NLyn <lyn@Lyns-MacBook-Pro.local>
      e4f69d78
  4. 16 4月, 2023 1 次提交
  5. 15 3月, 2023 1 次提交
  6. 06 3月, 2023 1 次提交
  7. 01 3月, 2023 1 次提交
  8. 02 2月, 2023 1 次提交
  9. 28 1月, 2023 1 次提交
  10. 25 12月, 2022 2 次提交
  11. 18 11月, 2022 1 次提交
  12. 01 11月, 2022 1 次提交
  13. 31 10月, 2022 1 次提交
  14. 29 10月, 2022 1 次提交
  15. 30 9月, 2022 1 次提交
    • H
      Sync timing modification of #1681 and #1793 (#1793) · 03efd994
      happy-lx 提交于
      * ldu: optimize dcache hitvec wiring
      
      In previous design, hitvec is generated in load s1, then send to dcache
      and lsu (rs) side separately. As dcache and lsu (rs side) is far in real
      chip, it caused severe wiring problem.
      
      Now we generate 2 hitvec in parallel:
      
      * hitvec 1 is generated near dcache.
      To generate that signal, paddr from dtlb is sent to dcache in load_s1
      to geerate hitvec. The hitvec is then sent to dcache to generate
      data array read_way_en.
      
      * hitvec 2 is generated near lsu and rs in load_s2, tag read result
      from dcache, as well as coh_state, is sent to lsu in load_s1,
      then it is used to calcuate hitvec in load_s2.  hitvec 2 is used
      to generate hit/miss signal used by lsu.
      
      It should fix the wiring problem caused by hitvec
      
      * ldu: opt loadViolationQuery.resp.ready timing
      
      An extra release addr register is added near lsu to speed up the
      generation of loadViolationQuery.resp.ready
      
      * l1tlb: replace NormalPage data module and add duplicate resp result
      
      data module:
      add BankedSyncDataMoudleWithDup data module:
      divided the data array into banks and read as Async, bypass write data.
      RegNext the data result * #banks. choose from the chosen data.
      
      duplicate:
      duplicate the chosen data and return to outside(tlb).
      tlb return (ppn+perm) * #DUP to outside (for load unit only)
      
      TODO: load unit use different tlb resp result to different module.
      one for lsq, one for dcache.
      
      * l1tlb: Fix wrong vidx_bypass logic after using duplicate data module
      
      We use BankedSyncDataMoudleWithDup instead of SyncDataModuleTemplate,
      whose write ports are not Vec.
      Co-authored-by: NWilliam Wang <zeweiwang@outlook.com>
      Co-authored-by: NZhangZifei <1773908404@qq.com>
      Co-authored-by: Ngood-circle <fenghaoyuan19@mails.ucas.ac.cn>
      03efd994
  16. 18 7月, 2022 1 次提交
    • L
      l1tlb: tlb's req port can be configured to be block or non-blocked (#1656) · f1fe8698
      Lemover 提交于
      each tlb's port can be configured to be block or non-blocked.
      For blocked port, there will be a req miss slot stored in tlb, but belong to
      core pipeline, which means only core pipeline flush will invalid them.
      
      For another, itlb also use PTW Filter but with only 4 entries.
      Last, keep svinval extension as usual, still work.
      
      
      * tlb: add blocked-tlb support, miss frontend changes
      
      * tlb: remove tlb's sameCycle support, result will return at next cycle
      
      * tlb: remove param ShouldBlock, move block method into TLB module
      
      * tlb: fix handle_block's miss_req logic
      
      * mmu.filter: change filter's req.ready to canEnqueue
      
      when filter can't let all the req enqueue, set the req.ready to false.
      canEnqueue after filtering has long latency, so we use **_fake
      without filtering, but the filter will still receive the reqs if
      it can(after filtering).
      
      * mmu.tlb: change name from BTlbPtwIO to VectorTlbPtwIO
      
      * mmu: replace itlb's repeater to filter&repeaternb
      
      * mmu.tlb: add TlbStorageWrapper to make TLB cleaner
      
      more: BlockTlbRequestorIO is same with TlbRequestorIO, rm it
      
      * mmu.tlb: rm unused param in function r_req_apply, fix syntax bug
      
      * [WIP]icache: itlb usage from non-blocked to blocked
      
      * mmu.tlb: change parameter NBWidth to Seq of boolean
      
      * icache.mainpipe: fix itlb's resp.ready, not always true
      
      * mmu.tlb: add kill sigal to blocked req that needs sync but fail
      
      in frontend, icache,itlb,next pipe may not able to sync.
      blocked tlb will store miss req ang blocks req, which makes itlb
      couldn't work. So add kill logic to let itlb not to store reqs.
      
      One more thing: fix icache's blocked tlb handling logic
      
      * icache.mainpipe: fix tlb's ready_recv logic
      
      icache mainpipe has two ports, but these two ports may not valid
      all the same time. So add new signals tlb_need_recv to record whether
      stage s1 should wait for the tlb.
      
      * tlb: when flush, just set resp.valid and pf, pf for don't use it
      
      * tlb: flush should concern satp.changed(for blocked io now)
      
      * mmu.tlb: add new flush that doesn't flush reqs
      
      Sfence.vma will flush inflight reqs and flushPipe
      But some other sfence(svinval...) will not. So add new flush to
      distinguish these two kinds of sfence signal
      
      morw: forget to assign resp result when ptw back, fix it
      
      * mmu.tlb: beautify miss_req_v and miss_v relative logic
      
      * mmu.tlb: fix bug, when ptw back and bypass, concern level to genPPN
      
      bug: when ptw back and bypass, forgot to concern level(1GB/2MB/4KB)
      when genPPN.
      
      by the way: some funtions need ": Unit = ", add it.
      
      * mmu.filter: fix bug of canEnqueue, mixed with tlb_req and tlb.req
      
      * icache.mainpipe: fix bug of tlbExcp's usage, & with tlb_need_back
      
      Icache's mainpipe has two ports, but may only port 0 is valid.
      When a port is invalid, the tlbexcp should be false.(Actually, should
      be ignored).
      So & tlb_need_back to fix this bug.
      
      * sfence: instr in svinval ext will also flush pipe
      
      A difficult problem to handle:
      Sfence and Svinval will flush MMU, but only Sfence(some svinval)
        will flush pipe. For itlb that some requestors are blocked and
        icache doesn't recv flush for simplicity, itlb's blocked ptw req
        should not be flushed.
      It's a huge problem for MMU to handle for good or bad solutions. But
        svinval is seldom used, so disable it's effiency.
      
      * mmu: add parameter to control mmu's sfence delay latency
      
      Difficult problem:
        itlb's blocked req should not be abandoned, but sfence will flush
        all infight reqs. when itlb and itlb repeater's delay is not same(itlb
        is flushed, two cycles later, itlb repeater is flushed, then itlb's
        ptw req after flushing will be also flushed sliently.
      So add one parameter to control the flush delay to be the same.
      
      * mmu.tlb: fix bug of csr.priv's delay & sfence valid when req fire
      
      1. csr.priv's delay
      csr.priv should not be delayed, csr.satp should be delayed.
      for excep/intr will change csr.priv, which will be changed at one
      instruction's (commit?). but csrrw satp will not, so satp has more
      cycles to delay.
      2. sfence
      when sfence valid but blocked req fire, resp should still fire.
      3. satp in TlbCsrBundle
      let high bits of satp.ppn to be 0.U
      
      * tlb&icache.mainpipe: rm commented codes
      
      * mmu: move method genPPN to entry bundle
      
      * l1tlb: divide l1tlb flush into flush_mmu and flush_pipe
      
      Problem:
      For l1tlb, there are blocked and non-blocked req ports.
      For blocked ports, there are req slots to store missed reqs.
      Some mmu flush like Sfence should not flush miss slots for outside
      may still need get tlb resp, no matter wrong and correct resp.
      For example. sfence will flush mmu and flush pipe, but won't flush
      reqs inside icache, which waiting for tlb resp.
      For example, svinval instr will flush mmu, but not flush pipe. so
      tlb should return correct resp, althrough the ptw req is flushed
      when tlb miss.
      
      Solution:
      divide l1tlb flush into flush_mmu and flush_pipe.
      The req slot is considered to be a part of core pipeline and should
      only be flushed by flush_pipe.
      flush_mmu will flush mmu entries and inflight ptw reqs.
      When miss but sfence flushed its ptw req, re-send.
      
      * l1tlb: code clean, correct comments and rm unused codes
      
      * l2tlb: divide filterSize into ifiterSize and dfilterSize
      
      * l2tlb: prefetch req won't enter miss queue. Rename MSHR to missqueue
      
      * l1tlb: when disable vm, ptw back should not bypass tlb and should let miss req go ahead
      f1fe8698
  17. 14 7月, 2022 1 次提交
    • L
      dtlb: merge duplicated tlb together: one ld-tlb and one st-tlb. (#1654) · 53b8f1a7
      Lemover 提交于
      Old Edition:
      2 ld tlb but with same entries. 2 st tlb but wih the same entries.
      The 'duplicate' is used for timing optimization that each tlb can
      be placed close to mem access pipeline unit.
      
      Problem:
      The duplicate tlb takes more Power/Area.
      
      New Edition:
      Only 1 ld tlb and 1 st tlb now.
      If the area is not ok, may merge ld and st together.
      
      Fix: fix some syntax bug when changing parameters
      53b8f1a7
  18. 15 3月, 2022 1 次提交
  19. 28 1月, 2022 1 次提交
  20. 26 1月, 2022 1 次提交
  21. 30 12月, 2021 1 次提交
  22. 21 12月, 2021 1 次提交
  23. 20 12月, 2021 1 次提交
  24. 17 12月, 2021 2 次提交
    • L
      pmp: add static pmp check that stored in tlb entries (#1366) · 5b7ef044
      Lemover 提交于
      * memblock: regnext ptw's resp
      
      * pmp: timing optimization from tlb.sram.ppn to pmp, add static pmp check
      
      long latency: tlb's sram may be slow to gen ppn, ppn to pmp may be
      long latency.
      Solution: add static pmp check.
      
      Fatal problem: pmp grain is smalled than TLB pages(4KB, 2MB, 1GB)
      Solution: increase pmp'grain to 4K, for 4K entries, pre-check pmp and
      store the result into tlb storage. For super pages, still dynamic check
      that translation and check.
      
      * pmp: change pmp grain to 4KB, change pma relative init config
      
      * bump ready-to-run, update nemu so for pmp grain
      
      * bump ready-to-run, update nemu so for pmp grain again
      
        update pmp unit test. The old test assumes that pmp grain is less than 512bit.
      5b7ef044
    • J
      Change default L3 size to 6MB (#1365) · 0fbed464
      Jiawei Lin 提交于
      * Change L3 to 6MB
      
      * Bump huancun
      0fbed464
  25. 15 12月, 2021 1 次提交
    • L
      Debug Mode: support difftest with spike (#1363) · f1c56d6c
      Li Qianruo 提交于
      * Debug Mode: support basic difftest with spike
      
      * Debug Mode: fix some bugs
      
      Bugs fixed are:
      1. All interrupts and exceptions cause debug mode to enter park loop
      2. Debug interrupt ignored due to flushPipe
      f1c56d6c
  26. 14 12月, 2021 1 次提交
    • J
      Optimize IFU and PreDecode timing (#1347) · 2a3050c2
      Jay 提交于
      * ICache: add ReplacePipe for Probe & Release
      
      * remove ProbeUnit
      
      * Probe & Release enter ReplacePipe
      
      * fix bugs when running Linux on MinimalConfig
      
      * TODO: set conflict for ReplacePipe
      
      * ICache: fix ReplacePipe invalid write bug
      
      * chores: code clean up
      
      * IFU: optimize timing
      
      * PreDecode: separate into 2 module for timing optimization
      
      * IBuffer: add enqEnable to replace valid for timing
      
      * IFU/ITLB: optimize timing
      
      * IFU: calculate cut_ptr in f1
      
      * TLB: send req in f1 and wait resp in f2
      
      * ICacheMainPipe: add tlb miss logic in s0
      
      * Optimize IFU timing
      
      * IFU: fix lastHalfRVI bug
      
      * IFU: fix performance bug
      
      * IFU: optimize MMIO commit timing
      
      * IFU: optmize trigger timing and add frontendTrigger
      
      * fix compile error
      
      * IFU: fix mmio stuck bug
      2a3050c2
  27. 12 12月, 2021 1 次提交
  28. 09 12月, 2021 1 次提交
  29. 08 12月, 2021 1 次提交
  30. 06 12月, 2021 1 次提交
  31. 01 12月, 2021 1 次提交
    • J
      Change L2 to 4 banks (#1256) · 59239bc9
      Jiawei Lin 提交于
      * misc: soc timing optimize
      
      * XSTile: insert buffer between L1Dcache and L2
      
      * Bump huancun
      
      * Change L2 to 4 banks
      
      * Adjust buffers
      
      * Add more buffers for peripheral port
      
      * Fix submodule version
      59239bc9
  32. 29 11月, 2021 1 次提交
  33. 28 11月, 2021 1 次提交
    • J
      ICache: Add tilelink consistency modification (#1228) · 1d8f4dcb
      Jay 提交于
      * ICache: metaArray & dataArray use bank interleave
      
      * ICache: add bank interleave
      
      * ICache: add parity check for meta and data arrays
      
      * IFU: fix bug in secondary miss
      
      * secondary miss doesn't send miss request to miss queue
      
      * ICache: write back cancled miss request
      
      * ICacheMissEntry: add second miss merge
      
      * deal with situations that this entry has been flushed, and the next miss req just
      requests the same cachline.
      
      * ICache: add acquireBlock and GrantAck support
      
      * refact: move icache modules to frontend modules
      
      * ICache: add release surport and meta coh
      
      * ICache: change Get to AcquireBlock for A channel
      
      * rebuild: change ICachePara package for other file
      
      * ICache: add tilelogger for L1I
      
      * ICahce: add ProbeQueue and Probe Process Unit
      
      * ICache: add support for ProbeData
      
      * ICahceParameter: change tag code to ECC
      
      * ICahce: fix bugs in connect and ProbeUnit
      
      * metaArray/dataArray responses are not connected
      
      * ProbeUnit use reg so data and req are not synchronized
      
      * RealeaseUnit: write back mata when voluntary
      
      * Add ICache CacheInstruction
      
      * move ICache to xiangshan.frontend.icache._
      
      * ICache: add CacheOpDecoder
      
      * change ICacheMissQueue to ICacheMissUnit
      
      * ProbeUnit: fix meta data not latch bug
      
      * IFU: delete releaseSlot and add missSlot
      
      * IFU: fix bugs in missSlot state machine
      
      * IFU: fix some bugs in miss Slot
      
      * IFU: move out fetch to ICache Array logic
      
      * ReleaseUnit: delete release write logic
      
      * MissUnit: send Release to ReleaseUnit after GAck
      
      * ICacheMainPipe: add mainpipe and stop logic
      
      * when f3_ready is low, stop the pipeline
      
      * IFU: move tlb and array access to mainpipe
      
      * Modify Frontend and ICache top for mainpipe
      
      * ReleaseUnit: add probe merge status register
      
      * ICache: add victim info and release in mainpipe
      
      * ICahche: add set-conflict logic
      
      * Release: do not invalid meta after sending release
      
      * bump Huancun: fix probe problem
      
      * bump huancun for MinimalConfig combinational loop
      
      * ICache: add LICENSE for new files
      
      * Chore: remove debug code and add perf counter
      
      * Bump huancun for bug fix
      
      * Bump HuanCun for alias bug
      
      * ICache: add dirty state for CliendMeta
      1d8f4dcb
  34. 09 11月, 2021 1 次提交
  35. 04 11月, 2021 1 次提交
    • W
      Optimize dcache timing (#1195) · 300ded30
      William Wang 提交于
      * dcache: do not check readline rmask
      
      This should opt bank_conflict check timing
      
      * dcache: block replace if store s1 valid
      
      It takes quite long to generate way_en in mainpipe s1. As a result,
      use s1 way_en to judge if replace should be blocked will cause severe
      timing problem
      
      Now we simply block replace if mainpipe.s1.valid
      
      Refill timing to be optmized later
      
      * sbuffer: delay sbuffer enqueue for 1 cycle
      
      With store queue growing larger, read data from datamodule nearly
      costs a whole cycle. Hence we delay sbuffer enqueue for 1 cycle
      for better timing.
      
      * dcache: reduce probe queue size
      
      * dcache: replace probe pipe req RRArbiter with Arbiter
      
      * dcache: reduce writeback queue size for timing opt
      
      * dcache: delay wbqueue enqueue req for 1 cycle
      
      Addr enqueue req will compare its addr with addrs in all writeback
      entries to check if it should be blocked. Delay enqueue req will
      give that process more time.
      
      * dcache: set default replacer to setplru
      
      It does not change current design
      
      * dcache: fix wbqueue req_delayed deadlock
      
      We delayed writeback queue enq for 1 cycle, missQ req does not
      depend on wbQ enqueue. As a result, missQ req may be blocked
      in req_delayed. When grant comes, that req should also be updated
      
      * dcache: remove outdated require
      
      * dcache: replace missReqArb RRArbiter with Arbiter
      
      * perf: add detailed histogram for low dcache latency
      
      * dcache: fix wbqueue entry alloc logic
      
      * dcache: opt probe req timing
      
      In current design, resv_set is maintained in dcache. All probe req
      will be blocked if that addr is in resv_set.
      
      However, checking if that addr is in resv_set costs almost half a cycle,
      which causes severe timing problem.
      
      Now when we update update_resv_set, all probe reqs will be blocked
      in the next cycle. It should give Probe reservation set addr compare an
      independent cycle, which will lead to better timing
      300ded30
  36. 30 10月, 2021 1 次提交
    • J
      Refactor config & Add pll (#1181) · 34ab1ae9
      Jiawei Lin 提交于
      * Add cache ctrl node
      
      * L2/L3: Reduce client dir size
      
      * Ctrl: connect soft reset from L3 to core
      
      * Add pll
      
      * Config: seperate SocParams and CoreParams to get correct number of cores
      
      * Bump huancun
      
      * Add pll output
      
      * Fix inclusive cache config
      
      * Add one more pll ctrl reg
      
      * Bump huancun
      34ab1ae9
  37. 24 10月, 2021 1 次提交
    • J
      Config update (#1164) · 496c0adf
      Jiawei Lin 提交于
      * Bump HuanCun
      * Increase L2/L3 latency
      * Change 10MB L3 to default config
      * Bump difftest
      496c0adf
  38. 20 10月, 2021 1 次提交
    • Z
      New DCache (#1111) · ad3ba452
      zhanglinjuan 提交于
      * L1D: provide independent meta array for load pipe
      
      * misc: reorg files in cache dir
      
      * chore: reorg l1d related files
      
      * bump difftest: use clang to compile verialted files
      
      * dcache: add BankedDataArray
      
      * dcache: fix data read way_en
      
      * dcache: fix banked data wmask
      
      * dcache: replay conflict correctly
      
       When conflict is detected:
      * Report replay
      * Disable fast wakeup
      
      * dcache: fix bank addr match logic
      
      * dcache: add bank conflict perf counter
      
      * dcache: fix miss perf counters
      
      * chore: make lsq data print perttier
      
      * dcache: enable banked ecc array
      
      * dcache: set dcache size to 128KB
      
      * dcache: read mainpipe data from banked data array
      
      * dcache: add independent mainpipe data read port
      
      * dcache: revert size change
      
      * Size will be changed after main pipe refactor
      
      * Merge remote-tracking branch 'origin/master' into l1-size
      
      * dcache: reduce banked data load conflict
      
      * MainPipe: ReleaseData for all replacement even if it's clean
      
      * dcache: set dcache size to 128KB
      
      BREAKING CHANGE: l2 needed to provide right vaddr index to probe l1,
      and it has to help l1 to avoid addr alias problem
      
      * chore: fix merge conflict
      
      * Change L2 to non-inclusive / Add alias bits in L1D
      
      * debug: hard coded dup data array for debuging
      
      * dcache: fix ptag width
      
      * dcache: fix amo main pipe req
      
      * dcache: when probe, use vaddr for main pipe req
      
      * dcache: include vaddr in atomic unit req
      
      * dcache: fix get_tag() function
      
      * dcache: fix writeback paddr
      
      * huancun: bump version
      
      * dcache: erase block offset bits in release addr
      
      * dcache: do not require probe vaddr != 0
      
      * dcache: opt banked data read timing
      
      * bump huancun
      
      * dcache: fix atom unit pipe req vaddr
      
      * dcache: simplify main pipe writeback_vaddr
      
      * bump huancun
      
      * dcache: remove debug data array
      
      * Turn on all usr bits in L1
      
      * Bump huancun
      
      * Bump huancun
      
      * enable L2 prefetcher
      
      * bump huancun
      
      * set non-inclusive L2/L3 + 128KB L1 as default config
      
      * Use data in TLBundleB to hint ProbeAck beeds data
      
      * mmu.l2tlb: mem_resp now fills multi mq pte buffer
      
      mq entries can just deq without accessing l2tlb cache
      
      * dcache: handle dirty userbit
      
      * bump huancun
      
      * chore: l1 cache code clean up
      
      * Remove l1plus cache
      * Remove HasBankedDataArrayParameters
      
      * Add bus pmu between L3 and Mem
      
      * bump huncun
      
      * IFU: add performance counters and mmio af
      
      * icache replacement policy moniter
      
      * ifu miss situation moniter
      
      * icache miss rate
      
      * raise access fault when found mmio req
      
      * Add framework for seperated main pipe and reg meta array
      
      * Rewrite miss queue for seperated pipes
      
      * Add RefillPipe
      
      * chore: rename NewSbuffer.scala
      
      * cache: add CacheInstruction opcode and reg list
      
      * CSR: add cache control registers
      
      * Add Replace Pipe
      
      * CacheInstruction: add CSRs for cache instruction
      
      * mem: remove store replay unit
      
      * Perf counter to be added
      * Timing opt to be done
      
      * mem: update sbuffer to support new dcache
      
      * sbuffer: fix missqueue time out logic
      
      * Merge remote-tracking branch 'origin/master' into dcache-rm-sru
      
      * chore: fix merge conflict, remove nStoreReplayEntries
      
      * Temporarily disable TLMonitor
      
      * Bump huancun (L2/L3 MSHR bug fix)
      
      * Rewrite main pipe
      
      * ReplacePipe: read meta to decide whether data should be read
      
      * RefillPipe: add a store resp port
      
      * MissQueue: new req should be rejected according to set+way
      
      * Add replacement policy interface
      
      * sbuffer: give missq replay the highest priority
      
      Now we give missqReplayHasTimeOut the highest priority, as eviction
      has already happened
      Besides, it will fix the problem that fix dcache eviction generate logic
      gives the wrong sbuffer id
      
      * Finish DCache framework
      
      * Split meta & tag and use regs to build meta array
      
      * sbuffer: use new dcache io
      
      * dcache: update dcache resp in memblock and fake d$
      
      * Add atomics processing flow
      
      * Refactor Top
      
      * Bump huancun
      
      * DCacheWrapper: disable ld fast wakeup only when bank conflict
      
      * sbuffer: update dcache_resp difftest io
      
      * MainPipe: fix combinational loop
      
      * Sbuffer: fix bug in assert
      
      * RefillPipe: fix bug of getting tag from addr
      
      * dcache: ~0.U should restrict bit-width
      
      * LoadPipe: fix bug in assert
      
      * ReplacePipe: addr to be replaced should be block-aligned
      
      * MainPipe: fix bug in required coh sending to miss queue
      
      * DCacheWrapper: tag write in refill pipe should always be ready
      
      * MainPipe: use replacement way_en when the req is from miss queue
      
      * MissQueue: refill data should be passed on to main pipe
      
      * MainPipe: do not use replacement way when tag match
      
      * CSR: clean up cache op regs
      
      * chore: remove outdated comments
      
      * ReplacePipe: fix stupid bug
      
      * dcache: replace checkOneHot with assert
      
      * alu: fix bug of rev8 & orc.b instruction
      
      * MissQueue: fix bug in the condition of mshr accepting a req
      
      * MissQueue: add perf counters
      
      * chore: delete out-dated code
      
      * chore: add license
      
      * WritebackQueue: distinguish id from miss queue
      
      * AsynchronousMetaArray: fix bug
      
      * Sbuffer: fix difftest io
      
      * DCacheWrapper: duplicate one more tag copy for main pipe
      
      * Add perf cnt to verify whether replacing is too early
      
      * dcache: Release needs to wait for refill pipe
      
      * WritebackQueue: fix accept condition
      
      * MissQueue: remove unnecessary assert
      
      * difftest: let refill check ingore illegal mem access
      
      * Parameters: enlarge WritebackQueue to break dead-lock
      
      * DCacheWrapper: store hit wirte should not be interrupted by refill
      
      * Config: set nReleaseEntries to twice of nMissEntries
      
      * DCacheWrapper: main pipe read should block refill pipe by set
      Co-authored-by: NWilliam Wang <zeweiwang@outlook.com>
      Co-authored-by: NLinJiawei <linjiav@outlook.com>
      Co-authored-by: NTangDan <tangdan@ict.ac.cn>
      Co-authored-by: NLinJiawei <linjiawei20s@ict.ac.cn>
      Co-authored-by: NZhangZifei <zhangzifei20z@ict.ac.cn>
      Co-authored-by: Nwangkaifan <wangkaifan@ict.ac.cn>
      Co-authored-by: NJinYue <jinyue20s@ict.ac.cn>
      Co-authored-by: Fa_wang's avatarZhangfw <471348957@qq.com>
      ad3ba452