6.5.16Advanced & Emerging Architectures

Approximate computing techniques

2,055 words9 min readdifficulty · medium

WHY does this even work?

Three structural reasons resilience exists:

  1. Perceptual limits — humans have finite resolution (audio, video, images).
  2. Noisy/redundant input — sensor data is already noisy; extra tiny error is lost in the noise floor.
  3. Statistical aggregation / self-healing — sums, averages, and iterative algorithms (gradient descent, PageRank) absorb per-operation error.

HOW: the toolbox of techniques

Approximation happens at every layer of the stack.

Figure — Approximate computing techniques

Deep dive 1 — Why precision scaling saves so much

Deep dive 2 — Why voltage overscaling is a V2V^2 jackpot (and a VV risk)

Dynamic power is P=αCV2fP = \alpha C V^2 f. Drop VV by 20% ⇒ power drops by 10.82=36%1-0.8^2=36\%. But circuit delay V/(VVth)β\propto V/(V-V_{th})^\beta increases as VV falls, so at fixed clock some paths miss their deadline → timing errors. VOS says: tolerate those rare errors on the least-significant bits, keep the huge power win.


Worked examples


Common mistakes (steel-manned)


Recall Feynman: explain it to a 12-year-old

Imagine you're drawing a picture with crayons. If you're a tiny bit outside the lines, the picture still looks great — but you finished way faster and used less crayon. Computers can do the same trick: for stuff like photos, music, or guessing "is this a dog?", they can do the math a little sloppily on purpose. Sloppy math is faster and uses less battery, and you can't even tell the answer is slightly off. The clever part is choosing where to be sloppy — never on the important stuff (like the page number), only on the parts nobody notices.


Active-recall flashcards

#flashcards/hardware

What is the core trade-off in approximate computing?
A small, bounded loss of output quality in exchange for large gains in energy, speed, or area.
Why can summing/averaging tolerate approximation?
For NN independent zero-mean errors, total error grows as Nσ\sqrt N\sigma while the sum grows as NN, so relative error 0\to 0.
Why does halving the bit-width cut multiplier energy ~4×?
An n×nn\times n array multiplier uses n2\approx n^2 full-adder cells, and energy n2V2\propto n^2V^2; nn/2n\to n/2 gives (1/2)2=1/4(1/2)^2 = 1/4.
What is voltage overscaling and why is it powerful?
Running below safe voltage; power V2\propto V^2 so big savings, at the cost of rare timing errors on non-critical bits.
What is loop perforation?
Skipping some loop iterations (e.g. every other pixel) and reusing/interpolating, exploiting redundancy for speedup.
Which parts of a program must you NEVER approximate?
Control flow, loop bounds, pointers/addresses, and FP exponents — errors there cause crashes or catastrophic magnitude errors.
When does the "error averages out" assumption FAIL?
When errors are biased (non-zero mean); systematic error then grows as NN, not N\sqrt N.
Name a quality metric used to bound approximation error.
PSNR (images), classification accuracy (ML), or relative/absolute error.
Why is approximation not the same as a bug?
It is engineered and bounded — you choose where error goes and guarantee a quality metric; a bug is uncontrolled.
What is load-value/memoization approximation?
Reusing a previous or similar computed value instead of recomputing, when inputs are close enough.

Connections

  • Precision and Number Formats (FP32, FP16, INT8)
  • Dynamic Power P = alpha C V^2 f
  • DRAM Refresh and Memory Reliability
  • Neural Network Quantization
  • Ripple-Carry vs Array Multipliers
  • Error-Correcting Codes (the opposite philosophy — spend energy to remove error)
  • Dark Silicon and Energy-Efficient Architectures

Concept Map

exploits

bounded by

enables

enables

enables

error grows sqrt N, signal grows N

licenses

implemented via

implemented via

implemented via

implemented via

implemented via

fewer bits saves

power scales as V squared

Approximate Computing

Error Resilience

Quality Metric

Perceptual Limits

Noisy Redundant Input

Statistical Aggregation

Relative error to zero

Precision Scaling

Approx Arithmetic Circuits

Loop Perforation

Voltage Overscaling

Approximate Memory

Energy and Area

Hinglish (regional understanding)

Intuition Hinglish mein samjho

Dekho, idea simple hai: har computation ko perfect karne ki zaroorat nahi hoti. Jaise aapki aankh 100% aur 98% quality wali photo me farak nahi bata sakti, waise hi bahut se applications (images, audio, machine learning) thodi si galti ko tolerate kar lete hain. Approximate computing isi baat ka fayda uthata hai — thodi si controlled accuracy chhod do, aur badle me bahut saara energy, speed aur chip area bacha lo. Key word hai controlled: galti sirf wahan daalte hain jahan koi farak nahi padta (jaise LSB bits ya pixel values), aur uski limit fix karte hain.

Yeh kaam kyun karta hai? Kyunki jab aap bahut saari values ko sum ya average karte ho, toh independent random errors aapas me cancel ho jaate hain — total error N\sqrt{N} ke rate se badhta hai jabki sum NN ke rate se, toh relative error chhota hota jaata hai. Isi wajah se neural network INT8 me bhi cat ko cat hi bolta hai.

Techniques yaad rakhne ke liye "PA-LOVE-M" socho: Precision scaling (kam bits, jaise FP32→INT8 — multiplier energy n2n^2 ke saath chalti hai, toh bits half karo toh energy 4 guna kam!), Approximate circuits, Loop perforation (kuch iterations skip), Overvoltage scaling (voltage kam, power V2V^2 se girta hai), Value memoization, aur approximate Memory.

Sabse important baat — steel-man ki galtiyaan: kabhi bhi control flow, loop bounds, pointers ya floating-point exponent ko approximate mat karna, warna program crash ya bilkul galat answer. Aur "error toh average ho jaayega" tabhi sach hai jab error unbiased ho; agar hamesha neeche round karoge (biased) toh error NN ke saath badhega. Bas isliye smart engineering matters — galti daalo, par soch-samajh ke.

Go deeper — visual, from zero

Test yourself — Advanced & Emerging Architectures

Connections