<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0 plus SVG 1.1//EN" "http://www.w3.org/2002/04/xhtml-math-svg/xhtml-math-svg.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=utf-8"/>
    <title>Project-Team:COMPSYS</title>
    <link rel="stylesheet" href="../static/css/raweb.css" type="text/css"/>
    <meta name="description" content="Overall Objectives - General Presentation"/>
    <meta name="dc.title" content="Overall Objectives - General Presentation"/>
    <meta name="dc.subject" content=""/>
    <meta name="dc.publisher" content="INRIA"/>
    <meta name="dc.date" content="(SCHEME=ISO8601) 2013-01"/>
    <meta name="dc.type" content="Report"/>
    <meta name="dc.language" content="(SCHEME=ISO639-1) en"/>
    <meta name="projet" content="COMPSYS"/>
  </head>
  <body>
    <div class="tdmdiv">
      <div class="logo">
        <a href="http://www.inria.fr">
          <img style="align:bottom; border:none" src="../static/img/icons/logo_INRIA-coul.jpg" alt="Inria"/>
        </a>
      </div>
      <div class="TdmEntry">
        <div class="tdmentete">
          <a href="uid0.html">Project-Team Compsys</a>
        </div>
        <span>
          <a href="uid1.html">Members</a>
        </span>
      </div>
      <div class="TdmEntry">Overall Objectives<ul><li><a href="./uid3.html">Introduction</a></li><li class="tdmActPage"><a href="./uid6.html">General Presentation</a></li><li><a href="./uid11.html">Summary of Compsys I Achievements</a></li><li><a href="./uid17.html">Quick view of Compsys II
Achievements and directions for Compsys III</a></li><li><a href="./uid20.html">Highlights of the Year</a></li></ul></div>
      <div class="TdmEntry">Research Program<ul><li><a href="uid30.html&#10;&#9;&#9;  ">Generalities</a></li><li><a href="uid33.html&#10;&#9;&#9;  ">Back-End Code Optimizations for Embedded Processors</a></li><li><a href="uid45.html&#10;&#9;&#9;  ">High-Level Program Analysis and
Transformations</a></li></ul></div>
      <div class="TdmEntry">Application Domains<ul><li><a href="uid56.html&#10;&#9;&#9;  ">Compilers for Embedded Computing Systems</a></li></ul></div>
      <div class="TdmEntry">Software and Platforms<ul><li><a href="uid58.html&#10;&#9;&#9;  ">Introduction</a></li><li><a href="uid59.html&#10;&#9;&#9;  ">Pip</a></li><li><a href="uid60.html&#10;&#9;&#9;  ">Syntol</a></li><li><a href="uid63.html&#10;&#9;&#9;  ">Cl@k</a></li><li><a href="uid64.html&#10;&#9;&#9;  ">PoCo</a></li><li><a href="uid70.html&#10;&#9;&#9;  ">Bee</a></li><li><a href="uid74.html&#10;&#9;&#9;  ">Chuba</a></li><li><a href="uid75.html&#10;&#9;&#9;  ">Dcc</a></li><li><a href="uid76.html&#10;&#9;&#9;  ">IceGEN</a></li><li><a href="uid79.html&#10;&#9;&#9;  ">C2fsm</a></li><li><a href="uid80.html&#10;&#9;&#9;  ">Aspic</a></li><li><a href="uid81.html&#10;&#9;&#9;  ">RanK</a></li><li><a href="uid82.html&#10;&#9;&#9;  ">SToP</a></li><li><a href="uid83.html&#10;&#9;&#9;  ">Simplifiers</a></li><li><a href="uid84.html&#10;&#9;&#9;  ">LAO Developments in Aggressive Compilation</a></li><li><a href="uid85.html&#10;&#9;&#9;  ">LAO Developments in JIT Compilation</a></li><li><a href="uid86.html&#10;&#9;&#9;  ">Low-Level Exchange Format (TireX) and
