#
aeedc8ee |
| 08-Apr-2024 |
Guokai Chen <[email protected]> |
Frontend: add RVC illegal instruction buffer
* Sstval requires instructions to be filled into stval
|
#
002c10a4 |
| 26-Aug-2024 |
Yanqin Li <[email protected]> |
svpbmt: add simplified support (#3404)
Only the `pbmt` attribute is added and treated as MMIO when `pbmt` is NC
or IO.
---------
Co-authored-by: ngc7331 <[email protected]>
|
#
a2568a60 |
| 16-Aug-2024 |
xu_zh <[email protected]> |
IFU: fix cross-page exception (#3386)
See https://github.com/OpenXiangShan/XiangShan/pull/3354#discussion_r1718219297
Cross-page access faults are not marked (in the past 2-3 years), so this
PR
IFU: fix cross-page exception (#3386)
See https://github.com/OpenXiangShan/XiangShan/pull/3354#discussion_r1718219297
Cross-page access faults are not marked (in the past 2-3 years), so this
PR fixed that too.
Also, `crossPageIPFFix` (actually `crossPageExceptionFix`, used to
calculate precise exception address in CSR) should be set for both
pf/gpf/af (and mmio_resend pf/gpf/af).
show more ...
|
#
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 ...
|
#
7b7232f9 |
| 06-Aug-2024 |
xu_zh <[email protected]> |
IFU: fix mmio fsm for itlb handshake (#3329)
Fixes state transfer condition of `m_sendTLB` and `m_tlbResp` in IFU
mmio fsm.
https://github.com/OpenXiangShan/XiangShan/blob/091c28ff02749943c410f4
IFU: fix mmio fsm for itlb handshake (#3329)
Fixes state transfer condition of `m_sendTLB` and `m_tlbResp` in IFU
mmio fsm.
https://github.com/OpenXiangShan/XiangShan/blob/091c28ff02749943c410f414784d991bc205e8cb/src/main/scala/xiangshan/frontend/IFU.scala#L659-L663
## Story
2 years ago, TLB can be configured as `sameCycle` and therefore
`io.iTLBInter.resp.bits.miss` is in the same cycle with
`io.iTLBInter.req.fire`, see:
https://github.com/OpenXiangShan/XiangShan/blob/c3b2d83a43a64198f94aced1db4b998ebf29a3bb/src/main/scala/xiangshan/cache/mmu/TLBStorage.scala#L59-L62
In that case, the current fsm will wait in state `m_sendTLB` until
`io.iTLBInter.resp.bits.miss === false.B` (TLB hit or PTW work done),
and enters state `m_tlbResp` in next cycle, getting the correct response
(`paddr`, etc.).
However, currently `io.iTLBInter.resp.bits.miss` is returned 1 cycle
after `io.iTLBInter.req.fire`, see:
https://github.com/OpenXiangShan/XiangShan/blob/091c28ff02749943c410f414784d991bc205e8cb/src/main/scala/xiangshan/cache/mmu/TLBStorage.scala#L125-L130
And the IFU mmio fsm is unchanged, it may use the `miss` from last TLB
request, make real `miss` ignored and send invalid `paddr` to Uncache.
## Solution
1. Send `io.iTLBInter.req.valid` in state `m_sendTLB` as before, just
wait `io.iTLBInter.req.fire` to enter state `m_tlbResp`.
2. Wait `io.iTLBInter.resp.valid` in state `m_tlbResp` (in blocked TLB,
this also indicates `io.iTLBInter.resp.bits.miss === false.B`), get
valid response and enter next state.
Also:
Close #2658
show more ...
|
#
149a2326 |
| 18-Jul-2024 |
weiding liu <[email protected]> |
LoadUnit: optimize generation of vaddr for tlb query
This commit remove `prefetch` from source vaddress, because it don't need to translate virtual address. We don't need to query tlb, but we need t
LoadUnit: optimize generation of vaddr for tlb query
This commit remove `prefetch` from source vaddress, because it don't need to translate virtual address. We don't need to query tlb, but we need to do pmp check, so we also need to send signal of `no_translate`.
show more ...
|
#
e3da8bad |
| 22-Jul-2024 |
Tang Haojin <[email protected]> |
build: purge chisel 3 and add deprecation check (#3250)
|
#
8c192ff7 |
| 15-Jul-2024 |
xu_zh <[email protected]> |
IFU: remove duplicate assignment for f3_ready (#3138)
f3_ready is assigned twice under the identical condition:
-
https://github.com/OpenXiangShan/XiangShan/blob/182b7ece8ba898233f30d6cd83bbed5082
IFU: remove duplicate assignment for f3_ready (#3138)
f3_ready is assigned twice under the identical condition:
-
https://github.com/OpenXiangShan/XiangShan/blob/182b7ece8ba898233f30d6cd83bbed50825943de/src/main/scala/xiangshan/frontend/IFU.scala\#L471
-
https://github.com/OpenXiangShan/XiangShan/blob/182b7ece8ba898233f30d6cd83bbed50825943de/src/main/scala/xiangshan/frontend/IFU.scala\#L585
and the former one:
```scala
f3_ready := f3_fire || !f3_valid
// := (io.toIbuffer.ready && f3_valid && (!f3_req_is_mmio || f3_mmio_can_go) && !f3_flush) || !f3_valid
```
might not ideal since the previous mmio request may be not commited
(i.e. `mmio_state === m_waitCommit`)
therefore, remove the former assignment
show more ...
|
#
b5a614b9 |
| 11-Jul-2024 |
xu_zh <[email protected]> |
IFU: pass mmio gpf to ibuffer & gpaddr to gpaMem (#3182)
also reset `mmio_resend_(a|p|gp)f` registers when mmio instr is commited
or flush happens
|
#
91946104 |
| 09-Jul-2024 |
xu_zh <[email protected]> |
Frontend: cut waylookup gpaddr (#3139)
Currently, `gpaddr` is used only when guest page fault occurs, so it
should be possible to not store every `gpaddr` in WayLookup (as well as
in GPAMem).
C
Frontend: cut waylookup gpaddr (#3139)
Currently, `gpaddr` is used only when guest page fault occurs, so it
should be possible to not store every `gpaddr` in WayLookup (as well as
in GPAMem).
Considering that every guest page fault should issue a redirect, and
thus flush WayLookup/MainPipe/IPrefetch, we should be able to store only
the first guest page fault and its `gpaddr` in WayLookup.
By doing this, we can save `2×nWayLookupSize - 1 = 63` registers that
are used to store `gpaddr`.
This PR also includes some style changes for WayLookup to satisfy
linter.
show more ...
|
#
e4d2f6a9 |
| 08-Jul-2024 |
my-mayfly <[email protected]> |
IFU: cut the number of PC registers (#3103)
In order to reduce power consumption, some unnecessary PC registers can
be trimmed.
---------
Co-authored-by: zhou tao <[email protected]
IFU: cut the number of PC registers (#3103)
In order to reduce power consumption, some unnecessary PC registers can
be trimmed.
---------
Co-authored-by: zhou tao <[email protected]>
show more ...
|
#
195ef4a5 |
| 28-Jun-2024 |
Tang Haojin <[email protected]> |
build: bump chisel 3.6.1, scala 2.13.14, mill 0.11.8, etc. (#3118)
|
#
6b46af8d |
| 28-Jun-2024 |
Muzi <[email protected]> |
refactor: change exception encoding from one-hot to label (#3104)
|
#
b92f8445 |
| 28-Jun-2024 |
ssszwic <[email protected]> |
ICache: implement new ICache (#3051)
Co-authored-by: xu_zh <[email protected]>
|
#
ba5ba1dc |
| 15-Jun-2024 |
my-mayfly <[email protected]> |
IFU: fix the bug of postponing MMIO instruction fetch strategy (#3038)
Co-authored-by: zhou tao <[email protected]>
|
#
0c70648e |
| 14-May-2024 |
Easton Man <[email protected]> |
IFU,ICache: clock gating optimization (#2957)
Co-authored-by: Liang Sen <[email protected]>
|
#
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
|
#
c686adcd |
| 10-May-2024 |
Yinan Xu <[email protected]> |
Bump utility and disable ConstantIn by default (#2955)
* use BigInt for initValue of Constantin.createRecord
* use WITH_CONSTANTIN=1 to enable the ConstantIn plugin
|
#
d7ac23a3 |
| 14-Apr-2024 |
Easton Man <[email protected]> |
frontend: add a gpaddr write data path
add a data path in Ifu, which write gpaddr to backend at the same time as write to IBuffer
|
#
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)
|
#
b436d3b6 |
| 25-Mar-2024 |
peixiaokun <[email protected]> |
RVH: fix the errors after git rebase
|
#
21ae6bc4 |
| 15-Mar-2024 |
peixiaokun <[email protected]> |
RVH: fix a bug that gpaddr error in icache
|
#
0214776e |
| 16-Oct-2023 |
peixiaokun <[email protected]> |
RVH: update H-ext design with master
|