CRAMES On-Line Memory Compression

Northwestern University NEC Labs America
Electrical Engineering and Computer Science System LSI and Software Verification
Ms. Lei Yang Dr. Haris Lekatsas
Prof. Robert Dick Dr. Srimat Chakradhar


CRAMES experimental setup

CRAMES is an operating system controlled memory compression technique to double useable memory in embedded systems without changing applications or hardware, and with little or no performance or power penalty.

Memory is a scarce resource in many embedded systems. Increasing memory often increases packaging and cooling costs, size, and energy consumption. CRAMES is an efficient software-based RAM compression technique for embedded systems. The primary goal of this project is to save memory in disk-less embedded systems, resulting in greater functionality, smaller size, and lower overall cost, without modifying applications or hardware. To achieve this goal, CRAMES takes advantage of an operating system's virtual memory infrastructure by storing swapped-out pages in compressed format. It dynamically adjusts the size of the compressed RAM area, protecting applications capable of running without it from performance or energy consumption penalties. In addition to compressing working data sets, CRAMES also enables efficient in-RAM filesystem compression, thereby further increasing RAM capacity.

CRAMES structure

In order to minimize the performance penalty of CRAMES, we designed a new software-based on-line memory compression algorithm for embedded systems and a method of adaptively managing the uncompressed and compressed memory regions during application execution. In comparison with algorithms that are commonly used in on-line memory compression, our new algorithm has a competitive compression ratio but is twice as fast. The adaptive memory management scheme effectively responds to the predicted needs of applications and prevents on-line memory compression deadlock, permitting reliable and efficient compression for a wide range of applications. CRAMES was implemented as a loadable module for the Linux kernel and evaluated on a battery-powered embedded system. Experimental results indicate that the memory available to applications can be increased by 150%, allowing the execution of applications with larger working data sets, or allowing existing applications to run with less physical memory. Execution time and energy consumption for a broad range of applications increase only slightly.


CRAMES will first ship in NEC FOMA 904i phones in Europe and Japan in June 2007.

This technology is in the process of being patented by NEC and Northwestern University. NEC is using the technology in their next-generation smartphones. However, NEC may be interested in licensing its use to other companies. Please contact us if you are interested in using this technology.


This material is based upon work supported by the National Science Foundation under Grant No. CNS-0347941. Any opinions, findings and conclusions or recomendations expressed in this material are those of the author(s) and do not necessarily reflect the views of the National Science Foundation (NSF).

Page maintained by Lei Yang.