#
0f038924 |
| 16-Jan-2023 |
ZhangZifei <[email protected]> |
backend,vector: fix vector relative bug and first vadd instr success
Modification and Bugs includes: 1. readFpRf/writeFpRf is replaced with readFpVecRf/writeFpVecRf in some places; 2. fpWen is repla
backend,vector: fix vector relative bug and first vadd instr success
Modification and Bugs includes: 1. readFpRf/writeFpRf is replaced with readFpVecRf/writeFpVecRf in some places; 2. fpWen is replaced with fpVecWen in some places; 3. add ADD/SUB decode info 4. dispatch logic modification 5. dataWidth & wakeup logic in rs 6. ExuInput/ExuOutput at many places 7. fuSel inside FUBlock of FMAC 8. FuType encoding 9. many other bugs
show more ...
|
#
4aa9ed34 |
| 12-Jan-2023 |
fdy <[email protected]> |
vset: add vset instr support
|
#
57a10886 |
| 05-Jan-2023 |
Xuan Hu <[email protected]> |
Decoder: refactor and replace rocketchip.decoder with ListLookUp
* Use default params to avoid modification when adding new decode fields * Add new decode field "vecWen" * Replace rocketchip.decoder
Decoder: refactor and replace rocketchip.decoder with ListLookUp
* Use default params to avoid modification when adding new decode fields * Add new decode field "vecWen" * Replace rocketchip.decoder with ListLookUp * chisel3.minimizer causes Java OutOfMemory exception or function params error when adding new vector insts * Replace all X's with 0's, since the type param of ListLookUp must inherit chisel3.Data and BitPat does not inherit from chisel3.Data
show more ...
|
#
b6c99e8e |
| 29-Dec-2022 |
ZhangZifei <[email protected]> |
Merge remote-tracking branch 'origin/master' into rf-after-issue
|
#
40a70bd6 |
| 25-Dec-2022 |
ZhangZifei <[email protected]> |
backend: change vector relative IO to 128bits
|
#
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
|
#
a7a8a6cc |
| 15-Dec-2022 |
Haojin Tang <[email protected]> |
rename: use intRat for vconfig; add a vec read port
|
#
deb6421e |
| 14-Dec-2022 |
Haojin Tang <[email protected]> |
vector rename: support vector register rename
|
#
89515a3b |
| 14-Dec-2022 |
ZhangZifei <[email protected]> |
Merge remote-tracking branch 'origin/master' into rf-after-issue
more changes: load-rs in master branch does not replay load instr. But in rf-after-issue branch, it still does. rf-after-issue does n
Merge remote-tracking branch 'origin/master' into rf-after-issue
more changes: load-rs in master branch does not replay load instr. But in rf-after-issue branch, it still does. rf-after-issue does not use params to contrl whether replay or not, so re-add the "param control" again.
show more ...
|
#
37225120 |
| 07-Dec-2022 |
sfencevma <[email protected]> |
Uncache: optimize write operation (#1844)
This commit adds an uncache write buffer to accelerate uncache write
For uncacheable address range, now we use atomic bit in PMA to indicate
uncache wri
Uncache: optimize write operation (#1844)
This commit adds an uncache write buffer to accelerate uncache write
For uncacheable address range, now we use atomic bit in PMA to indicate
uncache write in this range should not use uncache write buffer.
Note that XiangShan does not support atomic insts in uncacheable address range.
* uncache: optimize write operation
* pma: add atomic config
* uncache: assign hartId
* remove some pma atomic
* extend peripheral id width
Co-authored-by: Lyn <[email protected]>
show more ...
|
#
1285b047 |
| 02-Dec-2022 |
Xuan Hu <[email protected]> |
SrcType: refactor and add vp type
|
#
5da19fb3 |
| 22-Nov-2022 |
William Wang <[email protected]> |
Merge pull request #1831 from OpenXiangShan/nanhu-lsu-timing-to-master
Rebase nanhu lsu timing opt to master
|
#
7ad02651 |
| 30-Jul-2022 |
William Wang <[email protected]> |
ldu: update lq correctly when replay_from_fetch (#1694)
uop.ctrl.replayInst in lq should be replayed when load_s2 update lq i.e. load_s2.io.out.valid
|
#
7a6c9e01 |
| 18-Nov-2022 |
Yinan Xu <[email protected]> |
Merge pull request #1829 from OpenXiangShan/master-wfi-update
rob: fix the WFI implementation
|
#
eb163ef0 |
| 17-Nov-2022 |
Haojin Tang <[email protected]> |
top-down: introduce top-down counters and scripts (#1803)
* top-down: add initial top-down features
* rob600: enlarge queue/buffer size
* :art: After git pull
* :sparkles: Add BranchResteer
top-down: introduce top-down counters and scripts (#1803)
* top-down: add initial top-down features
* rob600: enlarge queue/buffer size
* :art: After git pull
* :sparkles: Add BranchResteers->CtrlBlock
* :sparkles: Cg BranchResteers after pending
* :sparkles: Add robflush_bubble & ldReplay_bubble
* :ambulance: Fix loadReplay->loadReplay.valid
* :art: Dlt printf
* :sparkles: Add stage2_redirect_cycles->CtrlBlock
* :saprkles: CtrlBlock:Add s2Redirect_when_pending
* :sparkles: ID:Add ifu2id_allNO_cycle
* :sparkles: Add ifu2ibuffer_validCnt
* :sparkles: Add ibuffer_IDWidth_hvButNotFull
* :sparkles: Fix ifu2ibuffer_validCnt
* :ambulance: Fix ibuffer_IDWidth_hvButNotFull
* :sparkles: Fix ifu2ibuffer_validCnt->stop
* feat(buggy): parameterize load/store pipeline, etc.
* fix: use LoadPipelineWidth rather than LoadQueueSize
* fix: parameterize `rdataPtrExtNext`
* fix(SBuffer): fix idx update logic
* fix(Sbuffer): use `&&` to generate flushMask instead of `||`
* fix(atomic): parameterize atomic logic in `MemBlock`
* fix(StoreQueue): update allow enque requirement
* chore: update comments, requirements and assertions
* chore: refactor some Mux to meet original logic
* feat: reduce `LsMaxRsDeq` to 2 and delete it
* feat: support one load/store pipeline
* feat: parameterize `EnsbufferWidth`
* chore: resharp codes for better generated name
* top-down: add initial top-down features
* rob600: enlarge queue/buffer size
* top-down: add l1, l2, l3 and ddr loads bound perf counters
* top-down: dig into l1d loads bound
* top-down: move memory related counters to `Scheduler`
* top-down: add 2 Ldus and 2 Stus
* top-down: v1.0
* huancun: bump HuanCun to a version with top-down
* chore: restore parameters and update `build.sc`
* top-down: use ExcitingUtils instead of BoringUtils
* top-down: add switch of top-down counters
* top-down: add top-down scripts
* difftest: enlarge stuck limit cycles again
Co-authored-by: gaozeyu <[email protected]>
show more ...
|
#
5b47c58c |
| 03-Oct-2022 |
Yinan Xu <[email protected]> |
csr: add customized bits for fusion and wfi
|
#
c2d1ec7d |
| 16-Aug-2022 |
Lingrui98 <[email protected]> |
bpu: refactor prediction i/o bundles
|
#
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 ...
|
#
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 ...
|
#
6474c47f |
| 14-Jul-2022 |
Yinan Xu <[email protected]> |
rob: optimize timing for commit and walk (#1644)
* rob: separate walk and commit valid bits
* rob: optimize instrCnt timing
* rob: fix blockCommit condition when flushPipe
When flushPipe is
rob: optimize timing for commit and walk (#1644)
* rob: separate walk and commit valid bits
* rob: optimize instrCnt timing
* rob: fix blockCommit condition when flushPipe
When flushPipe is enabled, it will block commits in ROB. However,
in the deqPtrModule, the commit is not blocked. This commit fixes
the issue.
show more ...
|
#
61a56a41 |
| 14-Jul-2022 |
Yinan Xu <[email protected]> |
ibuffer: optimize read timing (#1652)
* ibuf: optimize register namings
* ibuffer: re-write data read logic
|
#
f025d715 |
| 13-Jul-2022 |
Yinan Xu <[email protected]> |
decode: move the soft-prefetch decoder to rename (#1646)
This commit moves the decoder of software prefetch instructions to
the rename stage.
Previously the decoding of software prefetch instruc
decode: move the soft-prefetch decoder to rename (#1646)
This commit moves the decoder of software prefetch instructions to
the rename stage.
Previously the decoding of software prefetch instructions affects
the imm gen and causes a long critical path.
show more ...
|
#
74515c5a |
| 12-Jul-2022 |
Yinan Xu <[email protected]> |
jump: delay pc and jalr_target for one cycle (#1640)
|
#
bcce877b |
| 12-Jul-2022 |
Yinan Xu <[email protected]> |
rs: optimize timing for dispatch and wakeup (#1621)
This commit optimizes the timing of reservation stations.
* dispatched uops are latched and bypassed to s1_out
* wakeup from slowPorts are l
rs: optimize timing for dispatch and wakeup (#1621)
This commit optimizes the timing of reservation stations.
* dispatched uops are latched and bypassed to s1_out
* wakeup from slowPorts are latched and bypassed to s1_data
* rs: optimize allocation selection
Change select policy for allocation. Should avoid issuing the just
dispatched instructions in some cases.
* rs: disable load balance for load units
show more ...
|
#
6e7c9679 |
| 06-Jul-2022 |
huxuan0307 <[email protected]> |
decode: Replace dontcare field with signal x (#1615)
* Remove unused field isRVF
* Replace 3rd srcType of non-fp insts and FuType.{fmisc, i2f} insts with SrcType.X
|