-
Notifications
You must be signed in to change notification settings - Fork 199
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 #251
Comments
It looks like the test reads some uninitialized memory location. |
As far as I know, flush/invalidate is not supported because it is not needed - RocketChip implements cache coherent interconnect. |
Hi Eugene, I'm trying to understand the working of the fan. The But I guess the XADC is not enabled by default? I don't see any code that activates it. I could try to activate it myself by reading and writing to the registers of the AXI lite XADC component in bare metal mode, or somehow activate the Linux xadc kernel driver? Thanks again! |
XADC is enabled by default. It is programmed to turn on fan at 60C, turn off at 50C. The fan is not active because the temperature does not reach 60C. To see and edit default XADC setting, double click on the XADC block in Vivado. When |
Thank you. Indeed I can adjust the fan temperature, and I see my fan go on and off. About this calibration, could it be that this is run after a reset? I can't image that this calibration runs during the processor's activity? |
The re-calibration (aka temperature monitor calibration and dynamic calibration) can run during the processor's activity. According to the docs, it is done during idle cycles, and does not impact the performance of the memory interface. It is not same as initial calibration at power up. |
Hi Eugene,
I'm not sure if you can help me, but I'll try anyway. I'm running performance evaluations with a 32-bit Rocket-chip single core. I'm using benchmarks from the TacleBench benchmark suite, running them bare metal.
I have generated a rocket32s1 core from your repository, simply using the latest commit. (Without any modifications.) Then I run a TacleBench benchmark using the xsdb debugger, much like in your helloworld example.
In the benchmark code, I have added the cycle counter as a performance counter. As an example I use
dijkstra
. Right before starting the benchmark, I save the number of cycles and right after running the benchmark I do this again. The difference is the number of cycles spent in thedijkstra_main
function.I do expect the number of cycles to vary somewhat, because of the DRAM, which I guess does not always give the same performance. It runs in a different clock domain compared to the core. But the strange thing is, sometimes after a reset (I push the button), the number of cycles is way off and it stays way off until I push the reset button again. In attached file you see some of the output, where each time I hit the reset button, the core starts again.
taclebench-dijkstra-performance-rocket32s1.txt
Do you have any clue as to why sometimes, the performance is worse? It seems that once in a while, the Rocket core wakes up in a bad mood or something.
Any ideas much appreciated!
thnx
The text was updated successfully, but these errors were encountered: