MISO: An intermediate language to express parallel and dependable   programs
  One way to write fast programs is to explore the potential parallelism and take advantage of the high number of cores available in microprocessors. This can be achieved by manually specifying which code executes on which thread, by using compiler parallelization hints (such as OpenMP or Cilk), or by using a parallel programming language (such as X10, Chapel or Aeminium. Regardless of the approach, all of these programs are compiled to an intermediate lower-level language that is sequential, thus preventing the backend compiler from optimizing the program and observing its parallel nature. This paper presents MISO, an intermediate language that expresses the parallel nature of programs and that can be targeted by front-end compilers. The language defines 'cells', which are composed by a state and a transition function from one state to the next. This language can express both sequential and parallel programs, and provides information for a backend- compiler to generate efficient parallel programs. Moreover, MISO can be used to automatically add redundancy to a program, by replicating the state or by taking advantage of different processor cores, in order to provide fault tolerance for programs running on unreliable hardware. 
Alcides Fonseca and Raul Barbosa
cs.DC cs.PL