1. 18 5月, 2021 1 次提交
  2. 15 5月, 2021 1 次提交
    • Y
      backend,RS: rewrite RS to optimize timing (#812) · 5c7674fe
      Yinan Xu 提交于
      * test,vcs: call $finish when difftest fails
      
      * backend,RS: refactor with more submodules
      
      This commit rewrites the reservation station in a more configurable style.
      
      The new RS has not finished.
      - Support only integer instructions
      - Feedback from load/store instructions is not supported
      - Fast wakeup for multi-cycle instructions is not supported
      - Submodules are refined later
      
      * RS: use wakeup signals from arbiter.out
      
      * RS: support feedback and re-schedule when needed
      
      For load and store reservation stations, the instructions that left RS before may be
      replayed later.
      
      * test,vcs: check difftest_state and return on nemu trap instructions
      
      * backend,RS: support floating-point operands and delayed regfile read for store RS
      
      This commit adds support for floating-point instructions in reservation stations.
      Beside, currently fp data for store operands come a cycle later than int data. This
      feature is also supported.
      
      Currently the RS should be ready for any circumstances.
      
      * rs,status: don't trigger assertions when !status.valid
      
      * test,vcs: add +workload option to specify the ram init file
      
      * backend,rs: don't enqueue when redirect.valid or flush.valid
      
      * backend,rs: support wait bit that instruction waits until store issues
      
      This commit adds support for wait bit, which is mainly used in load and
      store reservation stations to delay instruction issue until the corresponding
      store instruction issued.
      
      * backend,RS: optimize timing
      
      This commit optimizes BypassNetwork and PayloadArray timing.
      
      - duplicate bypass mask to avoid too many FO4
      - use one-hot vec to get read data
      5c7674fe
  3. 12 5月, 2021 1 次提交
    • L
      PTW: rewrite ptw for multiple requests support (#811) · 4d586ba1
      Lemover 提交于
      * PTW: add ptw multi-processing graph
      
      * [WIP] PTW: try to add miss queue, failed for complexity and not very useful
      
      * [WIP] PTW: rewrite ptw for multi req support
      
      * PTW: remove some assert, fix level init bug
      
      * PTW: itlb has highter priority than dtlb
      
      * PTW: fix bug that mix cache's resp logic
      
      * PTW: fix stupid bug that mix .U and .W
      
      * PTW: replay will not be blocked if fsm empty
      
      * PTW: miss queue req may return miss queue
      
      In the before design, only miss queue req can go into
      fsm, and would not be blocked.
      Now, to simplify design, miss queue req are just the
      same with new req, may blocked, going to fsm or miss queue.
      
      * PTW: fix ptw filter iss valid bug
      
      * PTW.fsm: fix bug that should not mem.req when sfenceLatch
      
      * PTW: fix ptw sfenceLatch's bug
      
      * PTW: add some perf counters
      
      * PTW: fix bug in filter enq ptr logic
      
      * PTW: fix bug of sfence in ptw
      
      * test: add current branch to ci-test, tmp
      
      * PTW: fix bug of cache's hit logic and fsm's pf
      
      * PTW: fix bug of filter's enq and block* signal
      
      * PTW: fix bug of filter's pteResp filter
      
      * PTW: add some assert of filter's counter
      
      * PTW: fix bug of filter's enq logic
      
      * PTW: set PTWMSHRSIZE 16
      
      * PTW: fix naive perf counter's bug
      
      * PTW: set PTWMSHRSIZE 8
      
      * PTW: set PTWMSHRSIZE 32
      
      * Revert "PTW: set PTWMSHRSIZE 32"
      
      This reverts commit fd3981ae8bbb015c6cd398c4db60486d39fc92ef.
      
      * Revert "test: add current branch to ci-test, tmp"
      
      This reverts commit 8a7a8a494d5c05789e05a385a9fc7791a8ffef2f.
      4d586ba1
  4. 30 4月, 2021 1 次提交
    • Y
      cache: support fake dcache, ptw, l1pluscache, l2cache and l3cache (#795) · 9d5a2027
      Yinan Xu 提交于
      In this commit, we add support for using DPI-C calls to replace
      DCache, PTW and L1plusCache. L2Cache and L3 Cache are also allowed to
      be ignored or bypassed. Configurations are controlled by useFakeDCache,
      useFakePTW, useFakeL1plusCache, useFakeL2Cache and useFakeL3Cache.
      However, some configurations may not work correctly.
      9d5a2027
  5. 19 4月, 2021 1 次提交
    • J
      Refactor parameters, SimTop and difftest (#753) · 2225d46e
      Jiawei Lin 提交于
      * difftest: use DPI-C to refactor difftest
      
      In this commit, difftest is refactored with DPI-C calls.
      There're a few reasons:
      (1) From Verilator's manual, DPI-C calls should be more efficient than accessing from dut_ptr.
      (2) DPI-C is cross-platform (Verilator, VCS, ...)
      (3) difftest APIs are splited from emu.cpp to possibly support more backend platforms
      (NEMU, Spike, ...)
      
      The performance at this commit is quite slower than the original emu.
      Performance issues will be fixed later.
      
      * [WIP] SimTop: try to use 'XSTop' as soc
      
      * CircularQueuePtr: ues F-bounded polymorphis instead implict helper
      
      * Refactor parameters & Clean up code
      
      * difftest: support basic difftest
      
      * Support diffetst in new sim top
      
      * Difftest; convert recode fmt to ieee754 when comparing fp regs
      
      * Difftest: pass sign-ext pc to dpic functions && fix exception pc
      
      * Debug: add int/exc inst wb to debug queue
      
      * Difftest: pass sign-ext pc to dpic functions && fix exception pc
      
      * Difftest: fix naive commit num limit
      Co-authored-by: NYinan Xu <xuyinan1997@gmail.com>
      Co-authored-by: NWilliam Wang <zeweiwang@outlook.com>
      2225d46e
  6. 04 4月, 2021 1 次提交
  7. 02 4月, 2021 1 次提交
  8. 01 4月, 2021 1 次提交
    • Y
      ResetGen: generate reset signals for different modules (#740) · 94c92d92
      Yinan Xu 提交于
      * Add ResetRegGen module to generate reset signals for different modules
      
      To meet physical design requirements, reset signals for different modules
      need to be generated respectively. This commit adds a ResetRegGen module
      to automatically generate reset registers and connects different reset
      signals to different modules, including l3cache, l2cache, core.
      L1plusCache, MemBlock, IntegerBlock, FloatBlock, CtrlBlock, Frontend are
      reset one by one.
      94c92d92
  9. 31 3月, 2021 3 次提交
  10. 30 3月, 2021 1 次提交
  11. 22 3月, 2021 1 次提交
  12. 19 3月, 2021 2 次提交
  13. 18 3月, 2021 1 次提交
  14. 13 3月, 2021 1 次提交
  15. 11 3月, 2021 1 次提交
  16. 10 3月, 2021 1 次提交
    • L
      RS: add load fast wakeup and set EnableLoadFastWakeUp default value to false (#673) · 7f376046
      Lemover 提交于
      * LoadUnit: generate fastUop in load_s1
      
      * RS/Load: add load to fast wakeup when cache hit, while maintain its slow
      
      * RS: remove legacy assert that doesn't work for load has fast and slow
      
      * LoadUnit: fix bug that fastUops's valid forgets load_s1.io.in.valid
      
      * MemBlock: fix bug of loadUnit's fast and slow connect
      
      IPC of coremark 10 cycles raise from 1.63 to 1.70
      
      * RS: RegNext srcUpdate to use it at next cycle
      
      * RS: add param EnableLoadFastWakeUp and set default to false
      Co-authored-by: NWilliam Wang <zeweiwang@outlook.com>
      7f376046
  17. 07 3月, 2021 1 次提交
  18. 06 3月, 2021 4 次提交
  19. 05 3月, 2021 2 次提交
    • S
      BPU: enable TAGE-SC (#646) · 49c07871
      Steve Gou 提交于
      * core: enable sc
      
      * sc: calculate sum again on update
      
      * sc: clean ups
      
      * sc: add some debug info
      
      * sc, tage, bim: fix wrbypass logic, add wrbypass for SC
      
      * sc: restrict threshold update conditions and prevent overflow problem
      
      * sc: use seperative thresholds for each bank
      
      * sc: update debug info
      
      * sc: use adaptive threshold algorithm from the original O-GEHL
      
      * tage, bim, sc: optimize wrbypass logic
      
      * sc: initialize threshold to 60
      
      * loop: remove unuseful RegNext on redirect
      49c07871
    • L
      RS: fix some typo && optimize deq logic for performance (#639) · 0b06615c
      Lemover 提交于
      * RS: optimize numExist signal
      
      * RS: fix some typo
      
      * RS: optimize deq logic for block-nonfeedback rs
      0b06615c
  20. 04 3月, 2021 1 次提交
  21. 03 3月, 2021 2 次提交
  22. 02 3月, 2021 1 次提交
  23. 01 3月, 2021 1 次提交
    • A
      optimize L1 DCache timing (#616) · 27d2b883
      allen 提交于
      * DCache: remove ecc to improve timing.
      
      * MissQueue: refill_arb change RRArbiter to Arbiter to improve timing.
      27d2b883
  24. 28 2月, 2021 2 次提交
    • Z
      perf: Fix compile error · 47c2accd
      zoujr 提交于
      47c2accd
    • W
      Add a naive memory violation predictor (#591) · 2b8b2e7a
      William Wang 提交于
      * WaitTable: add waittable framework
      
      * WaitTable: get replay info from RedirectGenerator
      
      * StoreQueue: maintain issuePtr for load rs
      
      * RS: add loadWait to rs (only for load Unit's rs)
      
      * WaitTable: fix update logic
      
      * StoreQueue: fix issuePtr update logic
      
      * chore: set loadWaitBit in ibuffer
      
      * StoreQueue: fix issuePtrExt update logic
      
      Former logic does not work well with mmio logic
      
      We may also make sure that issuePtrExt is not before cmtPtrExt
      
      * WaitTable: write with priority
      
      * StoreQueue: fix issuePtrExt update logic for mmio
      
      * chore: fix typos
      
      * CSR: add slvpredctrl
      
      * slvpredctrl will control load violation predict micro architecture
      
      * WaitTable: use xor folded pc to index waittable
      Co-authored-by: NZhangZifei <1773908404@qq.com>
      2b8b2e7a
  25. 27 2月, 2021 2 次提交
  26. 26 2月, 2021 1 次提交
  27. 25 2月, 2021 1 次提交
  28. 24 2月, 2021 3 次提交