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.