d8a998bb | 14-Jun-2024 |
lwd <[email protected]> |
StoreQueue: fix X when write StoreBuffer (#3068)
If there is an inactive element in a vector access instruction, it will
not be sent to the sta pipeline, so the data in the corresponding entry
in
StoreQueue: fix X when write StoreBuffer (#3068)
If there is an inactive element in a vector access instruction, it will
not be sent to the sta pipeline, so the data in the corresponding entry
in the StoreQueue is invalid, and we use `vecValid` to differentiate
between valid and invalid data in table entries.
For StoreQueue entries, `vecValid` depends on `hasException`,
`vecDataValid` (whether the data in the table entry is valid or not),
and `isVec` (whether it is a table entry for a vector instruction or
not). `vecDataValid` is initialized to false, and will be set to true
when sta writes back to the entry and the entry is a vector instruction.
Only vector instructions have invalid data in table entries, because we
can't determine how many table entries are needed for a vector access
uop at dispatch time.
show more ...
|
58cb1b0b | 06-Jun-2024 |
zhanglinjuan <[email protected]> |
CoupledL2, Uncache, LSQ: support non-data error handling (#3042)
According to CHI specification, a non-data error should be reported when
an error is detected that is not related to data corruption
CoupledL2, Uncache, LSQ: support non-data error handling (#3042)
According to CHI specification, a non-data error should be reported when
an error is detected that is not related to data corruption. Typically
this error is reported for:
* An attempt to access a location that does not exist.
* An illegal access, such as a write to a read only location.
* An attempt to use a transaction type that is not supported.
While the second kind of errors can be resolved by PMA, the first and
the third kind of errors were not supported yet.
This commit implements non-data error handling path. MMIOBridge in
CoupledL2 transfers CHI `RespErr` field downwards into TileLink `denied`
field upwards. Uncache in DCache passes the error to LSQ to generate
access fault exception:
* For MMIO loads, UncacheBuffer writes back `exceptionVec` to LoadUnit
s0 and informs exception address to ExceptionBuffer at the same time.
* For MMIO stores, SQ writes back `exceptionVec` to Backend directly.
BTW, data error is still not supported.
show more ...
|
071c63e4 | 03-Jun-2024 |
Haoyuan Feng <[email protected]> |
StoreQueue: Commit storequeue entry by judging robidx (#3020)
In the previous design, for scalar store commands, commits were made
based on the `scommit` passed in by rob. That is, after rob commit
StoreQueue: Commit storequeue entry by judging robidx (#3020)
In the previous design, for scalar store commands, commits were made
based on the `scommit` passed in by rob. That is, after rob commits n
store commands in one cycle, it sets scommit to n, and the storequeue
needs to commit n entries based on the value of scommit.
Due to the special nature of vector instructions, a vector store
instruction may correspond to a maximum of 128 items, and it is not
possible to use `scommit` commits, which are similar to scalar commits.
In this modification, both vector and scalar directives are compared
against `robidx`, and the storequeue entry is committed when the `uop`
stored in `uop` is equal to or older than the `pendingptr` passed in by
rob. This has some improvement on timing.
Also, additional processing is currently required for vector
instructions. When an exception occurs on an item, it needs to be
handled with an out-of-queue, but not write sbuffer.
show more ...
|
6cfe2a0c | 09-May-2024 |
Anzooooo <[email protected]> |
StoreQueue: fix vector store commit
this commit delay vector commit flag 1 cycle, because of scala store commit flag need delay 1 cycle. Ensure that there will be no situation where subsequent vecto
StoreQueue: fix vector store commit
this commit delay vector commit flag 1 cycle, because of scala store commit flag need delay 1 cycle. Ensure that there will be no situation where subsequent vector store are submitted and the previous scala store is not submitted.
show more ...
|