1. 28 6月, 2022 1 次提交
  2. 27 6月, 2022 2 次提交
  3. 09 5月, 2022 1 次提交
  4. 06 5月, 2022 2 次提交
    • 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
    • W
      chore: remove sc too many fail assertion (#1514) · 5d6ad649
      William Wang 提交于
      * chore: remove sc too many fail assertion
      
      * chore: use XSWarn()
      5d6ad649
  5. 05 5月, 2022 1 次提交
  6. 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
  7. 28 2月, 2022 1 次提交
  8. 13 2月, 2022 2 次提交
    • W
      mem: opt dcache tag error check timing (#1461) · a469aa4b
      William Wang 提交于
      dcache.resp.bits.miss used to depend on tag_error, it causes severe
      timing problem. That dependence is now removed.
      
      Now when tag_error, we:
      
      * Set access fault bit in exception vec
      * Do not update miss queue. That is to say, if miss, that inst
      may not be refilled
      * Mark that inst as dataForwarded so it will not wait for refill
      * Report error to CSR and BEU
      
      If tag_error come with a miss, writeback taht inst from load
      queue. Otherwise, writeback it from load pipeline.
      a469aa4b
    • W
      mem: fix ldld vio check implementation (#1456) · ef3b5b96
      William Wang 提交于
      * mem: fix ldld vio mask gen logic
      
      * mem: fix lq released flag update logic
      
      Make sure that every load before a probe has correct released flag
      
      See the PR of this commit for illustration
      
      * mem: fix ld-ld violation check logic
      
      * ci: clean up workspace before do real test
      
      * mem: reduce lq released flag update delay for 1 cycle
      
      * chore: bump difftest to run no-smp diff
      
      * ci: add mc test
      
      * mem: fix lq released flag update logic
      
      * chore: set difftest firstCommit_limit to 10000
      
      * ci: use dual-nemu-so for mc test
      ef3b5b96
  9. 13 1月, 2022 1 次提交
  10. 07 1月, 2022 1 次提交
  11. 01 1月, 2022 1 次提交
  12. 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
  13. 24 12月, 2021 1 次提交
  14. 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
  15. 21 12月, 2021 1 次提交
  16. 20 12月, 2021 3 次提交
  17. 16 12月, 2021 1 次提交
    • Z
      dcache: remove redundant ecc array (#1358) · 77decb47
      zhanglinjuan 提交于
      * dcache: fix bug in ecc check
      
      * dcache: remove redundant ecc array
      
      * CacheInstruction: fix typo
      
      * dcache: fix bugs in cache instruction on ecc
      
      * MetaArray: wrap ecc array as a single module
      77decb47
  18. 14 12月, 2021 1 次提交
  19. 13 12月, 2021 1 次提交
  20. 10 12月, 2021 2 次提交
  21. 08 12月, 2021 2 次提交
  22. 02 12月, 2021 3 次提交
  23. 01 12月, 2021 1 次提交
    • W
      dcache: optimize wbq enqueue logic for timing (#1277) · 77af2bae
      William Wang 提交于
      * sbuffer: do flush correctly while draining sbuffer
      
      * ci: enable ci for timing-memblock branch
      
      * mem: disable EnableFastForward for timing reasons
      
      * sbuffer: optimize forward mask gen timing
      
      * dcache: block main pipe req if refill req is valid
      
      Refill req comes from refill arbiter. There is not time left for index
      conflict check. Now we simplily block all main pipe req when refill
      req comes from miss queue.
      
      * dcache: delay some resp signals for better timing
      
      * dcache: optimize wbq enq entry select timing
      
      * WritebackQueue: optimize enqueue logic fir timing
      
      * WritebackQueue: always reject a req when wbq is full
      
      * Revert "ci: enable ci for timing-memblock branch"
      
      This reverts commit 32453dc4.
      
      * WritebackQueue: fix bug in secondary_valid
      Co-authored-by: Nzhanglinjuan <zhanglinjuan20s@ict.ac.cn>
      77af2bae
  24. 29 11月, 2021 2 次提交
    • Z
      dcache: merge replace pipe with main pipe for timing reason (#1248) · 578c21a4
      zhanglinjuan 提交于
      * dcache: merge replace pipe with main pipe for timing reason
      
      * MainPipe: fix bug in s3_fire
      
      * MainPipe: fix bug in delay_release sent to wbq
      
      * MainPipe: fix bug in blocking policy
      
      * MainPipe: send io.replace_resp in stage 3
      
      * MainPipe: fix bug in miss_id sent to wbq
      
      * MainPipe: fix bug
      Co-authored-by: NWilliam Wang <zeweiwang@outlook.com>
      578c21a4
    • W
      Optimize memblock timing (#1268) · a98b054b
      William Wang 提交于
      * sbuffer: do flush correctly while draining sbuffer
      
      * mem: disable EnableFastForward for timing reasons
      
      * sbuffer: optimize forward mask gen timing
      
      * dcache: block main pipe req if refill req is valid
      
      Refill req comes from refill arbiter. There is not time left for index
      conflict check. Now we block all main pipe req when refill
      req comes from miss queue.
      
      * dcache: delay some resp signals for better timing
      
      * dcache: optimize wbq enq entry select timing
      
      * dcache: decouple missq req.valid to valid & cancel
      
      * valid is fast, it is used to select which miss req will be sent to
      miss queue
      * cancel can be slow to generate, it will cancel miss queue req in the
      last moment
      
      * sbuffer: optimize noSameBlockInflight check timing
      a98b054b
  25. 16 11月, 2021 2 次提交
  26. 15 11月, 2021 3 次提交
    • W
      dcache: fix arbiter priority in mainpipe (#1230) · 08b0ab9f
      wakafa 提交于
      08b0ab9f
    • W
      Optmize memblock timing (#1218) · 96b1e495
      William Wang 提交于
      DCache timing problem has not been solved yet. DCache structure will be further changed.
      
      * sbuffer: add extra perf counters
      
      * sbuffer: optmize timeout replay check timing
      
      * sbuffer: optmize do_uarch_drain check timing
      
      Now we only compare merge entry's vtag, check will not start until
      mergeIdx is generated by PriorityEncoder
      
      * mem, lq: optmize writeback select logic timing
      
      * dcache: replace missqueue reill req arbiter
      
      * dcache: refactor missqueue entry select logic
      
      * mem: add comments for lsq data
      
      * dcache: give amo alu an extra cycle
      
      * sbuffer: optmize sbuffer forward data read timing
      96b1e495
    • Z
  27. 11 11月, 2021 1 次提交