#
4ccb2e8b |
| 28-May-2024 |
Yanqin Li <[email protected]> |
prefetch & utility: add clockgate control (#3005)
|
#
ffd3154d |
| 25-Apr-2024 |
CharlieLiu <[email protected]> |
DCache: New feature evict on refill (#2919)
- Remove module RefillPipe, move DCache replacer access/update to
MainPipe.
- Using l2_hint as an early wake-up signal for MSHR.
---------
Co-auth
DCache: New feature evict on refill (#2919)
- Remove module RefillPipe, move DCache replacer access/update to
MainPipe.
- Using l2_hint as an early wake-up signal for MSHR.
---------
Co-authored-by: YukunXue <[email protected]>
Co-authored-by: Tang Haojin <[email protected]>
Co-authored-by: ssszwic <[email protected]>
Co-authored-by: Kunlin You <[email protected]>
show more ...
|
#
692e2faf |
| 07-Apr-2024 |
Huijin Li <[email protected]> |
MemBlock: optimize area for DCache refill logic (#2844)
* AtomicsUnit: delete signals 'trigger.backendHit' vector
* MemBlock & DCacheWrapper & FakeDCache & LSQWrapper & LoadQueue & LoadQueueRepla
MemBlock: optimize area for DCache refill logic (#2844)
* AtomicsUnit: delete signals 'trigger.backendHit' vector
* MemBlock & DCacheWrapper & FakeDCache & LSQWrapper & LoadQueue & LoadQueueReplay & LoadUnit : delete refill_to_ldq (unused signals)
* LoadQueueData: add Restrictions LoadQueueReplaySize must be divided by numWBank
show more ...
|
#
fc00d282 |
| 18-Oct-2023 |
Yinan Xu <[email protected]> |
Bump difftest (#2391)
* use the abstract DifftestMem class
* move DifftestModule.finish to hardware
|
#
8891a219 |
| 08-Oct-2023 |
Yinan Xu <[email protected]> |
Bump rocket-chip (#2353)
|
#
3c02ee8f |
| 25-Dec-2022 |
wakafa <[email protected]> |
Separate Utility submodule from XiangShan (#1861)
* misc: add utility submodule
* misc: adjust to new utility framework
* bump utility: revert resetgen
* bump huancun
|
#
03efd994 |
| 30-Sep-2022 |
happy-lx <[email protected]> |
Sync timing modification of #1681 and #1793 (#1793)
* ldu: optimize dcache hitvec wiring
In previous design, hitvec is generated in load s1, then send to dcache
and lsu (rs) side separately. As
Sync timing modification of #1681 and #1793 (#1793)
* 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: William Wang <[email protected]>
Co-authored-by: ZhangZifei <[email protected]>
Co-authored-by: good-circle <[email protected]>
show more ...
|
#
62cb71fb |
| 17-Sep-2022 |
happy-lx <[email protected]> |
dcache, atomicUnit: remove Atomicsreplayunit (#1767)
* dcache, atomicUnit: remove Atomicsreplayunit
mvoe functions and replay feature in Atomicsreplayunit to Atomicsunit
* Atomicsunit: fix dif
dcache, atomicUnit: remove Atomicsreplayunit (#1767)
* dcache, atomicUnit: remove Atomicsreplayunit
mvoe functions and replay feature in Atomicsreplayunit to Atomicsunit
* Atomicsunit: fix difftest check signals
show more ...
|
#
ad3ba452 |
| 20-Oct-2021 |
zhanglinjuan <[email protected]> |
New DCache (#1111)
* 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 file
New DCache (#1111)
* 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: William Wang <[email protected]>
Co-authored-by: LinJiawei <[email protected]>
Co-authored-by: TangDan <[email protected]>
Co-authored-by: LinJiawei <[email protected]>
Co-authored-by: ZhangZifei <[email protected]>
Co-authored-by: wangkaifan <[email protected]>
Co-authored-by: JinYue <[email protected]>
Co-authored-by: Zhangfw <[email protected]>
show more ...
|
#
73be64b3 |
| 13-Oct-2021 |
Jiawei Lin <[email protected]> |
Refactor top (#1093)
* Temporarily disable TLMonitor
* Bump huancun (L2/L3 MSHR bug fix)
* Refactor Top
* Bump huancun
* alu: fix bug of rev8 & orc.b instruction
Co-authored-by: Zhang
Refactor top (#1093)
* Temporarily disable TLMonitor
* Bump huancun (L2/L3 MSHR bug fix)
* Refactor Top
* Bump huancun
* alu: fix bug of rev8 & orc.b instruction
Co-authored-by: Zhangfw <[email protected]>
show more ...
|
#
1f0e2dc7 |
| 27-Sep-2021 |
Jiawei Lin <[email protected]> |
128KB L1D + non-inclusive L2/L3 (#1051)
* L1D: provide independent meta array for load pipe
* misc: reorg files in cache dir
* chore: reorg l1d related files
* bump difftest: use clang to c
128KB L1D + non-inclusive L2/L3 (#1051)
* 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
* dcache: fix l1 probe index generate logic
* Now right probe index will be used according to the len of alias bits
* dcache: clean up amo pipeline
* DCacheParameter rowBits will be removed in the future, now we set it to 128
to make dcache work
* dcache: fix amo word index
* bump huancun
Co-authored-by: William Wang <[email protected]>
Co-authored-by: zhanglinjuan <[email protected]>
Co-authored-by: TangDan <[email protected]>
Co-authored-by: ZhangZifei <[email protected]>
Co-authored-by: wangkaifan <[email protected]>
show more ...
|