Minimalist Intermediate Representation (MinIR)</a></li></ul></div>
      <div class="TdmEntry">New Results<ul><li><a href="uid88.html&#10;&#9;&#9;  ">Parameterized Construction of Program Representations for Sparse Dataflow Analysiss</a></li><li><a href="uid89.html&#10;&#9;&#9;  ">A Framework for Enhancing Data Reuse via Associative Reordering</a></li><li><a href="uid90.html&#10;&#9;&#9;  ">Function Cloning Revisited</a></li><li><a href="uid91.html&#10;&#9;&#9;  ">Register Allocation and Promotion through Combined Instruction Scheduling, Loop Splitting and Unrolling</a></li><li><a href="uid92.html&#10;&#9;&#9;  ">Beyond Reuse Distance Analysis: Dynamic Analysis for Characterization of Data Locality Potential</a></li><li><a href="uid93.html&#10;&#9;&#9;  ">Characterizing the Inherent Data Movement Complexity of Computations via Lower Bounds</a></li><li><a href="uid94.html&#10;&#9;&#9;  ">Enhancing the Compilation of Synchronous Dataflow Programs</a></li><li><a href="uid95.html&#10;&#9;&#9;  ">Synthesis of Ranking Functions
using Extremal Counter-Examples</a></li><li><a href="uid98.html&#10;&#9;&#9;  ">Data-Aware Process Networks</a></li><li><a href="uid107.html&#10;&#9;&#9;  ">Program Equivalence Modulo A/C (Associativity/Commutativity)</a></li><li><a href="uid110.html&#10;&#9;&#9;  ">Constant Aspect-Ratio Parametric Tiling</a></li><li><a href="uid111.html&#10;&#9;&#9;  ">Parametric Tiling with Inter-Tile
Data Reuse</a></li><li><a href="uid112.html&#10;&#9;&#9;  ">Data Races in the Parallel Language X10</a></li><li><a href="uid113.html&#10;&#9;&#9;  ">Clock Removal in X10</a></li><li><a href="uid114.html&#10;&#9;&#9;  ">Static Analysis of OpenStream Programs</a></li><li><a href="uid118.html&#10;&#9;&#9;  ">Array Contraction in
Parallel Programs</a></li></ul></div>
      <div class="TdmEntry">Bilateral Contracts and Grants with Industry<ul><li><a href="uid120.html&#10;&#9;&#9;  ">Tirex Contract with Kalray</a></li><li><a href="uid121.html&#10;&#9;&#9;  ">ManycoreLabs Project with Kalray</a></li><li><a href="uid122.html&#10;&#9;&#9;  ">Technological Transfer Towards Zettice Start-Up</a></li></ul></div>
      <div class="TdmEntry">Partnerships and Cooperations<ul><li><a href="uid124.html&#10;&#9;&#9;  ">Regional Initiatives</a></li><li><a href="uid125.html&#10;&#9;&#9;  ">National Initiatives</a></li><li><a href="uid129.html&#10;&#9;&#9;  ">European Initiatives</a></li><li><a href="uid131.html&#10;&#9;&#9;  ">International Initiatives</a></li><li><a href="uid137.html&#10;&#9;&#9;  ">International Research Visitors</a></li></ul></div>
      <div class="TdmEntry">Dissemination<ul><li><a href="uid143.html&#10;&#9;&#9;  ">Scientific Animation</a></li><li><a href="uid162.html&#10;&#9;&#9;  ">Teaching - Supervision - Juries</a></li></ul></div>
      <div class="TdmEntry">
        <div>Bibliography</div>
      </div>
      <div class="TdmEntry">
        <ul>
          <li>
            <a id="tdmbibentyear" href="bibliography.html">Publications of the year</a>
          </li>
          <li>
            <a id="tdmbibentfoot" href="bibliography.html#References">References in notes</a>
          </li>
        </ul>
      </div>
    </div>
    <div id="main">
      <div class="mainentete">
        <div id="head_agauche">
          <small><a href="http://www.inria.fr">
	    
	    Inria
	  </a> | <a href="../index.html">
	    
	    Raweb 
	    2013</a> | <a href="http://www.inria.fr/en/teams/compsys">Presentation of the Project-Team COMPSYS</a> | <a href="http://www.ens-lyon.fr/LIP/COMPSYS/index.html.en">COMPSYS Web Site
	  </a></small>
        </div>
        <div id="head_adroite">
          <table class="qrcode">
            <tr>
              <td>
                <a href="compsys.xml">
                  <img style="align:bottom; border:none" alt="XML" src="../static/img/icons/xml_motif.png"/>
                </a>
              </td>
              <td>
                <a href="compsys.pdf">
                  <img style="align:bottom; border:none" alt="PDF" src="IMG/qrcode-compsys-pdf.png"/>
                </a>
              </td>
              <td>
                <a href="../compsys/compsys.epub">
                  <img style="align:bottom; border:none" alt="e-pub" src="IMG/qrcode-compsys-epub.png"/>
                </a>
              </td>
            </tr>
            <tr>
              <td/>
              <td>PDF
