<?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:PACAP</title>
    <link rel="stylesheet" href="../static/css/raweb.css" type="text/css"/>
    <meta name="description" content="New Results - Processor Architecture"/>
    <meta name="dc.title" content="New Results - Processor Architecture"/>
    <meta name="dc.creator" content="Pierre Michaud"/>
    <meta name="dc.creator" content="Sylvain Collange"/>
    <meta name="dc.creator" content="Erven Rohou"/>
    <meta name="dc.creator" content="André Seznec"/>
    <meta name="dc.creator" content="Biswabandan Panda"/>
    <meta name="dc.creator" content="Fernando Endo"/>
    <meta name="dc.creator" content="Kleovoulos Kalaitzidis"/>
    <meta name="dc.creator" content="Daniel Rodrigues Carvalho"/>
    <meta name="dc.creator" content="Anita Tino"/>
    <meta name="dc.creator" content="Pierre Michaud"/>
    <meta name="dc.creator" content="André Seznec"/>
    <meta name="dc.creator" content="Fernando Endo"/>
    <meta name="dc.creator" content="André Seznec"/>
    <meta name="dc.creator" content="Biswabandan Panda"/>
    <meta name="dc.creator" content="André Seznec"/>
    <meta name="dc.creator" content="Sylvain Collange"/>
    <meta name="dc.creator" content="André Seznec"/>
    <meta name="dc.creator" content="Sylvain Collange"/>
    <meta name="dc.creator" content="Sylvain Collange"/>
    <meta name="dc.creator" content="Anita Tino"/>
    <meta name="dc.subject" content=""/>
    <meta name="dc.publisher" content="INRIA"/>
    <meta name="dc.date" content="(SCHEME=ISO8601) 2017-01"/>
    <meta name="dc.type" content="Report"/>
    <meta name="dc.language" content="(SCHEME=ISO639-1) en"/>
    <meta name="projet" content="PACAP"/>
    <script type="text/javascript" src="https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-MML-AM_CHTML">
      <!--MathJax-->
    </script>
  </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 Pacap</a>
        </div>
        <span>
          <a href="uid1.html">Personnel</a>
        </span>
      </div>
      <div class="TdmEntry">
        <a href="./uid3.html">Overall Objectives</a>
      </div>
      <div class="TdmEntry">Research Program<ul><li><a href="uid22.html&#10;&#9;&#9;  ">Motivation</a></li><li><a href="uid26.html&#10;&#9;&#9;  ">Research Objectives</a></li></ul></div>
      <div class="TdmEntry">Application Domains<ul><li><a href="uid44.html&#10;&#9;&#9;  ">Any computer usage</a></li></ul></div>
      <div class="TdmEntry">New Software and Platforms<ul><li><a href="uid46.html&#10;&#9;&#9;  ">ATMI</a></li><li><a href="uid50.html&#10;&#9;&#9;  ">HEPTANE</a></li><li><a href="uid55.html&#10;&#9;&#9;  ">tiptop</a></li><li><a href="uid59.html&#10;&#9;&#9;  ">PADRONE</a></li><li><a href="uid63.html&#10;&#9;&#9;  ">If-memo</a></li><li><a href="uid67.html&#10;&#9;&#9;  ">Simty</a></li><li><a href="uid71.html&#10;&#9;&#9;  ">Barra</a></li></ul></div>
      <div class="TdmEntry">New Results<ul><li><a href="uid77.html&#10;&#9;&#9;  ">Compiler, vectorization, interpretation</a></li><li class="tdmActPage"><a href="uid91.html&#10;&#9;&#9;  ">Processor Architecture</a></li><li><a href="uid100.html&#10;&#9;&#9;  ">WCET estimation and optimization</a></li><li><a href="uid103.html&#10;&#9;&#9;  ">Security</a></li></ul></div>
      <div class="TdmEntry">Bilateral Contracts and Grants with Industry<ul><li><a href="uid105.html&#10;&#9;&#9;  ">Bilateral Contracts with Industry</a></li><li><a href="uid107.html&#10;&#9;&#9;  ">Bilateral Grants with Industry</a></li></ul></div>
      <div class="TdmEntry">Partnerships and Cooperations<ul><li><a href="uid111.html&#10;&#9;&#9;  ">Regional Initiatives</a></li><li><a href="uid113.html&#10;&#9;&#9;  ">National Initiatives</a></li><li><a href="uid120.html&#10;&#9;&#9;  ">European Initiatives</a></li><li><a href="uid174.html&#10;&#9;&#9;  ">International Initiatives</a></li><li><a href="uid189.html&#10;&#9;&#9;  ">International Research Visitors</a></li></ul></div>
      <div class="TdmEntry">Dissemination<ul><li><a href="uid193.html&#10;&#9;&#9;  ">Promoting Scientific Activities</a></li><li><a href="uid206.html&#10;&#9;&#9;  ">Teaching - Supervision - Juries</a></li><li><a href="uid245.html&#10;&#9;&#9;  ">Popularization</a></li></ul></div>
      <div class="TdmEntry">
        <div>Bibliography</div>
      </div>
      <div class="TdmEntry">
        <ul>
          <li>
            <a id="tdmbibentmajor" href="bibliography.html">Major publications</a>
          </li>
          <li>
            <a id="tdmbibentyear" href="bibliography.html#year">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 
	    2017</a> | <a href="http://www.inria.fr/en/teams/pacap">Presentation of the Project-Team PACAP</a> | <a href="https://team.inria.fr/pacap/en">PACAP Web Site
	  </a></small>
        </div>
        <div id="head_adroite">
          <table class="qrcode">
            <tr>
              <td>
                <a href="pacap.xml">
                  <img style="align:bottom; border:none" alt="XML" src="../static/img/icons/xml_motif.png"/>
                </a>
              </td>
              <td>
                <a href="pacap.pdf">
                  <img style="align:bottom; border:none" alt="PDF" src="IMG/qrcode-pacap-pdf.png"/>
                </a>
              </td>
              <td>
                <a href="../pacap/pacap.epub">
                  <img style="align:bottom; border:none" alt="e-pub" src="IMG/qrcode-pacap-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="./uid77.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="./uid100.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: 
      New Results</h2>
        <h3 class="titre3">Processor Architecture</h3>
        <p class="participants"><span class="part">Participants</span> :
	Pierre Michaud, Sylvain Collange, Erven Rohou, André Seznec, Biswabandan Panda, Fernando Endo, Kleovoulos Kalaitzidis, Daniel Rodrigues Carvalho, Anita Tino.</p>
        <p>Processor, cache, locality, memory hierarchy, branch prediction,
