Dear all.
In some presentation of the previous RISC V workshops, I've seen that rocket core obtains somewhat 1.72 DMIPS/MHz.
However, when I run dhrystone included in the basic test suite on Rocket core with default configuration, the output shows that each loop consumes around 459 cycles. Putting in the number of cycles to the equation for calculating DMIPS/MHz, the obtained number is around 1.23, which is 30% lower than the official value.
Should this be the problem of dhrystone program included in the test suite, or is this due to some changes in Rocket chip repository?
Does anybody have any idea?
Thanks.
Jamie Kim.
--
You received this message because you are subscribed to the Google Groups "RISC-V SW Dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to sw-dev+un...@groups.riscv.org.
To post to this group, send email to sw-...@groups.riscv.org.
Visit this group at https://groups.google.com/a/groups.riscv.org/group/sw-dev/.
To view this discussion on the web visit https://groups.google.com/a/groups.riscv.org/d/msgid/sw-dev/CA%2B1fW8DOZ8jU3aUYzjyb02pJbJh91f3Zxysjo2bh6vH26WbRAA%40mail.gmail.com.
The dhrystone value reported by the rocket-chip emulator testing is now invalid, for a few reasons.1) there is a special set of cflags that must be used for a valid dhrystone run.2) the riscv-tests are run bare metal, however changes in the past few months including moving the physical, cache able memory region to the higher half of the available memory region. This means that inefficient code sequences are emitted for some static memory accesses.3) rocket-chip is no longer directly tethered to the front-end server (fesvr) for host-target communications. Instead, for running the riscv-test simulations, the Debug Module is used to load binaries and communicate with fesvr. This requires the Debug Module to poll the core with constant interrupts to check if the core has anything to say. These constant interrupts are disruptive to any benchmarking attempts.
For the tethered systems, it's being used in a much more naive fashion
(using the core to poll a memory location).
Why is the Debug Module so intrusive?I assume it's being used for printf() or other I/O. I would have thoughtyou'd set a breakpoint at the IO function, which is only intrusive when IOdoes happen.