We propose the use of automated compile-time and run-time techniques to increase the amount of usable memory in MMU-less embedded systems. The proposed techniques do not increase hardware cost, and require few or no changes to existing applications. We have developed run-time library routines and compiler transformations to control and optimize the automatic migration of application data between compressed and uncompressed memory regions, as well as a fast compression algorithm well suited to this application. These techniques were experimentally evaluated on Crossbow TelosB sensor network nodes running a number of data-collection and signal-processing applications.
Traditionally, the custom instructions selection process is guided by the application domain and its non-functional requirements such as performance, power, and area. However, current generation embedded systems impose additional hard-to-achieve requirements such as real-time constraints. The underlying architecture, on the other hand, may support novel features such as runtime reconfigurability of custom instructions. In this talk, we will describe how our compilation framework can select optimal design points by exploiting the architectural innovations while respecting the various constraints.