Skip to content
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

Performance of rocket-chip #3709

Open
cassebas opened this issue Jan 29, 2025 · 0 comments
Open

Performance of rocket-chip #3709

cassebas opened this issue Jan 29, 2025 · 0 comments

Comments

@cassebas
Copy link

Hi rocket-chip guys,
First off thank you for this project:-)

I have a question about a performance evaluation I'm doing using rocket-chip. I'm running a 32-bit single-threaded core on an FPGA, specifically on a Genesys2 dev board. I'm using the vivado-risc-v enviroment as build enviroment for generating the bitstream that goes into the FPGA. I have asked the author of this platform this same question, but I do not yet have a good explanation.

I'm running benchmarks from the TacleBench benchmark suite. An example is the dijkstra algorithm. I've extended the program with a performance counter that counts the number of cycles spent.

I would expect the number of cycles to vary somewhat, because of the DDR3 RAM among perhaps other things. But the strange thing is, that sometimes after a reset of the CPU, the performance is way off and it stays way off until I push the reset button again.

I run the benchmark many times, say 100 times and then reset the CPU, and continue. I get two different distributions of performance (in terms of execution cycles), where one is way slower than the other one. This is shown in the following bar plot:

Image

So what I do is:

  • [push reset button] run dijkstra 100 times
  • [push reset button] run dijkstra 100 times
  • [push reset button] run dijkstra 100 times
  • etc

Sometimes a reset causes the CPU to be slower.

Do you have any idea what might be causing this behavior? Could it be something in de rocket-chip design that could create such different behavior?

Thank you in advance for any ideas!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant