1. 12 11月, 2021 1 次提交
  2. 27 10月, 2021 1 次提交
  3. 21 10月, 2021 1 次提交
    • 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
  4. 11 9月, 2021 1 次提交
  5. 02 9月, 2021 1 次提交
    • L
      l0tlb: add a new level tlb, a load tlb and a store tlb (#961) · a0301c0d
      Lemover 提交于
      * Revert "Revert "l0tlb: add a new level tlb to each mem pipeline (#936)" (#945)"
      
      This reverts commit b052b972.
      
      * fu: remove unused import
      
      * mmu.tlb: 2 load/store pipeline has 1 dtlb
      
      * mmu: remove btlb, the l1-tlb
      
      * mmu: set split-tlb to 32 to check perf effect
      
      * mmu: wrap tlb's param with TLBParameters
      
      * mmu: add params 'useBTlb'
      
      dtlb size is small: normal 8, super 2
      
      * mmu.tlb: add Bundle TlbEntry, simplify tlb hit logic(coding)
      
      * mmu.tlb: seperate tlb's storage, relative hit/sfence logic
      
      tlb now supports full-associate, set-associate, directive-associate.
      more: change tlb's parameter usage, change util.Random to support
      case that mod is 1.
      
      * mmu.tlb: support normalAsVictim, super(fa) -> normal(sa/da)
      
      be carefull to use tlb's parameter, only a part of param combination
      is supported
      
      * mmu.tlb: fix bug of hit method and victim write
      
      * mmu.tlb: add tlb storage's perf counter
      
      * mmu.tlb: rewrite replace part, support set or non-set
      
      * mmu.tlb: add param outReplace to receive out replace index
      
      * mmu.tlb: change param superSize to superNWays
      
      add param superNSets, which should always be 1
      
      * mmu.tlb: change some perf counter's name and change some params
      
      * mmu.tlb: fix bug of replace io bundle
      
      * mmu.tlb: remove unused signal wayIdx in tlbstorageio
      
      * mmu.tlb: separate tlb_ld/st into two 'same' tlb
      
      * mmu.tlb: when nWays is 1, replace returns 0.U
      
      before, replace will return 1.U, no influence for refill but bad
      for perf counter
      
      * mmu.tlb: give tlb_ld and tlb_st a name (in waveform)
      a0301c0d
  6. 23 8月, 2021 1 次提交
  7. 22 8月, 2021 1 次提交
    • L
      l0tlb: add a new level tlb to each mem pipeline (#936) · 5aae5b8d
      Lemover 提交于
      * Miniconfig: change dtlb size to 32 at minimal config
      
      * mmu.dtlb: change tlb's replacement access code style
      
      dtlb now can support plru (functionaly).
      plru with multi-access is chained, so there will be long latency
        for dtlb to use plru.
      
      * mmu.tlb: add tlb at new level named btlb
      
      bridge tlb:
      one l0-tlb in each mem pipeline
      all the l0-tlb connect to bridge tlb
      btlb connects to l2tlb, so btlb is also l1-tlb
      itlb remains the same
      
      * mmu.tlb: set tlb size: l0-8, l1-64
      
      * mmu.btlb: add sfence logic
      
      * mmu.tlb: fix bug of sfence logic of g bit
      
      * mmu.btlb: add some perf counter
      
      * mmu.btlb: fix bug of random replace
      
      * mmu.filter: add port vector to record which ports the reqs come from
      
      * mmu.btlb: add some perf counter && add refill mask
      
      * mmu.filter: add check for flushed req
      5aae5b8d
  8. 24 7月, 2021 1 次提交
  9. 19 7月, 2021 1 次提交