</td>
              <td>e-Pub
</td>
            </tr>
          </table>
        </div>
      </div>
      <!--FIN du corps du module-->
      <br/>
      <div class="bottomNavigation">
        <div class="tail_aucentre">
          <a href="./uid3.html" accesskey="P"><img style="align:bottom; border:none" alt="previous" src="../static/img/icons/previous_motif.jpg"/> Previous | </a>
          <a href="./uid0.html" accesskey="U"><img style="align:bottom; border:none" alt="up" src="../static/img/icons/up_motif.jpg"/>  Home</a>
          <a href="./uid11.html" accesskey="N"> | Next <img style="align:bottom; border:none" alt="next" src="../static/img/icons/next_motif.jpg"/></a>
        </div>
        <br/>
      </div>
      <div id="textepage">
        <!--DEBUT2 du corps du module-->
        <h2>Section: 
      Overall Objectives</h2>
        <h3 class="titre3">General Presentation</h3>
        <p>Classically, an embedded computer is a digital system that is part of a
larger system and that is not directly accessible to the user. Examples are
appliances like phones, TV sets, washing machines, game platforms, or even
larger systems like radars and sonars. In particular, this computer is not
programmable in the usual way. Its program, if it exists, is supplied as part
of the manufacturing process and is seldom (or never) modified thereafter.
As the embedded systems market grows and evolves, this view of embedded
systems is becoming obsolete and tends to be too restrictive. Many aspects of
general-purpose computers apply to modern embedded platforms. Nevertheless,
embedded systems remain characterized by a set of specialized application
domains, rigid constraints (cost, power, efficiency,
heterogeneity), and its market structure. The term <i>embedded system</i> has
been used for naming a wide variety of objects. More precisely, there are two
categories of so-called <i>embedded systems</i>: a) control-oriented and hard
real-time embedded systems (automotive, plant control, airplanes, etc.); b)
compute-intensive embedded systems (signal processing, multi-media, stream
processing) processing large data sets with parallel and/or pipelined
execution. Compsys is primarily concerned with this second type of
embedded systems, now referred to as <i>embedded computing systems</i>.</p>
        <p>Today, the industry sells many more embedded processors than general-purpose
processors; the field of embedded systems is one of the few segments of the
computer market where the European industry still has a substantial share,
hence the importance of embedded system research in the European research
initiatives. Our priority towards embedded software is motivated by the
following observations: a) the embedded system market is expanding, among
many factors, one can quote pervasive digitalization, low-cost products,
appliances, etc.; b) research on software for embedded systems is poorly
developed in France, especially if one considers the importance of actors
like Alcatel, STMicroelectronics, Matra, Thales, etc.; c) since embedded systems
increase in complexity, new problems are emerging: computer-aided design,
shorter time-to-market, better reliability, modular design, and component
reuse.</p>
        <p>A specific aspect of embedded computing systems is the use of various kinds
of processors, with many particularities (instruction sets, registers, data
and instruction caches, now multiple cores) and constraints (code size,
performance, storage). The development of <i>compilers</i> is crucial for
this industry, as selling a platform without its programming environment and
compiler would not be acceptable. To cope with such a range of different
processors, the development of robust, generic (retargetable), though
efficient compilers is mandatory. Unlike standard compilers for
general-purpose processors, compilers for embedded processors can be more
aggressive (i.e., take more time to optimize) for optimizing some important
parts of applications. This opens a new range of optimizations. Another
interesting aspect is the introduction of platform-independent intermediate
languages, such as Java bytecode, that is compiled dynamically at runtime
(aka just-in-time). Extreme lightweight compilation mechanisms that run
faster and consume less memory have to be developed. One of the objectives of
Compsys was to revisit existing compilation techniques in the context of
embedded computing systems, to deconstruct these techniques, to improve them,
and to develop new techniques taking constraints of embedded processors into
account.</p>
        <p>As for <i>high-level synthesis</i> (HLS), several compilers/systems have
