#
730cfbc0 |
| 16-Apr-2023 |
Xuan Hu <[email protected]> |
backend: merge v2backend into backend
|
#
164d07c4 |
| 21-Mar-2023 |
guohongyu <[email protected]> |
Merge branch 'master' into fdip-icache-migrate
|
#
63632028 |
| 15-Mar-2023 |
Haoyuan Feng <[email protected]> |
MMU: Add sector tlb for larger capacity (#1964)
* MMU: Add sector tlb for larger capacity
* MMU: Update difftest for sector tlb
|
#
3b739f49 |
| 06-Mar-2023 |
Xuan Hu <[email protected]> |
v2backend: huge tmp commit
|
#
b1ded4e8 |
| 01-Mar-2023 |
guohongyu <[email protected]> |
ICache:finish migrate fdip from branch <kmh-fdip>
|
#
4722e882 |
| 02-Feb-2023 |
William Wang <[email protected]> |
chore: fix minimal config with new prefetch path
|
#
289fc2f9 |
| 08-Sep-2022 |
LinJiawei <[email protected]> |
Added sms prefetcher
|
#
b6c99e8e |
| 29-Dec-2022 |
ZhangZifei <[email protected]> |
Merge remote-tracking branch 'origin/master' into rf-after-issue
|
#
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
|
#
4bc8d977 |
| 25-Dec-2022 |
ZhangZifei <[email protected]> |
rename: fix bug of freelist number cause by mixed v/f reg
|
#
0a992150 |
| 06-Aug-2022 |
William Wang <[email protected]> |
std: add an extra pipe stage for std (#1704)
|
#
ccfddc82 |
| 01-Nov-2022 |
Haojin Tang <[email protected]> |
rename: Re-rename instead of walking back after redirect (#1768)
* freelist & refcounter: implement arch states
* walk: restore and walk again when redirecting
* ROB: optimize invalidation of
rename: Re-rename instead of walking back after redirect (#1768)
* freelist & refcounter: implement arch states
* walk: restore and walk again when redirecting
* ROB: optimize invalidation of `valid`
show more ...
|
#
92a50c73 |
| 31-Oct-2022 |
wakafa <[email protected]> |
Config: minimalconfig use non-inclusive L3 cache (#1814)
* config: minimalconfig use non-inclusive L3 cache
* config: make simulation config dependent on FPGAPlatform
|
#
8a167be7 |
| 28-Oct-2022 |
Haojin Tang <[email protected]> |
huancun: use huancun of nanhu with Top-Down support (#1811)
|
#
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 ...
|
#
f1fe8698 |
| 18-Jul-2022 |
Lemover <[email protected]> |
l1tlb: tlb's req port can be configured to be block or non-blocked (#1656)
each tlb's port can be configured to be block or non-blocked.
For blocked port, there will be a req miss slot stored in tl
l1tlb: tlb's req port can be configured to be block or non-blocked (#1656)
each tlb's port can be configured to be block or non-blocked.
For blocked port, there will be a req miss slot stored in tlb, but belong to
core pipeline, which means only core pipeline flush will invalid them.
For another, itlb also use PTW Filter but with only 4 entries.
Last, keep svinval extension as usual, still work.
* tlb: add blocked-tlb support, miss frontend changes
* tlb: remove tlb's sameCycle support, result will return at next cycle
* tlb: remove param ShouldBlock, move block method into TLB module
* tlb: fix handle_block's miss_req logic
* mmu.filter: change filter's req.ready to canEnqueue
when filter can't let all the req enqueue, set the req.ready to false.
canEnqueue after filtering has long latency, so we use **_fake
without filtering, but the filter will still receive the reqs if
it can(after filtering).
* mmu.tlb: change name from BTlbPtwIO to VectorTlbPtwIO
* mmu: replace itlb's repeater to filter&repeaternb
* mmu.tlb: add TlbStorageWrapper to make TLB cleaner
more: BlockTlbRequestorIO is same with TlbRequestorIO, rm it
* mmu.tlb: rm unused param in function r_req_apply, fix syntax bug
* [WIP]icache: itlb usage from non-blocked to blocked
* mmu.tlb: change parameter NBWidth to Seq of boolean
* icache.mainpipe: fix itlb's resp.ready, not always true
* mmu.tlb: add kill sigal to blocked req that needs sync but fail
in frontend, icache,itlb,next pipe may not able to sync.
blocked tlb will store miss req ang blocks req, which makes itlb
couldn't work. So add kill logic to let itlb not to store reqs.
One more thing: fix icache's blocked tlb handling logic
* icache.mainpipe: fix tlb's ready_recv logic
icache mainpipe has two ports, but these two ports may not valid
all the same time. So add new signals tlb_need_recv to record whether
stage s1 should wait for the tlb.
* tlb: when flush, just set resp.valid and pf, pf for don't use it
* tlb: flush should concern satp.changed(for blocked io now)
* mmu.tlb: add new flush that doesn't flush reqs
Sfence.vma will flush inflight reqs and flushPipe
But some other sfence(svinval...) will not. So add new flush to
distinguish these two kinds of sfence signal
morw: forget to assign resp result when ptw back, fix it
* mmu.tlb: beautify miss_req_v and miss_v relative logic
* mmu.tlb: fix bug, when ptw back and bypass, concern level to genPPN
bug: when ptw back and bypass, forgot to concern level(1GB/2MB/4KB)
when genPPN.
by the way: some funtions need ": Unit = ", add it.
* mmu.filter: fix bug of canEnqueue, mixed with tlb_req and tlb.req
* icache.mainpipe: fix bug of tlbExcp's usage, & with tlb_need_back
Icache's mainpipe has two ports, but may only port 0 is valid.
When a port is invalid, the tlbexcp should be false.(Actually, should
be ignored).
So & tlb_need_back to fix this bug.
* sfence: instr in svinval ext will also flush pipe
A difficult problem to handle:
Sfence and Svinval will flush MMU, but only Sfence(some svinval)
will flush pipe. For itlb that some requestors are blocked and
icache doesn't recv flush for simplicity, itlb's blocked ptw req
should not be flushed.
It's a huge problem for MMU to handle for good or bad solutions. But
svinval is seldom used, so disable it's effiency.
* mmu: add parameter to control mmu's sfence delay latency
Difficult problem:
itlb's blocked req should not be abandoned, but sfence will flush
all infight reqs. when itlb and itlb repeater's delay is not same(itlb
is flushed, two cycles later, itlb repeater is flushed, then itlb's
ptw req after flushing will be also flushed sliently.
So add one parameter to control the flush delay to be the same.
* mmu.tlb: fix bug of csr.priv's delay & sfence valid when req fire
1. csr.priv's delay
csr.priv should not be delayed, csr.satp should be delayed.
for excep/intr will change csr.priv, which will be changed at one
instruction's (commit?). but csrrw satp will not, so satp has more
cycles to delay.
2. sfence
when sfence valid but blocked req fire, resp should still fire.
3. satp in TlbCsrBundle
let high bits of satp.ppn to be 0.U
* tlb&icache.mainpipe: rm commented codes
* mmu: move method genPPN to entry bundle
* l1tlb: divide l1tlb flush into flush_mmu and flush_pipe
Problem:
For l1tlb, there are blocked and non-blocked req ports.
For blocked ports, there are req slots to store missed reqs.
Some mmu flush like Sfence should not flush miss slots for outside
may still need get tlb resp, no matter wrong and correct resp.
For example. sfence will flush mmu and flush pipe, but won't flush
reqs inside icache, which waiting for tlb resp.
For example, svinval instr will flush mmu, but not flush pipe. so
tlb should return correct resp, althrough the ptw req is flushed
when tlb miss.
Solution:
divide l1tlb flush into flush_mmu and flush_pipe.
The req slot is considered to be a part of core pipeline and should
only be flushed by flush_pipe.
flush_mmu will flush mmu entries and inflight ptw reqs.
When miss but sfence flushed its ptw req, re-send.
* l1tlb: code clean, correct comments and rm unused codes
* l2tlb: divide filterSize into ifiterSize and dfilterSize
* l2tlb: prefetch req won't enter miss queue. Rename MSHR to missqueue
* l1tlb: when disable vm, ptw back should not bypass tlb and should let miss req go ahead
show more ...
|
#
53b8f1a7 |
| 14-Jul-2022 |
Lemover <[email protected]> |
dtlb: merge duplicated tlb together: one ld-tlb and one st-tlb. (#1654)
Old Edition:
2 ld tlb but with same entries. 2 st tlb but wih the same entries.
The 'duplicate' is used for timing optimizat
dtlb: merge duplicated tlb together: one ld-tlb and one st-tlb. (#1654)
Old Edition:
2 ld tlb but with same entries. 2 st tlb but wih the same entries.
The 'duplicate' is used for timing optimization that each tlb can
be placed close to mem access pipeline unit.
Problem:
The duplicate tlb takes more Power/Area.
New Edition:
Only 1 ld tlb and 1 st tlb now.
If the area is not ok, may merge ld and st together.
Fix: fix some syntax bug when changing parameters
show more ...
|
#
5f79ba13 |
| 15-Mar-2022 |
wakafa <[email protected]> |
config: set simulation flag to avoid LLC init problem (#1492)
|
#
25cb35b6 |
| 28-Jan-2022 |
Jiawei Lin <[email protected]> |
Adjusted reset signals (#1441)
* Adjusted reset signals
* Support reset tree
|
#
00240ba6 |
| 26-Jan-2022 |
Jay <[email protected]> |
ICache : fix 2 potential rule violations according to TL specification (#1444)
* ReplacePipe: block miss until get ReleaseAck
* IPrefetch: cancle prefetch req when meet MSHR
* Fetch <perf>: ad
ICache : fix 2 potential rule violations according to TL specification (#1444)
* ReplacePipe: block miss until get ReleaseAck
* IPrefetch: cancle prefetch req when meet MSHR
* Fetch <perf>: add fetch bubble performance counters
show more ...
|
#
a108d429 |
| 30-Dec-2021 |
Jay <[email protected]> |
IPrefetch: add prefetch address merge and counter (#1404)
* fix performance counter in ICacheMainpipe
* IPrefetch: add prefetch address merge and counter
|
#
7052722f |
| 21-Dec-2021 |
Jay <[email protected]> |
Add simple instruction prefetch for L2 (directed by branch prediction) (#1374)
* Add Naive Instruction Prefetch
* Add instruction prefetch module in ICache
* send Hint to L2 (prefetched data s
Add simple instruction prefetch for L2 (directed by branch prediction) (#1374)
* Add Naive Instruction Prefetch
* Add instruction prefetch module in ICache
* send Hint to L2 (prefetched data stores in L2)
* Ftq: add prefetchPtr and prefetch interface
* Fix IPrefetch PMP Port preempting problem
* Fix merge conflict
show more ...
|
#
5b7ef044 |
| 17-Dec-2021 |
Lemover <[email protected]> |
pmp: add static pmp check that stored in tlb entries (#1366)
* memblock: regnext ptw's resp
* pmp: timing optimization from tlb.sram.ppn to pmp, add static pmp check
long latency: tlb's sram m
pmp: add static pmp check that stored in tlb entries (#1366)
* memblock: regnext ptw's resp
* pmp: timing optimization from tlb.sram.ppn to pmp, add static pmp check
long latency: tlb's sram may be slow to gen ppn, ppn to pmp may be
long latency.
Solution: add static pmp check.
Fatal problem: pmp grain is smalled than TLB pages(4KB, 2MB, 1GB)
Solution: increase pmp'grain to 4K, for 4K entries, pre-check pmp and
store the result into tlb storage. For super pages, still dynamic check
that translation and check.
* pmp: change pmp grain to 4KB, change pma relative init config
* bump ready-to-run, update nemu so for pmp grain
* bump ready-to-run, update nemu so for pmp grain again
update pmp unit test. The old test assumes that pmp grain is less than 512bit.
show more ...
|
#
0fbed464 |
| 17-Dec-2021 |
Jiawei Lin <[email protected]> |
Change default L3 size to 6MB (#1365)
* Change L3 to 6MB
* Bump huancun
|
#
f1c56d6c |
| 15-Dec-2021 |
Li Qianruo <[email protected]> |
Debug Mode: support difftest with spike (#1363)
* Debug Mode: support basic difftest with spike
* Debug Mode: fix some bugs
Bugs fixed are:
1. All interrupts and exceptions cause debug mode t
Debug Mode: support difftest with spike (#1363)
* Debug Mode: support basic difftest with spike
* Debug Mode: fix some bugs
Bugs fixed are:
1. All interrupts and exceptions cause debug mode to enter park loop
2. Debug interrupt ignored due to flushPipe
show more ...
|