-
Original asker: @hegdeprajwal
|
Beta Was this translation helpful? Give feedback.
Replies: 1 comment 1 reply
-
First, there are two parameters in the O3CPU: These are used in the LSQ. Note that by default, these values are large (200 in the codebase today). You can find the number of times this parameter or generally the cache blocks the LSQ with the statistic The other place that could cause load or store instructions to stall is the cache itself. When the LSQ sends a packet into Ruby, it first goes to the
So, on the LSQ/cache side, there are only two constraints to the cache bandwidth: Finally, if there is something else constraining the cache bandwidth, it would be in O3CPU. |
Beta Was this translation helpful? Give feedback.
First, there are two parameters in the O3CPU:
cacheStorePorts
cacheLoadPorts
These are used in the LSQ.
On each cycle, the LSQ increments the number of
usedStorePorts
andusedLoadPorts
and if the number of used ports exceeds the parameter value then the LSQ port is blocked andtrySendPacket
fails.Note that by default, these values are large (200 in the codebase today).
So, this means that in a default O3CPU configuration, the LSQ should not stall except because the cache cannot accept the request.
You can find the number of times this parameter or generally the cache blocks the LSQ with the statistic
blockedByCache
.The other place that could cause load or store instructions to stall i…