42
Offline Compression for On-Chip RAM John Regehr University of Utah Joint work with Nathan Cooprider

Offline Compression for On-Chip RAM

  • Upload
    miyo

  • View
    39

  • Download
    0

Embed Size (px)

DESCRIPTION

John Regehr University of Utah Joint work with Nathan Cooprider. Offline Compression for On-Chip RAM. Microcontrollers (MCUs). $12.5 billion market in 2006 ~10 billion units / year MCU-based products typically highly sensitive to unit cost. On-Chip RAM is Small. Atmel AVR examples - PowerPoint PPT Presentation

Citation preview

Page 1: Offline Compression  for On-Chip RAM

Offline Compression for On-Chip RAM

John RegehrUniversity of Utah

Joint work with Nathan Cooprider

Page 2: Offline Compression  for On-Chip RAM

Microcontrollers (MCUs)● $12.5 billion market in 2006

● ~10 billion units / year

● MCU-based products typically highly sensitive to unit cost

Page 3: Offline Compression  for On-Chip RAM

On-Chip RAM is Small● Atmel AVR examples

mega48 – 0.5 KB RAM – $1.50 mega128 – 4 KB RAM – $8.75 mega256 – 8 KB RAM – $10.66

● SRAM can dominate power consumption of a sleeping chip

● On-chip flash memory is larger 1 transistor / bit vs. 6 transistors / bit for

SRAM

Page 4: Offline Compression  for On-Chip RAM

Out of RAM – What Next?

● Manually optimize RAM usage?● Remove features?● Buy MCUs with more RAM?

Page 5: Offline Compression  for On-Chip RAM

Is RAM Used Efficiently?● Performed byte-level value profiling for

TinyOS applications Simulator counts distinct values stored in

each byte of RAM over a number of executions

● Result: Average byte stores four values! These applications are already tuned for RAM

usage

Page 6: Offline Compression  for On-Chip RAM

RAM Compression1. Use static analysis to find

redundancy in scalars, pointers, structs, arrays in embedded C code

2. Automatically perform sub-word packing to save RAM

Page 7: Offline Compression  for On-Chip RAM

Static Analysis● Input: C program

For example, output of nesC compiler● Output: Value set for each variable

E.g. {0,1} for a boolean● Analysis built on standard techniques● However:

Very aggressive compared to e.g. gcc Many tricks to get good precision on TinyOS

applications – several novel

Page 8: Offline Compression  for On-Chip RAM

x ≝ variable that occupies n bits

Vx ≝ conservative estimate of value set

log2|Vx| < n RAM compression possible Cx ≝ another set such that |Cx| = |Vx|

fx ≝ bijection from Vx to Cx

n - log2|Cx| bits saved through compression of x

Page 9: Offline Compression  for On-Chip RAM

void (*function_queue[8])(void);

Page 10: Offline Compression  for On-Chip RAM

x

n = size of a function pointer = 16 bits

void (*function_queue[8])(void);

Page 11: Offline Compression  for On-Chip RAM

&function_A&function_B

&function_C

NULL

Vxx

Page 12: Offline Compression  for On-Chip RAM

|Vx| = 4

Vxxn = 16 bits

log2|Vx| < n

2 < 16

Page 13: Offline Compression  for On-Chip RAM

Vxx Cx

0

1

2

3

fx ≝ Vx to Cx ≝ compression

fx-1 ≝ Cx to Vx ≝ decompression

Page 14: Offline Compression  for On-Chip RAM

Vx = { , , , }x Cx

0

123

ROM

fx ≝ compression table scan

fx-1 ≝ decompression

table lookup

Page 15: Offline Compression  for On-Chip RAM

Vx = { , , , }x Cx

0

123

128 bits reduced to 16 bits112 bits of RAM saved

ROM

Page 16: Offline Compression  for On-Chip RAM

Implementation● Source-to-source transformation for C

Rewrite declaration, initializer, reads, writes● What about value sets of size 1?

log2 1 = 0 No bits required – just propagate the constant

