Read CEO Ron Black’s ‘An open letter regarding Cyber Resilience of the UK’s Critical National Infrastructure’

Paper

Better benchmarks through compiler optimizations: Codasip jump threading – Technical paper

The performance of embedded processor IP is often measured by a small set of synthetic benchmarks. These often bear little correlation to real workloads yet continue to persist. The most popular benchmarks are Dhrystone and CoreMark.

Interestingly, the benchmark performance numbers continue to improve over time for a given architecture, despite architecture itself remaining unchanged. The reason for this improvement is the focus on continuous compiler optimizations intended to improve the performance of a given benchmark.

The RISC-V community makes extensive use of open source compiler technologies. The most widely used C/C++ compilers today are GCC by the GNU Project and Clang by the LLVM project.

Each compiler has a set of advantages and disadvantages, and most users of RISC-V today employ the GNU toolchain. However, the Codasip C/C++ compiler is based on LLVM. LLVM is an umbrella project that hosts a set of related low-level toolchain components (assemblers, compilers, debuggers, etc.). LLVM and its C/C++ frontend, Clang, provide a number of benefits over GCC, specifically faster compilation and lower memory usage, expressive diagnostics, and modular library-based architecture. Together these allow easy customization and the addition of custom extensions in the form of new architectures, instructions, and optimizations.

However, one of the stronger points of GCC is that its jump threading pass is more powerful than the same pass in LLVM, which also has difficulties in threading jumps used in CoreMark benchmarking. To mitigate this and improve our own LLVM solution, Codasip developed an innovative implementation of jump threading that helped us achieve significantly faster code and better CoreMark results.

These techniques are described in detail in our latest technical paper, available for download using the button below.

Whitepaper Cover - Better benchmarks through compiler optimizations: Codasip jump threading – Technical paper

To access the full document, please provide your details below.
We will process them with care, as described in our Privacy Policy.

It may take a few seconds for the email to arrive. If it does not, please, resubmit the form. Having issues? Contact us.

Other papers & case studies