appeared, after some first unsuccessful industrial attempts in the past.
These tools are mostly based on C or C++ as for example SystemC,
VCC, CatapultC, Altera C2H, Pico-Express.
Academic projects also exist such as Flex
and Raw
at MIT, Piperench
at Carnegie-Mellon University, Compaan
at the University of Leiden, Ugh/Disydent at LIP6 (Paris), Gaut at Lester
(Bretagne), MMAlpha (Insa-Lyon), and others. In general, the support for
parallelism in HLS tools is minimal, especially in industrial tools. Also,
the basic problem that these projects have to face is that the definition of
performance is more complex than in classical systems. In fact, it is a
multi-criteria optimization problem and one has to take into account the
execution time, the size of the program, the size of the data structures, the
power consumption, the manufacturing cost, etc. The impact of the compiler
on these costs is difficult to assess and control. Success will be the
consequence of a detailed knowledge of all steps of the design process, from
a high-level specification to the chip layout. A strong cooperation of the
compilation and chip design communities is needed. The main expertise in
Compsys for this aspect is in the <i>parallelization</i> and optimization
of <i>regular computations</i>. Hence, we will target applications with a
large potential parallelism, but we will attempt to integrate our solutions
into the big picture of CAD environments.</p>
        <p>More generally, the aims of Compsys are to develop new compilation and
optimization techniques for the field of embedded computing system design.
This field is large, and Compsys does not intend to cover it in its
entirety. As previously mentioned, we are mostly interested in the automatic
design of accelerators, for example designing a VLSI or FPGA circuit
for a digital filter, and in the development of new back-end compilation strategies for
embedded processors. We study code transformations that optimize features
such as execution time, power consumption, code and die size, memory
constraints, and compiler reliability. These features are related to embedded
systems but some are not specific to them. The code transformations we
develop are both at source level and at assembly level. A specificity of
Compsys is to mix a solid theoretical basis for all code optimizations we
introduce with algorithmic/software developments. Within Inria, our
project is related to the “architecture and compilation” theme, more
precisely code optimization, as some of the research conducted in Alchemy
(now Parkas), Alf (previously known as Caps), Camus, and to
high-level architectural synthesis, as some of the research in Cairn.</p>
        <p>Most french researchers working on high-performance computing (automatic
parallelization, languages, operating systems, networks) moved to grid
computing at the end of the 90s. We thought that applications, industrial
needs, and research problems were more interesting in the design of embedded
platforms. Furthermore, we were convinced that our expertise on high-level
code transformations could be more useful in this field. This is the reason
why Tanguy Risset came to Lyon in 2002 to create the Compsys team with
Anne Mignotte and Alain Darte, before Paul Feautrier, Antoine Fraboulet,
Fabrice Rastello, and finally Christophe Alias joined the group. Then, Tanguy
Risset left Compsys to become a professor at INSA Lyon, and Antoine Fraboulet
and Anne Mignotte moved to other fields of research. As for Laure Gonnord,
after a post-doc in Compsys, she obtained an assistant professor position
in Lille but remained external collaborator of the team for the
period 2009-2013 and finally obtained an assistant professor
position in Lyon.</p>
        <p>All present and past members of Compsys have a background in automatic