multicore, power, temperature
</p>
        <a name="uid92"/>
        <h4 class="titre4">Microarchitecture</h4>
        <a name="uid93"/>
        <h5 class="titre5">Bayesian TAGE predictors</h5>
        <p class="participants"><span class="part">Participant</span> :
	Pierre Michaud.</p>
        <p>The TAGE conditional branch predictor, introduced by André Seznec and Pierre Michaud in 2006,
is the most storage-efficient branch predictor known today <a href="./bibliography.html#pacap-2017-bid33">[19]</a>.
André Seznec has won the last four branch prediction championships, each time
with a TAGE-based predictor. However, since 2006, the improvements in prediction accuracy
have been relatively modest and were mostly obtained at the cost of increased
hardware complexity. In particular, André Seznec added a Statistical Corrector
to TAGE to correct some of its deficiencies <a href="./bibliography.html#pacap-2017-bid34">[21]</a>.
This may be an indication that our understanding of TAGE is not complete
and that further accuracy gains are waiting to be discovered.
The problem tackled by the statistical corrector is that of cold counters:
a TAGE-like predictor constantly allocate new entries, erasing the branch
history information stored in the up-down counters of the overwritten entries.
TAGE mitigates this problem by using the confidence level of the up-down
counter and a meta-predictor. However, fundamentally, the information on the degree
of coldness of the up-down counter is not available in TAGE.
Therefore we propose to replace the up-down counter with a dual-counter counting
separately taken and not-taken occurrences. Replacing the up-down counter
with a dual-counter requires to redefine prediction confidence estimation.
We found that a Bayesian formula, namely Laplace's rule of succession,
provides effective confidence estimation. We also discovered a method,
based on the dual-counter, for reducing the number of allocations.
By combining these new findings, we devised a new TAGE-like predictor called BATAGE,
more accurate than TAGE, making external statistical correction superfluous.
As of December 2017, this work is in the process of being submitted to a journal.</p>
        <a name="uid94"/>
        <h5 class="titre5">Interactions Between Value Prediction and Compiler Optimizations </h5>
        <p class="participants"><span class="part">Participants</span> :
	André Seznec, Fernando Endo.</p>
        <p>Increasing instruction-level parallelism is regaining attractiveness within the microprocessor industry. The EOLE microarchitecture <a href="./bibliography.html#pacap-2017-bid9">[13]</a> and D-VTAGE value predictor <a href="./bibliography.html#pacap-2017-bid8">[14]</a> were recently introduced to solve practical issues of value prediction (VP). In particular, they remove the most significant difficulties that forbade an effective VP hardware. In <a href="./bibliography.html#pacap-2017-bid35">[28]</a>, we present a detailed evaluation of the potential of VP in the context of EOLE/D-VTAGE and different compiler options. Our study shows that if no single general rule always applies – more optimization might sometimes leads to more performance – unoptimized codes often gets a large benefit from the prediction of redundant loads.</p>
        <a name="uid95"/>
        <h5 class="titre5">Prefetch Management on Multicore Systems</h5>
        <p class="participants"><span class="part">Participants</span> :
	André Seznec, Biswabandan Panda.</p>
        <p>In multi-core systems, an application's prefetcher can interfere with the memory requests of other applications using the shared resources, such as last level cache and memory bandwidth.
