#
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 ...
|
#
4d7fbe77 |
| 17-Mar-2025 |
yulightenyu <[email protected]> |
feat(XSNoCTop): Power down and WFI gating (#4373)
The low-power features include the following: * when Core is in WFI state, Core+L2 clock is gated and restore clocks only when interrupt/reset/snoo
feat(XSNoCTop): Power down and WFI gating (#4373)
The low-power features include the following: * when Core is in WFI state, Core+L2 clock is gated and restore clocks only when interrupt/reset/snoop. * low-power process is controlled by FSM to follow the steps: flush L2 -> core enter WFI state -> send power-down request to SoC (o_cpu_no_op) * SoC plays as PPU to generate power on/off sequence with signals: isolation/reset/clock, also the power on/off req/ack signals
show more ...
|
#
8882eb68 |
| 21-Feb-2025 |
Xin Tian <[email protected]> |
feat(bitmap/memenc): support memory isolation by bitmap checking and memory encrpty used SM4-XTS (#3980)
- Add bitmap module in MMU for memory isolation - Add memory encryption module based on AXI p
feat(bitmap/memenc): support memory isolation by bitmap checking and memory encrpty used SM4-XTS (#3980)
- Add bitmap module in MMU for memory isolation - Add memory encryption module based on AXI protoco - Can don't using these modules by setting the option `HasMEMencryption` & `HasBitmapCheck` to false
show more ...
|
#
881e32f5 |
| 22-Jan-2025 |
Zifei Zhang <[email protected]> |
submodule(CoupledL2, OpenLLC): bump L2 and LLC (#4189)
This pull request includes: - add compilation support for CHI Issue C (but not yet verified) - enable DataCheck and Poison - add requirement fo
submodule(CoupledL2, OpenLLC): bump L2 and LLC (#4189)
This pull request includes: - add compilation support for CHI Issue C (but not yet verified) - enable DataCheck and Poison - add requirement for CHI port width check - add prefetch control by custom csr - optimize timing in CoupledL2, mainly paths from SRAM to ICG - add clock gate to each of the splitted SRAMs in CoupledL2 - fix several bugs concerning WriteEvictOrEvict, SnpQuery, SnpCleanShared, SnpStash*, etc
---------
Co-authored-by: zhanglinjuan <[email protected]> Co-authored-by: Ma-YX <[email protected]> Co-authored-by: Yanqin Li <[email protected]>
show more ...
|
#
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 ...
|
#
b7a63495 |
| 16-Jan-2025 |
NewPaulWalker <[email protected]> |
feat(custom, csr): add two custom CSRs mcorepwr and mflushpwr to control power (#4164)
Co-authored-by: Zhu Yu <[email protected]>
|
#
6c106319 |
| 30-Dec-2024 |
xu_zh <[email protected]> |
feat(ICache): ECC error injection (#4044)
This PR is part of *RAS(Reliability, Accessibility, Serviceability)* error recovery features.
- Add a series of mmio-mapped CSR to control ICache ECC check
feat(ICache): ECC error injection (#4044)
This PR is part of *RAS(Reliability, Accessibility, Serviceability)* error recovery features.
- Add a series of mmio-mapped CSR to control ICache ECC check & ECC inject features - Implement ICache ECC injection - M-state software can write `eccctrl` to trigger error injection to meta/dataArray, next read can trigger auto-recovery (implemented in #3899) - Remove custom CSR `Sfetchctl`
# Details ## CSR The base address of the added mmio-mapped CSR is `0x38022080` and the registers is defined as below: ``` 64 10 7 4 2 1 0 0x00 eccctrl | WARL | ierror | istatus | itarget | inject | enable |
64 PAddrBits-1 0 0x08 ecciaddr | WARL | paddr | ``` | CSR | field | desp | | --- | --- | --- | | eccctrl | enable | ECC check enable | | eccctrl | inject | ECC inject enable (write 1 to trigger injection, read always 0) | | eccctrl | itarget | ECC inject target<br>0: metaArray<br>1: rsvd<br>2: dataArray<br>3: rsvd | | eccctrl | istatus | ECC inject status (read-only)<br>0: idle: inject controller idle, goes to working when received a inject request (i.e. write 1 to eccctrl.inject)<br>1: working: inject controller working, goes to injected when finished / error when failed<br>2: injected, goes to idle after read<br>3: rsvd<br>4: rsvd<br>5: rsvd<br>6: rsvd<br>7: error: inject failed (check eccctl.ierror for reason), goes to idle after read | | eccctrl | ierror | ECC error reason (read-only, valid only if `eccctrl.istatus==error`)<br>0: ECC check is not enabled (i.e. `!eccctrl.enable`)<br>1: inject target invalid (i.e. `eccctrl.itarget==rsvd`)<br>2: inject addr (i.e. `ecciaddr.paddr`) not in ICache<br>3: rsvd<br>4: rsvd<br>5: rsvd<br>6: rsvd<br>7: rsvd | | ecciaddr | paddr | Physical address of the inject target |
## Inject method ```asm $INJECT_ADDR: # maybe do something else ret
test: la t0, $BASE_ADDR # load icache control base addr la t1, $INJECT_ADDR # load inject addr jalr ra, 0(t1) # jump to injected addr to load it i sd t1, 8(t0) # set inject addr la t2, (target << 2 | 1 << 1 | 1 << 0) # load inject target & inject enable & ecc enable sd t1, 0(t0) # set inject enable & ecc enable loop: ld t1, 0(t0) # get ecc control state andi t1, t1, (0b11 << (4+1)) # get high bits of inject state beqz t1, loop # if is idle, or working, loop
addi t1, t1, -1 # t1 = inject_state[2:1] - 1 bnez t1, error # if is not injected, error or rsvd
jalr ra, 0(t1) # jump to injected addr to trigger error j finish
error: # handle error finish: # finish ``` Or, checkout https://github.com/OpenXiangShan/nexus-am/pull/48
show more ...
|
#
39be24bc |
| 12-Dec-2024 |
xiaofeibao <[email protected]> |
fix(decode): scala fp fu's fmt use fpuCtrl instead of vsew
|
#
4907ec88 |
| 19-Sep-2024 |
chengguanghui <[email protected]> |
feat(trace): add trace buffer.
|
#
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 ...
|
#
71b6c42e |
| 14-Nov-2024 |
xu_zh <[email protected]> |
fix(CSR,RVC): c.fp instrs should be illegal when fs is off (#3859)
* fix RVC floating-point inst raise EX_II in predecode when xstatus.fs
is off
Fix #3864
Update: https://github.com/OpenXiang
fix(CSR,RVC): c.fp instrs should be illegal when fs is off (#3859)
* fix RVC floating-point inst raise EX_II in predecode when xstatus.fs
is off
Fix #3864
Update: https://github.com/OpenXiangShan/rocket-chip/pull/20 is merged
and this PR is rebased, ready to review.
---------
Co-authored-by: sinceforYy <[email protected]>
show more ...
|
#
614d2bc6 |
| 08-Nov-2024 |
HeiHuDie <[email protected]> |
feat(zvfh,zfh): add F16 support
|
#
fbdb359d |
| 08-Nov-2024 |
Muzi <[email protected]> |
fix(ICache): cancel prefetch when there is exception from backend (#3787)
|
#
948e8159 |
| 19-Sep-2024 |
Easton Man <[email protected]> |
feat(ifu,ibuf): add isLastInFtqEntry in IBuffer
|
#
8bc90631 |
| 05-Oct-2024 |
Zehao Liu <[email protected]> |
fix(Smrnmi): expand NMI interrupt to two types and route the nmi signals to XSTOP (#3691)
|
#
cc6e4cb5 |
| 29-Sep-2024 |
chengguanghui <[email protected]> |
feat(Trigger): Trigger Module support mcontrol6.
|
#
dd286b6a |
| 11-Sep-2024 |
Yanqin Li <[email protected]> |
feat(pbmt): support PBMTE in MMU (#3521)
Co-authored-by: Xuan Hu <[email protected]>
|
#
6112d994 |
| 09-Sep-2024 |
xiaofeibao <[email protected]> |
timing(Backend): remove useless ldest=/=0.U logic because rfWen will be false
|
#
248b9a04 |
| 09-Sep-2024 |
Yanqin Li <[email protected]> |
feat(ROB): add InstInfoEntry back and record when writing back
|
#
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 ...
|
#
c2a2229d |
| 05-Sep-2024 |
lewislzh <[email protected]> |
feat(riscv64): support RISC-V Smrnmi extension (#3480)
|
#
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 ...
|
#
aeedc8ee |
| 08-Apr-2024 |
Guokai Chen <[email protected]> |
Frontend: add RVC illegal instruction buffer
* Sstval requires instructions to be filled into stval
|
#
97929664 |
| 23-Aug-2024 |
Xiaokun-Pei <[email protected]> |
MMU, RVH: add the check of gpaddr high bits and fix some bugs (#3348)
|