#
522c7f99 |
| 07-Mar-2025 |
Anzo <[email protected]> |
fix(LSU): misaligned violation detection stuck (#4369)
Since a load instruction that cross 16Byte needs to be split and accessed twice, it needs to enter the `RAR Queue` twice, but occupies only one
fix(LSU): misaligned violation detection stuck (#4369)
Since a load instruction that cross 16Byte needs to be split and accessed twice, it needs to enter the `RAR Queue` twice, but occupies only one `virtual load queue`, so in the extreme case it may happen that 36 load instructions that span 16Byte fill all 72 `RAR queues`.
---
There is some problem with our previous handling; if the oldest load instruction spanning 16Byte enters the `replayqueue` and at the same time there exists an instruction in the `loadmisalignbuffer` that can't finish executing because the `RAR Queue` is full, then the oldest load instruction is never cannot be issued because the `loadmisalignbuffer` has instructions in it all the time.
---
Therefore, we use a more violent scheme to do this. When the RAR is full, we let the misaligned load generate a rollback, and the next load instruction that the loadmisalignbuffer can receive must be the oldest (if it is misaligned).
show more ...
|
#
9e12e8ed |
| 08-Feb-2025 |
cz4e <[email protected]> |
style(Bundles): move bundles to Bundles.scala (#4247)
|
#
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 ...
|
#
909ea138 |
| 16-Dec-2024 |
Anzo <[email protected]> |
fix(LSQ): modify misaligned `forward fault` detection (#4038)
Previously, I used an inappropriate way for another misalign to trigger a `forward fault`:
https://github.com/OpenXiangShan/XiangShan/
fix(LSQ): modify misaligned `forward fault` detection (#4038)
Previously, I used an inappropriate way for another misalign to trigger a `forward fault`:
https://github.com/OpenXiangShan/XiangShan/blob/38d0d7c5a34a23dfdb58a3cb2737c3cfddb3ec9d/src/main/scala/xiangshan/mem/lsqueue/StoreQueue.scala#L684-L711
This would cause the `BlockSqIdx` passed to `LoadQueueReplay` to use the `sqIdx` from `uop` instead of the `sqIdx` with the unalign flag bit:
https://github.com/OpenXiangShan/XiangShan/blob/38d0d7c5a34a23dfdb58a3cb2737c3cfddb3ec9d/src/main/scala/xiangshan/mem/lsqueue/StoreQueue.scala#L776-L782
**This leads to a possible stuck in `LoadQueueReplay`.**
And to resolve the stuck, we incorrectly introduced this Commit(af757d1b973e03dae3ce0078a4a8249b593188ec).
This Commit(af757d1b973e03dae3ce0078a4a8249b593188ec) causes `BlockSqIdx` to unblock without `DataValid`. This leads to certain performance issues.
This revision fixes the inappropriate `forward fault` triggering method and reverses the Commit(af757d1b973e03dae3ce0078a4a8249b593188ec).
**This should bring performance back up again.** ### Apologies for my mistake.
show more ...
|
#
af757d1b |
| 01-Dec-2024 |
Anzooooo <[email protected]> |
fix(LoadQueueReplay): more precise for unblocking `forwarding fault`
It is not necessary to check whether the storequeue entry pointed to by sqidx is complete, because this entry is the store that f
fix(LoadQueueReplay): more precise for unblocking `forwarding fault`
It is not necessary to check whether the storequeue entry pointed to by sqidx is complete, because this entry is the store that follows this load.
show more ...
|
#
b240e1c0 |
| 07-Nov-2024 |
Anzooooo <[email protected]> |
feat(Zicclsm): refactoring misalign and support vector misalign
|
#
3e2285de |
| 18-Nov-2024 |
cz4e <[email protected]> |
fix(LoadQueueReplay): fix enq mask generate when redirect (#3884)
* Bug descriptions:
When an instruction first enq LoadQueueReplay and needs to be
redirected, the EnqMask generation does not take
fix(LoadQueueReplay): fix enq mask generate when redirect (#3884)
* Bug descriptions:
When an instruction first enq LoadQueueReplay and needs to be
redirected, the EnqMask generation does not take this situation into
account, then incorrectly updating the age matrix.
* Bug fix
use newEnqueue to generate EnqMask
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 ...
|
#
c945b576 |
| 15-Sep-2024 |
Anzo <[email protected]> |
fix(LoadQueueReplay): fix blocking logic (#3590)
|
#
19bd5ff8 |
| 28-Aug-2024 |
Anzo <[email protected]> |
LoadQueueReplay: fix LoadQueueReplay enqueue logic (#3436)
LoadQueueReplay can always enter, as long as it is the same size as
VirtualLoadQueue.
|
#
5003e6f8 |
| 23-Jul-2024 |
Huijin Li <[email protected]> |
LSQ: optimize static clock gating coverage and fix x_value in vcs (#3176)
optimize LSQ static clock gating coverage, fix x_value in vcs
|
#
d88e118d |
| 28-Feb-2024 |
sfencevma <[email protected]> |
LoadQueueReplay: fix enq ready logic
|
#
a7828dc1 |
| 12-Jun-2024 |
Tang Haojin <[email protected]> |
Revert "LSQ: optimize static clock gating coverage (#3023)" (#3055)
|
#
ff9b84b9 |
| 11-Jun-2024 |
lwd <[email protected]> |
LSQ: refactor vector load/store commit judging logic to fix X in vcs (#3048)
|
#
082b30d1 |
| 31-May-2024 |
Huijin Li <[email protected]> |
LSQ: optimize static clock gating coverage (#3023)
|
#
cf343633 |
| 27-May-2024 |
Haoyuan Feng <[email protected]> |
LoadqueueReplay: Entry should be allocated when matching mergebuffer feedback (#3010)
|
#
a4d1b2d1 |
| 13-May-2024 |
good-circle <[email protected]> |
Merge branch 'master' into vlsu-merge-master-0504
|
#
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
|
#
25df626e |
| 04-May-2024 |
good-circle <[email protected]> |
Merge branch 'master' into vlsu-tmp-master
|
#
627be78b |
| 23-Apr-2024 |
good-circle <[email protected]> |
VLSU, lsq: support more than one vector pipeline
|
#
dd592719 |
| 16-Apr-2024 |
weiding liu <[email protected]> |
Memblock, LoadReplayQueue: fix bug of ageMatrix enq && deq
LoadReplayQueue: fix age matrix dequeue
|
#
55178b77 |
| 12-Apr-2024 |
weiding liu <[email protected]> |
VLSU: support of vector store/load exception
|
#
375ed6a9 |
| 30-Mar-2024 |
weiding liu <[email protected]> |
VLSU: add support that replay vector load mask
|
#
26af847e |
| 25-Mar-2024 |
good-circle <[email protected]> |
rv64v: implement lsu & lsq vector datapath
|
#
0ffeff0d |
| 07-Apr-2024 |
Xuan Hu <[email protected]> |
Merge remote-tracking branch 'upstream/master' into tmp-master
|