Towards this end, we propose a solution to manage prefetching in multi-core systems <a href="./bibliography.html#pacap-2017-bid36">[32]</a>. In particular, we make two fundamental observations: First, a strong positive correlation exists between the accuracy of a prefetcher and the amount of prefetch requests it generates relative to an application's total (demand and prefetch) requests. Second, a strong positive correlation exists between the ratio of total prefetch to demand requests and the ratio of average last level cache miss service times of demand to prefetch requests. In <a href="./bibliography.html#pacap-2017-bid36">[32]</a>, we propose Band-pass prefetching a simple and low-overhead mechanism to effectively manage prefetchers in multi-core systems that builds on those two observations. Our solution consists of local and global prefetcher aggressiveness control components, which altogether, control the flow of prefetch requests between a range of prefetch to demand requests ratios.</p>
        <a name="uid96"/>
        <h5 class="titre5">Managing Shared Last Level Caches in Large Multicores</h5>
        <p class="participants"><span class="part">Participant</span> :
	André Seznec.</p>
        <p>Multi-core processors employ shared Last Level Caches (LLC). This trend continuewith large multi-core processors (16 cores and beyond) as well. At the same time, the associativity of LLC tends to remain in the order of sixteen. Consequently, with large multicore processors, the number of applications or threads that share the LLC becomes larger than the associativity of the cache itself. LLC management policies have been extensively studied for small scale multi-cores (4 to 8 cores) and associativity degree in the 16 range. However, the impact of LLC management on large multi-cores is essentially unknown, in particular when the associativity degree is smaller than the number of applications. In <a href="./bibliography.html#pacap-2017-bid37">[33]</a>, we introduce Adaptive Discrete and deprioritized Application PrioriTization (ADAPT), an LLC management policy addressing the large multi-cores where the LLC associativity degree is smaller than the number of applications. ADAPT builds on the use of the Footprint-number metric. We propose a monitoring mechanism that dynamically samples cache sets to estimate the Footprint-number of applications and classifies them into discrete (distinct and more than two) priority buckets. The cache replacement policy leverages this classification and assigns priorities to cache lines of applications during cache replacement operations. We further find that deprioritizing certain applications during cache replacement is beneficial to the overall performance.</p>
        <a name="uid97"/>
        <h5 class="titre5">Augmenting superscalar architecture for efficient many-thread parallel execution</h5>
        <p class="participants"><span class="part">Participants</span> :
	Sylvain Collange, André Seznec.</p>
        <p>Threads of Single-Program Multiple-Data (SPMD) applications often exhibit very similar control flows, i.e. they execute the same instructions on different data. We propose the Dynamic Inter-Thread Vectorization Architecture (DITVA) to leverage this implicit data-level parallelism in SPMD applications by assembling dynamic vector instructions at runtime. DITVA extends an in-order SMT processor with SIMD units with an inter-thread vectorization execution mode. In this mode, multiple scalar threads running in lockstep share a single instruction stream and their respective instruction instances are aggregated into SIMD instructions.
