Advanced compilers for critical embedded software
Independent software vendor for the IoT, Green Hills Software, has announced the availability of its Compiler 2018.1 for creating highly optimised 32-bit and 64-bit embedded C and C++ software applications for all leading embedded processor architectures, including Arm, Intel and Power Architecture. Key global customers and Green Hills compiler architects engaged on focused performance projects and as a result, customers see three times faster vector processing speeds, and scores beating the LLVM Compiler even on LLVM’s own benchmark suite.
Other highlights of Compiler 2018.1 include full C++14 support, Spectre mitigations and support for the highest functional safety levels. Compiler 2018.1 enables customers to bring their products to market more quickly, meet safety and security requirements and extract maximum processor performance in all embedded markets including automotive, industrial control, high performance computing (HPC), digital storage and consumer products.
In the development of Compiler 2018.1, Green Hills collaborated with several global customers with the challenge to beat all compilers in code execution performance. The results were impressive:
- Compared to the LLVM Foundation’s own C/C++ test-suite Benchmarks (v5.0), on which the LLVM Compiler is tuned to, Green Hills Compiler 2018.1 is 4.2% faster than LLVM on Arm and 3.4% faster on Arm64.
Compiler 2018.1 is the only safety-qualified compiler with autovectorisation to accelerate vector processing for SIMD (Single Instruction Multiple Data) acceleration units on Arm/Arm64 NEON, Intel SSE and Power Architecture.
- Green Hills Compiler 2018.1 autovectorisation for C++14 improved 14% or more on Arm, Arm64 and Intel Architectures on the industry-standard Eigen benchmarks, beating the LLVM compiler on Arm architecture.
- Autovectorisation for Arm NEON SIMD powered a three times performance increase to top the GNU compiler and another compiler based on LLVM, on real application code supplied by automotive customers focused on vector-intensive image recognition, deep learning and vision processing.
“Our Optimising C and C++ compilers are an essential component we bring to customers seeking the highest performance on their own application code,” said Dan O’Dowd, Founder and CEO at Green Hills Software. “Customers engage with us on performance projects with ambitious goals, and we meet or beat these goals because we deeply analyse their code, suggest optimal compiler settings and advise them on their code’s structure. Over our 35 year history, this consultative customer process has both fueled the world’s best compiler technology for embedded processors and helped our customers achieve the fastest performance for their applications.”
Certified safety, reliability and security
Green Hills claims that its C/C++ compilers are unique because of the breadth and depth of the certificates they have achieved for the highest levels of certified safety for Automotive (ISO 26262 ASIL D), Industrial (IEC 61508 SIL 3) and Railway (EN 50128 SIL 4). The compilers are supposedly part of the most complete safety package in the industry:
- C compiler and C run-time libraries with safety certificate
- C++ compiler and C++ run-time libraries with safety certificate, supporting C++03, C++11 and C++14
- Tightly integrated with the built-in MISRA-C Adherence and DoubleCheck static analysis tools, seamlessly run as part of a single-pass compilation
- Essential to the pre-certified INTEGRITY real time operating system
- Services to help customers certify their systems with safety and security organisations
- Compilers 2018.1 and future updates include mitigations for the Spectre side-channel security vulnerabilities (Variant 1: CVE-2017-5753 and Variant 2: CVE-2017-5715).
“C++14 is used in embedded safety and security related applications such as self-driving cars,” said Bill Wong, Electronic Design Senior Technology Editor. “Being able to use a trusted compiler from Green Hills Software is key to addressing safety certifications such as ISO 26262 and IEC 61508 while extracting maximum performance from a processor’s core and SIMD accelerators. It is critical for customers to have a tool like this that can generate reliable, optimised code.”
Compatibility and productivity
The software development phase is often the most costly portion of developing an embedded system. Compiler 2018.1 add new capabilities to decrease time-to-market and time-to-volume, such as:
- Support for new features in C++14 as defined by the ISO/IEC 14882:2014 standard including shared mutexes/locking for multithreading applications, expanded lambda function facilities and variable templates
- Easier to use templates for more flexibility
- Improved linker optimisations to remove unused data
- 32-bit and 64-bit compiler binary distributions help customers compile large, auto-generated code.