Embecosm offers services in three core areas.

  • Compiler tool chain development and porting.  We develop open source tool chains (principally GCC and LLVM).  This may be creation of a new tool chain from scratch or upgrading and development of an existing tool chain.  A particular speciality is development of tool chains for new processors pre-silicon using models of the processor.  Embecosm develops tool chains for processors of all types, but has acquired a reputation for expertise with smaller embedded processors and digital signal processors (DSP), where minimizing code size  and energy consumption can be as important as maximizing code speed.
  • Hardware modeling.  We focus on processor modeling, although where appropriate we develop models of peripheral IP.  This includes development of instruction set simulators using tools such as CGEN and TableGen and creation of cycle accurate models using Verilator.  These models are very often used as test targets when porting compiler tool chains.
  • Open source tool support.  Beyond development of open source tool chains, we are able to provide support for other open source EDA tools.  This involves keeping the tool up to date, fixing bugs and extending the tool.  We have strong relationships with many tool development teams, and most of our maintenance work is contributed upstream to official distributions.  This ensures any new functionality continues to be maintained long term.

Within these core areas we offer several technology specialities.

  • Machine learning optimization.  GCC offers over 200 optimization passes, each individually configurable and LLVM is not far behind.  Selecting the correct optimization options for any particular program is immensely challenging, particularly when different parts of the program may have different optimization needs.  Too often users rely on a generic set of performance optimization settings, “-O3” for speed or “-Os/-Oz” for code size, even though it can be possible to double performance by using the correct settings.  Embecosm is a pioneer in extending GCC and LLVM to learn which optimizations are the best for an individual program, or even source file, leading to much improved performance.
  • Superoptimization.  While machine learning can greatly improve optimization, it does not necessarily lead to the very best possible code.  Superoptimization is the technique of generating the theoretical best compiled code sequence.  The basic technique has been known since the 1980s, but demands huge compute resources, so has only been used for the very smallest programs.  New algorithms and much faster computers are starting to make the approach feasible in a commercial context.  With support from Innovate UK and in partnership with STFC Daresbury, Embecosm is developing the technologies needed.  We can offer superoptimization of key code sequences and can build superoptimized peephole generators.
  • Optimization for energy efficiency.  Both machine learning optimization and superoptimization are generic optimization techniques, which means they can be used to optimized for criteria other than code size and code speed.  Working with Bristol University, Embecosm has demonstrated how the approach can be used with existing compilers such as GCC and LLVM to optimize code for energy efficiency.  For deeply embedded systems this can be a critical advantage.
  • Compilation for security.  Security is a system-wide problem, and increasingly important in a highly connected world.  All too often secure hardware is compromised by poorly implemented software.  The compiler is ideally placed to help the secure software professional detect problems and write secure code.  Embecosm is developing standard extensions to GCC and LLVM, which detect common security flaws in code and provide features to make writing secure code easier.

Pages in this section

Toolchain Porting

Compiler Tool Chain Development

Embecosm are able to provide new and upgraded ports of binutils, GCC, GDB, GNU libraries, LLVM, LLDB, LLVM utilities and LLVM libraries, whether for the smallest deeply embedded processor, or the largest supercomputer cluster.

Hardware Modeling

Hardware Modeling

Embecosm has extensive experience in all aspects of software modeling of hardware, from the creation of high-level transaction level models (TLM) through to fully cycle accurate simulations.

Open Source Support

Open Source Tool Support

Embecosm provide a low risk route to adopting open source technology through tailored support packages for compiler toolchain ports and a wide range of open source EDA tools.

Machine Learning Optimisation

Machine Learning Optimization

Embecosm's MAGEEC is the first commercially robust implementation of a machine learning system and is available for both GCC and LLVM compilers.

Superoptimization

Superoptimization

Embecosm are the first company to offer superoptimization for commercial applications. This is a practical technology that can deliver a step change in performance and code size for your key algorithms and libraries.

Energy Efficient Compilation

Optimization for Energy Efficiency

Embecosm offers the first compilers and compiler optimizations that can optimize for energy. The technology combines Embecosm's MAGEEC machine learning framework for GCC and LLVM with optimizations specifically aimed at improving energy efficiency.

Compiler Security

Compilation for Security

Embecosm is developing standard extensions to GCC and LLVM, which detect common security flaws in code and provide features to make writing secure code easier. Embecosm also has experience in adding compiler extensions to take advantage of hardware security features automatically.