parallelization and high-level program analyses and transformations. Paul Feautrier was
the initiator of the polytope model for program transformations around 1990
and, before coming to Lyon, started to be more interested in programming
models and optimizations for embedded applications, in particular through
collaborations with Philips. Alain Darte worked on mathematical tools and
algorithmic issues for parallelism extraction in programs. He became
interested in the automatic generation of hardware accelerators, thanks to
his stay at HP Labs in the Pico project in Spring 2001. Antoine Fraboulet did
a PhD with Anne Mignotte – who was working on high-level synthesis (HLS) –
on code and memory optimizations for embedded applications. Fabrice Rastello
did a PhD on tiling transformations for parallel machines, then was hired by
STMicroelectronics where he worked on assembly code optimizations for embedded
processors. Tanguy Risset worked for a long time on the synthesis of systolic
arrays, being the main architect of the HLS tool MMAlpha. Christophe Alias
did a PhD on algorithm recognition for program optimizations and
parallelization. He first spent a year in Compsys working on array
contraction, where he started to develop his tool Bee, then a year at Ohio
State University with Prof. P. Sadayappan on memory optimizations. He
finally joined Compsys as an Inria researcher. Laure Gonnord
did a PhD on invariant generation and program analysis and became
interested on application on compilation and code generation since
her postdoc in the team.</p>
        <p>It may be worth to quote Bob Rau and his colleagues (IEEE Computer, sept.
2002):</p>
        <p>
          <i>"Engineering disciplines tend to go through fairly predictable phases:
ad hoc, formal and rigorous, and automation. When the discipline is in its
infancy and designers do not yet fully understand its potential problems
and solutions, a rich diversity of poorly understood design techniques
tends to flourish. As understanding grows, designers sacrifice the
flexibility of wild and woolly design for more stylized and restrictive
methodologies that have underpinnings in formalism and rigorous theory.
Once the formalism and theory mature, the designers can automate the design
process. This life cycle has played itself out in disciplines as diverse as
PC board and chip layout and routing, machine language parsing, and logic
synthesis.</i>
        </p>
        <p>
          <i>We believe that the computer architecture discipline is ready to enter the
automation phase. Although the gratification of inventing brave new
architectures will always tempt us, for the most part the focus will shift
to the automatic and speedy design of highly customized computer systems
using well-understood architecture and compiler technologies.”</i>
        </p>
        <p>We share this view of the future of architecture and compilation. Without
targeting too ambitious objectives, we were convinced of two complementary
facts: a) the mathematical tools developed in the past for manipulating
programs in automatic parallelization were lacking in high-level synthesis
and embedded computing optimizations and, even more, they started to be
rediscovered frequently in less mature forms, b) before being able to really
use these techniques in HLS and embedded program optimizations, we needed to
learn a lot from the application side, from the electrical engineering side,
and from the embedded architecture side. Our primary goal was thus twofold:
to increase our knowledge of embedded computing systems and to adapt/extend
code optimization techniques, primarily designed for high performance
computing, to the special case of embedded computing systems. In the initial
Compsys proposal, we proposed four research directions, centered on
compilation methods for embedded applications, both for software and
accelerators design:</p>
        <ul>
          <li>
            <p class="notaparagraph"><a name="uid7"> </a>Code optimization for specific processors (mainly DSP and VLIW
processors);</p>
          </li>
          <li>
            <p class="notaparagraph"><a name="uid8"> </a>Platform-independent loop transformations (including memory
optimization);</p>
          </li>
          <li>
            <p class="notaparagraph"><a name="uid9"> </a>Silicon compilation and hardware/software codesign;</p>
          </li>
          <li>
            <p class="notaparagraph"><a name="uid10"> </a>Development of polyhedral (but not only) optimization tools.</p>
          </li>
        </ul>
        <p>These research activities were primarily supported by a marked investment in
polyhedra manipulation tools and, more generally, solid mathematical and
algorithmic studies, with the aim of constructing operational software tools,
not just theoretical results. Hence the fourth research theme was centered on
the development of these tools.</p>
      </div>
      <!--FIN du corps du module-->
      <br/>
      <div class="bottomNavigation">
        <div class="tail_aucentre">
          <a href="./uid3.html" accesskey="P"><img style="align:bottom; border:none" alt="previous" src="../static/img/icons/previous_motif.jpg"/> Previous | </a>
          <a href="./uid0.html" accesskey="U"><img style="align:bottom; border:none" alt="up" src="../static/img/icons/up_motif.jpg"/>  Home</a>
          <a href="./uid11.html" accesskey="N"> | Next <img style="align:bottom; border:none" alt="next" src="../static/img/icons/next_motif.jpg"/></a>
        </div>
        <br/>
      </div>
    </div>
  </body>
</html>
