S10 Superoptimization Framework

S10 is the Linki Tools Superoptimization framework, built on top of leading-edge technology and research.

We have built a retargetable Superoptimization framework so that you can take advantage of an easy to use, stable commercial product. We will be soon bringing you a web service to demo the RISC-V backend of S10.

In order to keep up-to-date with news and releases of S10 please register for our newsletter.

What is Superoptimization?

Superoptimization is an offline procedure that given a sequence of instructions, searches for the most beneficial sequence semantically equivalent to the ones given as input. Most beneficial depends on the application domain. Usually in embedded systems, users are looking for the shortest sequence of code, while for servers or gaming users are more focused on performance.

S10 Architecture

S10 is a superoptimization framework implemented in Racket.

S10 is

  • retargetable - allowing easy integration of other architectures;
  • distributed - recognizing that superoptimization is a cpu intensive task means you can spread the workload of S10 over several cores and several machines, and;
  • extensible - most internal structures are extensible through a stable well-documented API.

It was presented at the 8th RISC-V Workshop in Barcelona, May 2018.

S10 Architecture Overview

This is a simplistic view of the architecture of S10. The main components are divided into architecture dependent and architecture independent components.

The architecture dependent components are automatically generated by the ISA-DL. The remaining components are independent of the architecture and consist mainly of the algorithms for superoptimization. These algorithms: Stochastic, Symbolic and LENS are cooperative and distributed over all available cores for all the available machines until either a timeout is reached or an optimal solution is found.

Other independent components, not shown in the diagram, are profiling and tuning, event tracking and persistence engines. These mostly help optimizing and debugging the superoptimizer itself and allow for reuse of previous superoptimization runs.

More information will be added in the near future. Stay tuned. In any case, don’t forget to register at the bottom of the page for our newsletter or send me directly an email with questions.

Status

There is currently one supported architecture, the RISC-V which was used to drive the initial development of the framework. The goal is to have complete support of the RISC-V architecture — all bases and extensions.

Completed:

  • RV32I;
  • M extension;

Ongoing:

  • RV32E;
  • RV64I;
  • RV128I;
  • C, F, D, Q, X, V extensions;

Subscribe to the S10 Newsletter