Configurable I$ banking #3615
eric-lefort
started this conversation in
Ideas
Replies: 1 comment
-
You can use to force a specific cache width. |
Beta Was this translation helpful? Give feedback.
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
-
Currently, I am configuring a rocket chip with a 64-byte wide L2 write width, MBUS and axi4 port. I have also moved from an 8-byte to a 64-byte system bus. (and TileBus)
I am not very well-versed in chisel, but I am seeing that the i-cache is now instantiating 16 banks in order to upsize from the 4-byte fetch width to the 64-byte TileBus. This banking scheme is very costly in terms of area. I am interested in adding a parameter that modifies this scheme in order to instantiate memories with wider lines and write masks.
Is this a sensible change or are there other, more subtle reasons that this may be a bad idea?
I am assuming the primary required changes will be the decode logic and potential additional stalls on reads coming back to I$ (less banks ~~ more bank collisions)
Interestingly, the d-cache is being instantiated in a manner more suitable to my application, with 64-byte wide memories that have write masks for more narrow reads, and separate banks for each way.
(on the side, I was wondering if there are intentional reasons behind these different banking schemes)
Here's some of the code instantiating the memories (rest is in
src/main/scala/rocket/ICache.scala
)Beta Was this translation helpful? Give feedback.
All reactions