History log of /XiangShan/src/main/scala/xiangshan/mem/pipeline/AtomicsUnit.scala (Results 1 – 25 of 108)
Revision Date Author Comments
# 1592abd1 08-Apr-2025 Yan Xu <[email protected]>

feat: support inst lifetime trace (#4007)

PerfCCT(performance counter commit trace) is a Instruction-level
granularity perfCounter like GEM5
How to use this:
1. Make with "WITH_CHISELDB=1" argument

feat: support inst lifetime trace (#4007)

PerfCCT(performance counter commit trace) is a Instruction-level
granularity perfCounter like GEM5
How to use this:
1. Make with "WITH_CHISELDB=1" argument
2. Run with "--dump-db --dump-select-db lifetime", then get the database
3. Instruction lifetime visualize run "python3 scripts/perfcct.py
"the-db-file-path" -p 1 -v | less"
4. Analysis script now is in XS-GEM5 repo, see
https://github.com/OpenXiangShan/GEM5/blob/xs-dev/util/ClockAnalysis.py

How it works:
1. Allocate one unique tag "seqNum" like GEM5 for each instruction at
fetch stage
2. Passing the "seqNum" in each pipeline
3. Recording perf data through the DPIC interface

show more ...


# 17b54df0 01-Apr-2025 zhanglinjuan <[email protected]>

fix(AtomicsUnit): flush sbuffer until sbuffer is empty (#4487)

In the previous design, AtomicsUnit sends out sbuffer flush request only
under `s_tlb_and_flush_sbuffer_req` state. The request sets sb

fix(AtomicsUnit): flush sbuffer until sbuffer is empty (#4487)

In the previous design, AtomicsUnit sends out sbuffer flush request only
under `s_tlb_and_flush_sbuffer_req` state. The request sets sbuffer
under `x_drain_all` state. Sbuffer returns to `x_idle` state when it is
empty. However StoreQueue may not be fully cleared at this point because
there could be committed stores that haven't yet entered sbuffer. After
these stores eventually enter sbuffer, sbuffer remains in `x_idle` state
and will not flush them into DCache. This results in sbuffer being
unable to drain completely, therefore the atomic instruction gets into
deadlock.

This commit fixes this bug by continuously request sbuffer flush until
sbuffer is fully drained.

show more ...


# 9e12e8ed 08-Feb-2025 cz4e <[email protected]>

style(Bundles): move bundles to Bundles.scala (#4247)


# 59ef52f3 21-Jan-2025 zhanglinjuan <[email protected]>

fix(AtomicsUnit): atomic access on uncache should raise af (#4214)

Atomic access on uncache or MMIO region is not supported for now. The
previous design did not consider exception handling for atomi

fix(AtomicsUnit): atomic access on uncache should raise af (#4214)

Atomic access on uncache or MMIO region is not supported for now. The
previous design did not consider exception handling for atomic
instructions with PBMT=NC.

show more ...


# 8b33cd30 13-Dec-2024 klin02 <[email protected]>

feat(XSLog): move all XSLog outside WhenContext for collection

As data in WhenContext is not acessible in another module. To support
XSLog collection, we move all XSLog and related signal outside
Wh

feat(XSLog): move all XSLog outside WhenContext for collection

As data in WhenContext is not acessible in another module. To support
XSLog collection, we move all XSLog and related signal outside
WhenContext. For example, when(cond1){XSDebug(cond2, pable)} to
XSDebug(cond1 && cond2, pable)

show more ...


# 38c29594 26-Nov-2024 zhanglinjuan <[email protected]>

feat(MemBlock): add support for Zacas extension

fix(AtomicsUnit, MemBlock): fix loss of multiple stds

In the previous design, AtomicsUnit receives stds from StdExeUnit and
arbitrate at most one std

feat(MemBlock): add support for Zacas extension

fix(AtomicsUnit, MemBlock): fix loss of multiple stds

In the previous design, AtomicsUnit receives stds from StdExeUnit and
arbitrate at most one std uop for one cycle. This works fine on most of
the AMOs and LR/SC because they require only one std uop. However AMOCAS
requires at least two std uops, which may be issued from two separate
issue queues at the same time, leading to the loss of std uops.

This commit fixes this by taking all the outputs of the StdExeUnits into
account with arbitration logics.

fix(AtomicsUnit): DCache req can only be sent at `s_cache_req`

fix(AtomicsUnit, difftest): fix difftest io for atomic events

fix(MainPipe): fix precedence of `&` and `=/=` operator

fix(MainPipe): AMOCAS should not wait for AMOALU

fix(MemBlock): remove unnecessary assertion

fix(MainPipe): only CAS instruction can assert `s3_cas_fail`

fix(AtomicsUnit): fix bug in data select logic

submodule(difftest): bump difftest

show more ...


# 12861ac7 21-Nov-2024 linzhida <[email protected]>

feat(Backend): add support for Zacas extension

misc: remove assert temporarily


# 189833a1 05-Dec-2024 Haoyuan Feng <[email protected]>

feat(pointer masking): support Ssnpm & Smnpm & Smmpm (#3921)

feat(pointer masking): support Ssnpm & Smnpm & Smmpm


# bb76fc1b 10-Oct-2024 Yanqin Li <[email protected]>

fix(NC): fix a list of bugs of NC WMO access

* fix(PBMT): skip nc difftest and handle the conflict of nc and normal store

* fix(PBMT): nc st req is changed to a state machine execution

* fix(pbmt)

fix(NC): fix a list of bugs of NC WMO access

* fix(PBMT): skip nc difftest and handle the conflict of nc and normal store

* fix(PBMT): nc st req is changed to a state machine execution

* fix(pbmt): fix typo and control error of nc ld

* fix(pbmt): nc data assignment error

* fix(pbmt): nc should be used to wakeup

* fix(pbmt): remove wrong assert

* fix(pbmt): lots of bugs of nc st ld forward

* fix(pbmt): fix address align error

show more ...


# e7ab4635 12-Nov-2024 Huijin Li <[email protected]>

area(MemBlock): remove redundant signals to optimise area (#3560)

optimise redundant signals to reduce MemBlock area.
1. optimise 'exceptionVec', selected by LduCfg or StaCfg;
2. optimise 'fuType'

area(MemBlock): remove redundant signals to optimise area (#3560)

optimise redundant signals to reduce MemBlock area.
1. optimise 'exceptionVec', selected by LduCfg or StaCfg;
2. optimise 'fuType', reassign the value when writeback Rob in pipeline,
so no longer saved in LSQ.
3. optimise 'uop.imm', vaddr is computed in StoreMisalignBuffer and
there is no need to store the uop.imm.

show more ...


# 074ad6aa 06-Nov-2024 zhanglinjuan <[email protected]>

style(AtomicsUnit): remove unnecessary logics (#3836)

Atomics memory operations only work on word, double word and quad word
in the future. Therefore any code concerning byte and half word is
redu

style(AtomicsUnit): remove unnecessary logics (#3836)

Atomics memory operations only work on word, double word and quad word
in the future. Therefore any code concerning byte and half word is
redundant and only contributes to worse timing and area.

show more ...


# b0a60050 30-Oct-2024 Guanghui Cheng <[email protected]>

fix(AtomicsUnit): Assert `atom_override_xtval` when trigger fire. (#3803)


# 204141ef 25-Oct-2024 Guanghui Cheng <[email protected]>

fix(trigger): move trigger checking to `s_tlb_and_flush_sbuffer_req` in AtomicsUnit (#3712)


# ad415ae0 21-Sep-2024 Xiaokun-Pei <[email protected]>

feat(trap): support m/htinst for specific G-stage translation (#3604)

According to RISC-V priv spec, mtinst/htinst could be always written
zero on trap into M/HS-mode, except for Guest-Page-Fault t

feat(trap): support m/htinst for specific G-stage translation (#3604)

According to RISC-V priv spec, mtinst/htinst could be always written
zero on trap into M/HS-mode, except for Guest-Page-Fault traps that meet
both of the following conditions:
- the trap is caused by a G-stage translation which supports VS-stage
translation
- a nonzero value is written to mtval2/htval

"isForVSnonLeafPTE" is used only in exceptional circumstances that gpf
happens in the G-stage translation which supports VS-stage translation,
such as searching the non-leaf pte of VS-stage.

This patch adds support for writing proper value to mtinst/htinst when
specific trap occurs. And bump the nemu.

show more ...


# db6cfb5a 19-Sep-2024 Haoyuan Feng <[email protected]>

fix(exception): check high address bits of lsu (#3596)

In previous implementation, we simply truncated the higher bits of jump
target or load & store address, which made it impossible to raise
exc

fix(exception): check high address bits of lsu (#3596)

In previous implementation, we simply truncated the higher bits of jump
target or load & store address, which made it impossible to raise
exceptions in such cases.

Commit
https://github.com/OpenXiangShan/XiangShan/commit/c1b28b66879239a5b3a44741376f3b002e8ac834
has already fixed high address bits checking of jump target. This commit
fixes lsu part, checking full address in tlb and passing full address
directly to csr.

show more ...


# 52922235 29-Aug-2024 Haoyuan Feng <[email protected]>

fix(AtomicsUnit) : mmio address should report access fault (#3443)


# 7e0f64b0 21-Aug-2024 Guanghui Cheng <[email protected]>

Trigger: refactor trigger information in pipeline. (#3403)


# 28ac1c16 12-Jul-2024 xiaofeibao-xjtu <[email protected]>

Backend & MemBlock: feedback use lqidx instead of robidx for fix timing and fix bug of vld feedback (#3189)


# 38f78b5d 10-Jul-2024 xiaofeibao-xjtu <[email protected]>

Backend&MemBlock: feedback use sqidx instead of robidx and uopidx for fix timing (#3172)


# 5adc4829 16-Jun-2024 Yanqin Li <[email protected]>

memblock: add rest clockgate of reg (#3017)

Co-authored-by: cai luoshan <[email protected]>
Co-authored-by: Cai Luoshan <[email protected]>
Co-authored-by: good-circle <

memblock: add rest clockgate of reg (#3017)

Co-authored-by: cai luoshan <[email protected]>
Co-authored-by: Cai Luoshan <[email protected]>
Co-authored-by: good-circle <[email protected]>
Co-authored-by: Ma-YX <[email protected]>
Co-authored-by: Ma-YX <[email protected]>
Co-authored-by: CharlieLiu <[email protected]>

show more ...


# 13a87dc5 19-Apr-2024 Xiaokun-Pei <[email protected]>

LSU, RVH: fix the bug about the exception vaddr of guest page fault (#2898)

After new backend was merged into master, the guest page fault was
delete from fuConfig. That results in the wrong guest

LSU, RVH: fix the bug about the exception vaddr of guest page fault (#2898)

After new backend was merged into master, the guest page fault was
delete from fuConfig. That results in the wrong guest page fault
exception vaddr in CSR module. This commit adds gpf back to fuConfig

show more ...


# e25e4d90 11-Apr-2024 Xuan Hu <[email protected]>

Merge remote-tracking branch 'upstream/master' into tmp-master

TODO: add gpaddr data path from frontend to backend


# a4f9c77f 29-Feb-2024 peixiaokun <[email protected]>

RVH: rewrite the logic of getting gpaddr when guest page fault


# efe8c804 16-Jan-2024 xuzefan <[email protected]>

RVH: fix AMO Guest page fault problem
AtomicsUnit forgets to handle Guest Page Fault at state s_pm, which causes access to DCache and an assertion fail.


# d0de7e4a 26-Aug-2023 peixiaokun <[email protected]>

RVH: finish the desigh of H extention


12345