Intermediate Sequence Removal
Stc
Date: 2008-01-10
Time: 11:45
Room: BBL room 471
Speaker: Christophe Poucet
Title: Intermediate Sequence Removal
Abstract
In the world of embedded systems, one of the main cost factors is the energy
consumption of an application, of which memory bandwidth pressure in terms
of memory footprint and memory accesses is a main component. The reason for
this is that the energy consumption dictates the availability of
applications on a platform, as portable embedded devices (i.e. PDA,
cellphone, etc) are limited in the energy capacity they can carry (due to
the limitations of current batteries). Many accesses to offchip memories or
memories that are further away from the processor in the memory hierarchy
can lead to a high energy cost as well as to a low performance. Therefore,
it is important to have optimization techniques that can reduce the memory
pressure of applications that are to be mapped to these embedded platforms.
Traditionally, a lot of focus in this optimization work has been on the
removal of memory accesses to static arrays where the access behaviour is
very regular and not runtime-dependent. As modern multimedia applications
start to become more dynamic and their behaviour becomes more
data-dependent, novel technques are required to tackle the reduction of
memory footprints in this area as well.
One common way of storing dynamic data is through the use of sequences (i.e.
STL vectors and lists) which are similar to lists in the FP world but offer
a few more operations that are not efficiently supported by functional
lists. In this presentation we present the concept of "Intermediate Variable
Removal" which is an optimization technique that focuses on the removal of
intermediate sequences. As will be clear, this technique borrows from the
ideas of fusion in the functional world and extends it to the C++/sequence
context.