To balance thread-and data-level parallelism, threads are statically grouped into fixed-size independently scheduled warps. DITVA leverages existing SIMD units and maintains binary compatibility with existing CPU architectures.
Our evaluation on the SPMD applications from the PARSEC and Rodinia OpenMP benchmarks shows that a 4-warp <span class="math"><math xmlns="http://www.w3.org/1998/Math/MathML"><mo>×</mo></math></span> 4-lane 4-issue DITVA architecture with a realistic bank-interleaved cache achieves 1.55<span class="math"><math xmlns="http://www.w3.org/1998/Math/MathML"><mo>×</mo></math></span> higher performance than a 4-thread 4-issue SMT architecture with AVX instructions while fetching and issuing 51 % fewer instructions, achieving an overall 24 % energy reduction.</p>
        <p>This work has been accepted for publication in the Journal of Parallel
and Distributed Computing <a href="./bibliography.html#pacap-2017-bid38">[30]</a>. It was done in
collaboaration with Sajith Kalathingal and Bharath Swamy from Intel
Bangalore (India).</p>
        <a name="uid98"/>
        <h5 class="titre5">Generalizing the SIMT execution model to general-purpose instruction sets</h5>
        <p class="participants"><span class="part">Participant</span> :
	Sylvain Collange.</p>
        <p>The <i>Single Instruction, Multiple Threads</i> (SIMT) execution model
as implemented in NVIDIA Graphics Processing Units (GPUs) associates a
multi-thread programming model with an SIMD execution
model  <a href="./bibliography.html#pacap-2017-bid39">[57]</a>. It combines the simplicity of scalar code
from the programmer's and compiler's perspective with the efficiency
of SIMD execution units at the hardware level. However, current SIMT
architectures demand specific instruction sets. In particular, they
need specific branch instructions to manage thread divergence and
convergence. Thus, SIMT GPUs have remained incompatible with
traditional general-purpose CPU instruction sets.</p>
        <p>We designed Simty, an SIMT processor proof of concept that lifts the
instruction set incompatibility between CPUs and GPUs. Simty is a
massively multi-threaded processor core that dynamically assembles
SIMD instructions from scalar multi-thread code. It runs the RISC-V
(RV32-I) instruction set. Unlike existing SIMD or SIMT processors like
GPUs, Simty takes binaries compiled for general-purpose processors
without any instruction set extension or compiler changes. Simty is
described in synthesizable RTL. A FPGA prototype validates its scaling
up to 2048 threads per core with 32-wide SIMD units.</p>
        <p>The Simty architecture was presented at the First Workshop on Computer
Architecture Research with RISC-V (CARRV 2017)
<a href="./bibliography.html#pacap-2017-bid40">[40]</a>.</p>
        <p>Both conventional and generalized SIMT architectures like Simty use
hardware or software mechanisms to keep track of control-flow
divergence and convergence among threads. A new class of such
algorithms is gaining popularity in the literature in the last few
years. We presented a new classification of these techniques based on
their common characteristic, namely traversals of the control-flow
graph based on lists of paths. We compared the implementation cost on
an FPGA of path lists and per-thread program counters within the Simty
processor. The sorted list enables significantly better scaling
starting from 8 threads per warp.</p>
        <p>This work was presented in French in Conférence d’informatique en
Parallélisme, Architecture et Système (ComPAS)
<a href="./bibliography.html#pacap-2017-bid41">[51]</a> and is available in English as a
technical report <a href="./bibliography.html#pacap-2017-bid42">[52]</a>.</p>
        <a name="uid99"/>
        <h5 class="titre5">Toward out-of-order SIMT microarchitecture</h5>
        <p class="participants"><span class="part">Participants</span> :
	Sylvain Collange, Anita Tino.</p>
        <p>Prior work highlights the continued importance of maintaining adequate
sequential performance within throughput-oriented cores  <a href="./bibliography.html#pacap-2017-bid43">[60]</a>.
Out-of-order superscalar architectures as used in high-performance CPU
cores can meet such demand for single-thread performance. However,
GPU architectures based on SIMT have been limited so far to in-order
execution because of a major scientific obstacle: the partial
dependencies between instructions that SIMT execution induces thwart
register renaming. This ongoing project is seeking to generalize
out-of-order execution to SIMT architectures. In particular, we
revisit register renaming techniques originally proposed for predicate
conversion to support partial register updates efficiently.
Out-of-order dynamic vectorization holds the promise to close the
CPU-GPU design space by enabling low-latency, high-throughput design
points.</p>
      </div>
      <!--FIN du corps du module-->
      <br/>
      <div class="bottomNavigation">
        <div class="tail_aucentre">
          <a href="./uid77.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="./uid100.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>
