-
Notifications
You must be signed in to change notification settings - Fork 437
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add support for fast register saving #81
Comments
I hade some discution about that with @gmarkall I already explored a bit this idea in the actual RegFilePlugin (https://github.com/SpinalHDL/VexRiscv/blob/master/src/main/scala/vexriscv/plugin/RegFilePlugin.scala#L21) This would save 16 load + 16 store + 2 pc write on C compatible interrupts, which is much. Actualy the way it is implemented is by adding new CSR which allow switching between the two register file banks with two modes : Permanant switch / Single instruction switch. |
Also, nothing prevents to swap the default RegFilePlugin for another implementation for new experiments. |
This is indeed a very common situation on FPGAs; most FPGA block RAMs are much larger than 1024 bits (the standard RISC-V register file size.) I experimented with this on picorv32, and ended up settling on a way to use this for a tiny embedded real time OS in this manner:
|
VexRISC-V uses blockrams on the iCE40. This should make it easy to support saving the whole register file by changing one of the upper address bits. This would be super useful for making interrupt handling a lot faster.
I'm unsure how this should be exposed? Maybe as a custom instruction or something?
The text was updated successfully, but these errors were encountered: