1. 29 10月, 2021 4 次提交
  2. 28 10月, 2021 1 次提交
  3. 27 10月, 2021 4 次提交
    • L
      l2tlb: add one more cycle between itlb and l2tlb (#1178) · 38ba1efd
      Lemover 提交于
      * l2tlb: add repeater/filter's object apply method
      
      * l2tlb: add one more cycle(repeater) between itlb and l2tlb
      38ba1efd
    • W
      mem: simplify software prefetch logic (#1176) · d200f594
      William Wang 提交于
      * mem: update lsu op encoding
      * decode: remove prefetch bits from CtrlSignals
      * mem: simplify software prefetch logic in loadpipe
      * mem: fix wrong dcacheShouldResp assertion
      d200f594
    • J
      Optimize L2->L3 crossbar (#1177) · a9f27ba2
      Jiawei Lin 提交于
      * Bump huancun
      
      * Simplify l2 -> l3 cross bar
      
      * HuanCun: remove debug print
      a9f27ba2
    • H
      Svinval (#1055) · af2f7849
      happy-lx 提交于
      * Svinval: implement Svinval
      * add three new instructions(SINVAL_VMA SFENCE_W_INVAL SFENCE_INVAL_IR)
      * TODO : test
      
      * Prevent illegal software code by adding an assert
      * make sure the software runs as follow:
        begin instruction of svinval extension
        svinval xxxx
        svinval xxxx
        ...
        end instruction of svinval extension
      
      * Svinval: add an CSR to control it and some annotations
      
      * Roq: fix assert bug of Svinval
      
      * Svinval: fix svinval.vma's rs2 type
      * make it reg instead of imm
      
      * Svinval: change assert logic and fix bug
      * fix the condition judging Svinval.vma instruction
      * using doingSvinval in assert
      
      * ci: add rv64mi-p-svinval to ci
      
      * fix typo
      
      * fix bug that lost ','
      
      * when svinval disable, raise illegal instr excep
      
      * CSR: mv svinval ctl to srnctl(1)
      
      * rob: when excep, do not set dosvinval
      
      * decode: when disable svinval, do not set flushpipe
      
      * bump ready-to-run
      Co-authored-by: NZhangZifei <zhangzifei20z@ict.ac.cn>
      af2f7849
  4. 26 10月, 2021 4 次提交
  5. 25 10月, 2021 1 次提交
    • L
      pma: add pmp-like pma, software can read and write (#1169) · ca2f90a6
      Lemover 提交于
      remove the old hard-wired pma and turn to pmp-like csr registers. the pma config is writen in pma register.
      1. pma are m-priv csr, so only m-mode csrrw can change pma
      2. even in m-mode, pma should be always checked, no matter lock or not
      3. so carefully write pma, make sure not to "suicide"
      
      * pma: add pmp-like pma, just module/bundle added, not to circuit
      
      use reserved 2 bits as atomic and cached
      
      * pma: add pmp-like pma into pmp module
      
      pma have two more attribute than pmp
      1. atmoic;
      2. c/cache, if false, go to mmio.
      
      pma uses 16+4 machine-level custom ready write csr.
      pma will always be checked even in m-mode.
      
      * pma: remove the old MemMap in tlb, mmio arrives next cycle
      
      * pma: ptw raise af when mmio
      
      * pma: fix bug of match's zip with last entry
      
      * pma: fix bug of pass reset signal through method's parameter
      
      strange bug, want to reset, pass reset signal to a method, does not
      work.
      import chisel3.Module.reset, the method can access reset it's self.
      
      * pma: move some method to trait and fix bug of pma_init value
      
      * pma: fix bug of pma init value assign way
      
      * tlb: fix stupid bug that pf.ld not & fault_valid
      
      * loadunit: fix bug that uop is flushed, pmp's dcache kill failed also
      
      * ifu: mmio access needs f2_valid now
      
      * loadunit: if mmio and have sent fastUop, flush pipe when commit
      
      * storeunit: stu->lsq at stage1 and re-in lsq at stage2 to update mmio
      ca2f90a6
  6. 24 10月, 2021 3 次提交
  7. 23 10月, 2021 6 次提交
  8. 22 10月, 2021 12 次提交
    • Y
      rs: wrap data selection logic in module (#1160) · 35de2a4c
      Yinan Xu 提交于
      35de2a4c
    • L
      Merge branch 'master' into decoupled-frontend · 9fdca42e
      Lingrui98 提交于
      9fdca42e
    • L
      ftq: fix bugs when shareTailSlot is false · 710a8720
      Lingrui98 提交于
      710a8720
    • W
      mem: remove outdated uncache state assertion (#1159) · 71b114f8
      William Wang 提交于
      Now uncache store may commit together with cached store. For example:
      
      0: sd to uncache_addr
      4: sd to cache_addr
      8: sd to cache_addr
      May commit in the same cycle.
      
      It should eliminate wrong assertion in xalancbmk.
      71b114f8
    • J
      Instr uncache: support instruction fecth from MMIO device ( flash ) (#1151) · 0be662e4
      Jay 提交于
      * InstrUncache: change into 1 instruciton logic
      
      * Frontend: add MMIO fetch port
      
      * IFU: flush pipeline and only pass 1 instruction to backend when
      finding the address is mmio
      
      * BPU: set the resetVector to 10000000
      
      * Frontend: connect ifu.uncache to instrUncache
      
      * IFU: Fix conflict with master
      
      * IFU: fix mmio instruction prediction problem
      
      * IFU: fix tlb af only hold 1 cycle
      0be662e4
    • Y
      rob: optimize bits width in storage (#1155) · c3abb8b6
      Yinan Xu 提交于
      This PR optimizes out isFused and crossPageIPFFix usages in Rob's DispatchData. They will not be stored in ROB. Now DispatchData has only 38 bits.
      
      * isFused is merged with commitType (2 bits reduced)
      * crossPageIPFFix is used only in ExceptionGen (1 bit reduced)
      * rename: reduce ldest usages
      * decode: set isMove to false if ldest is zero
      c3abb8b6
    • W
      misc: do bug fix (#1157) · a79fef67
      wakafa 提交于
      * bump difftest & huancun
      a79fef67
    • W
      Add ld-ld violation check (#1140) · 67682d05
      William Wang 提交于
      * mem: support ld-ld violation check
      * mem: do not fast wakeup if ld vio check failed
      * mem: disable ld-ld vio check after core reset
      67682d05
    • Z
      DCacheWrapper: set replace pipe higher priority than main pipe (#1152) · fa2b8fdd
      zhanglinjuan 提交于
      In the latest version of dcache, replace pipe is blocked by main pipe according to set, because replace and store/probe should not try to modify data or meta at the same time, which might result in inconsistency between data and meta. For performance reasons, replace is blocked by store, not the other way around, because replace can be delayed so it can bring dirty data written by store down to L2.
      
      Now this consideration brings another dead-lock. Store buffer keeps sending store request without a break, so main pipe stays occupied handling store. In the meantime, miss queue rejects these store request so store buffer keeps replaying all the time. Replace pipe cannot advance because of set conflict with main pipe, so the corresponding miss entry cannot be released and keeps rejecting new store request.
      
      To break this dead-lock, this pull request tries to set replace pipe higher priority than main pipe, and let write-back queue handle consistency between data and meta if a store interrupts.
      fa2b8fdd
    • Y
      core: fix reset chain for wb arbiter (#1154) · e4f9d263
      Yinan Xu 提交于
      e4f9d263
    • Y
      misc: put reset signals in a chain (#1147) · 77bc15a2
      Yinan Xu 提交于
      77bc15a2
    • Y
      core: remove top-level logic gates (#1150) · 9dc24332
      Yinan Xu 提交于
      9dc24332
  9. 21 10月, 2021 4 次提交
    • S
      Merge pull request #1039 from OpenXiangShan/ftb-lru · 8646913a
      Steve Gou 提交于
      Modify FTB replacement strategy to PLRU
      8646913a
    • W
      mem: add CSR based l1 cache instructions (#1116) · e19f7967
      William Wang 提交于
      e19f7967
    • H
      asid: add asid, mainly work when hit check, not in sfence.vma (#1090) · 45f497a4
      happy-lx 提交于
      add mmu's asid support.
      1. put asid inside sram (if the entry is sram), or it will take too many sources.
      2. when sfence, just flush it all, don't care asid.
      3. when hit check, check asid.
      4. when asid changed, flush all the inflight ptw req for safety
      5. simple asid unit test:
      asid 1 write, asid 2 read and check, asid 2 write, asid 1 read and check. same va, different pa
      
      * ASID: make satp's asid bits configurable to RW
      * use AsidLength to control it
      
      * ASID: implement asid refilling and hit checking
      * TODO: sfence flush with asid
      
      * ASID: implement sfence with asid
      * TODO: extract asid from SRAMTemplate
      
      * ASID: extract asid from SRAMTemplate
      * all is down
      * TODO: test
      
      * fix write to asid
      
      * Sfence: support rs2 of sfence and fix Fence Unit
      * rs2 of Sfence should be Reg and pass it to Fence Unit
      * judge the value of reg instead of the index in Fence Unit
      
      * mmu: re-write asid
      
      now, asid is stored inside sram, so sfence just flush it
      it's a complex job to handle the problem that asid is changed but
      no sfence.vma is executed. when asid is changed, all the inflight
      mmu reqs are flushed but entries in storage is not influenced.
      so the inflight reqs do not need to record asid, just use satp.asid
      
      * tlb: fix bug of refill mask
      
      * ci: add asid unit test
      Co-authored-by: NZhangZifei <zhangzifei20z@ict.ac.cn>
      45f497a4
    • Y
      refCounter: delay de-allocation for one more cycle (#1144) · 103fe42b
      Yinan Xu 提交于
      This commit changes how de-allocation is done in RefCounter. One cycle
      after we update the reference counters, the free registers are released
      to the freelist.
      
      Previous version creates a critical path, starting from deallocate ports
      and ending at freelist registers. This commit adds one more cycle in the
      allocation --> updating reference counters --> freeing physical
      registers --> allocation loop.
      103fe42b
  10. 20 10月, 2021 1 次提交