History log of /XiangShan/src/main/scala/xiangshan/frontend/IBuffer.scala (Results 1 – 25 of 30)
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 ...


# 9cd76b21 17-Jan-2025 Zhaoyang You <[email protected]>

fix(TopDown, frontend): remove frontBubble double count on redirect (#4196)


# e836c770 16-Jan-2025 Zhaoyang You <[email protected]>

feat(TopDown): add TopDown PMU Events (#4122)

This PR adds hardware synthesizable three-level categorized TopDown
performance counters.
Level-1: Retiring, Frontend Bound, Bad Speculation, Backend Bo

feat(TopDown): add TopDown PMU Events (#4122)

This PR adds hardware synthesizable three-level categorized TopDown
performance counters.
Level-1: Retiring, Frontend Bound, Bad Speculation, Backend Bound.
Level-2: Fetch Latency Bound, Fetch Bandwidth Bound, Branch
Missprediction, machine clears, Core Bound, Memory Bound.
Leval-3: L1 Bound, L2 Bound, L3 Bound, Mem Bound, Store Bound.

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 ...


# fbdb359d 08-Nov-2024 Muzi <[email protected]>

fix(ICache): cancel prefetch when there is exception from backend (#3787)


# cf7d6b7a 25-Oct-2024 Muzi <[email protected]>

style(Frontend): use scalafmt formatting frontend (#3370)

Format frontend according to the scalafmt file drafted in #3061.


# 948e8159 19-Sep-2024 Easton Man <[email protected]>

feat(ifu,ibuf): add isLastInFtqEntry in IBuffer


# c1b28b66 09-Sep-2024 Tang Haojin <[email protected]>

fix(exception): check high address bits of jump target (#3003)

This commit contains high address bits checking of jump target. In
previous implementation, we simply truncated the higher bits of jump

fix(exception): check high address bits of jump target (#3003)

This commit contains high address bits checking of jump target. In
previous implementation, we simply truncated the higher bits of jump
target address, which made it impossible to raise exceptions in such
cases.

To resolve this problem, we detect the invalid jump target in
jump/branch/CSR and, this information to frontend and store the complete
invalid target in a single register in backend. The frontend will then
raise an exception to backend and backend will also use the invalid
target in the register to write xtval and mepc.

---------

Co-authored-by: Muzi <[email protected]>
Co-authored-by: ngc7331 <[email protected]>

show more ...


# 27d10d0c 27-Aug-2024 Easton Man <[email protected]>

fix(frontend): update Front_Bubble pmu

ibuffer deq signal had changed recently, this commit update the
pmu definition accordingly.


# f5b900a2 26-Aug-2024 Xuan Hu <[email protected]>

IBuffer: the priority of illegal instruction should be lower than fetch exception

* This commit fix the priorities between EX_II and other fetch exceptions in exception type transfer in IBuffer.
* T

IBuffer: the priority of illegal instruction should be lower than fetch exception

* This commit fix the priorities between EX_II and other fetch exceptions in exception type transfer in IBuffer.
* The fetch exceptions always have higher priority than EX_II. For example, when instruction access fault occurs, there will be not valid instruction.

show more ...


# 92c61038 16-Aug-2024 Xuan Hu <[email protected]>

Frontend,Backend: add xxtvala support

* utils
* Add checkInputWidth function in NamedUInt to check if the UInt arg passed in has the same width as it defined.
* Frontend
* Pass the unexpanded in

Frontend,Backend: add xxtvala support

* utils
* Add checkInputWidth function in NamedUInt to check if the UInt arg passed in has the same width as it defined.
* Frontend
* Pass the unexpanded instruciton to IBuffer if the C extension 16 bits instruction is illegal.
* No need to use bypass illBuf, since the origin 16 bits instruction will be passed in the ctrlflow bundle.
* IBuffer
* Merge exceptionType and crossPageIPFFix into 3bit field, which type is IBufferExceptionType.
* IBufferExceptionType can hold illegal instruction exception.
* Backend
* CSROpType.ro is removed, since we can use rs1 and rd passed in imm field to distinguish CSRR and CSRW in CSR module.
* Create TrapInstMod to store the trap instruction and handle its update.

show more ...


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

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


# 88895b11 12-Aug-2024 xu_zh <[email protected]>

Frontend: refactor exceptions to labels (#3354)

Combine `excp_pf`/`_gpf`/`_af` into `exception` to:
1. Reduce code redundancy and improve readability and maintainability
e.g. `!itlb_excp_af && !it

Frontend: refactor exceptions to labels (#3354)

Combine `excp_pf`/`_gpf`/`_af` into `exception` to:
1. Reduce code redundancy and improve readability and maintainability
e.g. `!itlb_excp_af && !itlb_excp_pf && !itlb_excp_gpf && !pmp_excp_af
&& !pmp_excp_mmio`
-> `exception === ExcedptionType.none && !mmio`
2. Select exceptions as they are generated (e.g. from iTLB/PMP, or
data/meta array ECC check) on a priority basis (e.g. iTLB over PMP),
ensuring that there is at most one exception in the pipeline (and on the
ports of iCache -> IFU)
3. Save a little bit of pipeline/WayLookup registers (i.e. 3 bit
`excp_pf`/`_gpf`/`_af` -> 2bit `exception`)

show more ...


# a5546049 05-Aug-2024 xiaofeibao <[email protected]>

IBuffer: change read ptr logic for fix timing, change outputEntries logic for better performance


# 8506cfc0 04-Aug-2024 xiaofeibao <[email protected]>

Decode and Ibuffer: change decodeCanAccept and bypass logic for fix timing


# 6b46af8d 28-Jun-2024 Muzi <[email protected]>

refactor: change exception encoding from one-hot to label (#3104)


# e778bb8a 17-May-2024 xiaofeibao-xjtu <[email protected]>

IBuffer: fix a bypass bug when decode stage can not accept all the bypass insts (#2985)


# bad60841 10-May-2024 Xiaokun-Pei <[email protected]>

IFU & GPAMem, RVH: fix the bug about getting gpa (#2960)

1. Delete some useless codes about gpaddr.
2. fix the bugs about wrong gpa was writen in mtval2 or htval when guest
page fault occured


# 78c76c74 27-Apr-2024 Tang Haojin <[email protected]>

IBuffer: consider valid signal in XSError (#2921)


# 3f2dd678 12-Apr-2024 Xuan Hu <[email protected]>

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


# 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


# 9afa8a47 12-Apr-2024 Tang Haojin <[email protected]>

Ibuffer, PreDecode: consider valids for assertions (#2871)


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

RVH: finish the desigh of H extention


# ac3c9508 25-Mar-2024 Xuan Hu <[email protected]>

IBuffer: fix the update of deqPtrNext and deqBankPtrVecNext

* The update of deqPtrNext and deqBankPtrVecNext need not decodeCanAccept, since decode.io.in.ready may from complexDecoder


# 05cc2a4e 18-Mar-2024 Xuan Hu <[email protected]>

Decode,IBuffer: fix circle dependency deadlock

* Add a new field `canAccept` passed from decode to notice `IBuffer` that it can deq new instructions.
* IBuffer.io.out(i).ready depends on IBuffer.io.

Decode,IBuffer: fix circle dependency deadlock

* Add a new field `canAccept` passed from decode to notice `IBuffer` that it can deq new instructions.
* IBuffer.io.out(i).ready depends on IBuffer.io.out(i).ready.
* Since decode promises accepting insts in order, priority encoder is used to simplify the accumulation of `numDeq`.
* `numDeq` records the number of deq insts from ibuffer, not from bypass. And it is used to update deqPtr and corresponding deqBankPtr.
* Guard numFromFetch calculation with io.in.valid to avoid updating enqPtr when input signal is invalid.
* Todo: check ibuffer timing, critical path maybe ibuffer.io.out.valid -> ibuffer.io.out.ready -> ibuffer.validEntries -> nextValidEntries -> allowEnq

show more ...


12