● Optimizations Avoid table-driven compression funcs when possible Align hot compressed values on word boundaries Merge redundant compression tables Compile-time compression when storing constants

Page 17: Offline Compression  for On-Chip RAM

RAM Compression Results

* simulator unavailable

Page 18: Offline Compression  for On-Chip RAM

RAM Compression Results

Constant Prop / DCE10% RAM reduction20% ROM reduction

5.9% duty cycle reduction

* simulator unavailable

Page 19: Offline Compression  for On-Chip RAM

RAM Compression Results

* simulator unavailable

Compression22% RAM reduction3.6% ROM reduction

29% duty cycle increase

Constant Prop / DCE10% RAM reduction20% ROM reduction

5.9% duty cycle reduction

Page 20: Offline Compression  for On-Chip RAM

Tuning RAM Compression● Can elect to not compress some

compressible variables But which ones?

● For each compressible variable compute a cost / benefit ratio Cost – estimated penalty in ROM or CPU

cycles Benefit – RAM savings

● Sort compressible variables by ratio and compress until some threshold is met

Page 21: Offline Compression  for On-Chip RAM

Cost/Benefit Ratio

C ≝ access profile

V ≝ cardinality of value setA,B ≝ platform-specific costs

C i A i B i V

Page 22: Offline Compression  for On-Chip RAM

Cost/Benefit Ratio

Su ≝ original sizeSc ≝ compressed size

C ≝ access profile

V ≝ cardinality of value setA,B ≝ platform-specific costs

Su−Sc

C i A i B i V

Page 23: Offline Compression  for On-Chip RAM

Turning the RAM Knob

0%

Page 24: Offline Compression  for On-Chip RAM

Turning the RAM Knob

10%

Page 25: Offline Compression  for On-Chip RAM

Turning the RAM Knob

20%

Page 26: Offline Compression  for On-Chip RAM

Turning the RAM Knob

30%

Page 27: Offline Compression  for On-Chip RAM

Turning the RAM Knob

40%

Page 28: Offline Compression  for On-Chip RAM

Turning the RAM Knob

50%

Page 29: Offline Compression  for On-Chip RAM

Turning the RAM Knob

60%

Page 30: Offline Compression  for On-Chip RAM

Turning the RAM Knob

70%

Page 31: Offline Compression  for On-Chip RAM

Turning the RAM Knob

80%

Page 32: Offline Compression  for On-Chip RAM

Turning the RAM Knob

90%

Page 33: Offline Compression  for On-Chip RAM

Turning the RAM Knob

100%

Page 34: Offline Compression  for On-Chip RAM

Turning the RAM Knob

95%

Page 35: Offline Compression  for On-Chip RAM

Compression Spectrum

Page 36: Offline Compression  for On-Chip RAM

Compression Spectrum

95%

Page 37: Offline Compression  for On-Chip RAM

Compression Spectrum

95%

Page 38: Offline Compression  for On-Chip RAM

Conclusion● RAM likely to remain scarce in low-cost,

low-power MCUs● RAM is used inefficiently● Manually RAM optimization is unpleasant● Tradeoffs are useful

● CComp implements RAM compressionhttp://www.cs.utah.edu/~coop/research/ccomp/

Page 39: Offline Compression  for On-Chip RAM
Page 40: Offline Compression  for On-Chip RAM

Analysis Times

Benchmark HH:MM:SS Benchmark HH:MM:SSdrive1 00:00:13 sensetorfm 00:01:42drive2 00:00:22 testtimestamping 00:02:09osc 00:00:44 ident 00:03:13genericbase 00:01:17 surge 00:03:42ap 00:01:18 hfs 00:06:06rfmtoleds 00:01:23 testtinysec 00:12:34cnttoledsandrfm 00:01:32 tinydb 01:58:45testdrip 00:01:42

Page 41: Offline Compression  for On-Chip RAM

No RAM Compression

*⇒ simulator unavailable

Page 42: Offline Compression  for On-Chip RAM

Full RAM Compression

*⇒ simulator unavailable