6.5.16 · Hardware › Advanced & Emerging Architectures
Intuition Badi Baat (The Big Idea)
Bahut saare real-world applications ko perfect answer ki zaroorat nahi hoti . Tumhari aankh JPEG quality 95 aur 100 mein fark nahi pakad sakti; ek neural network jo cat classify kar raha hai woh "cat" hi bolega chahe kuch multiplications thodi si galat hon; ek million sensor readings ka average tab bhi kuch nahi bigaadta agar ek reading 0.1% off ho.
Approximate computing jaan-bujhkar chhoti, controlled accuracy ki loss ke badle energy, speed, ya area mein bade fayde leta hai. Key word hai controlled : hum error sirf wahan accept karte hain jahan application error-tolerant ho, aur hum yeh bound karte hain ki woh kitna bura ho sakta hai.
Definition Error Resilience
Ek application error-resilient hoti hai agar intermediate computation mein ek bounded perturbation final output quality mein acceptable change produce kare (jo ek quality metric se measure hoti hai, jaise PSNR, classification accuracy, ya relative error).
Resilience ke teen structural reasons hain:
Perceptual limits — insaanon ki finite resolution hoti hai (audio, video, images).
Noisy/redundant input — sensor data pehle se hi noisy hota hai; extra tiny error noise floor mein kho jaata hai.
Statistical aggregation / self-healing — sums, averages, aur iterative algorithms (gradient descent, PageRank) per-operation error ko absorb kar lete hain.
Approximation stack ki har layer par hoti hai.
Definition Main techniques
Precision scaling (bit-width reduction): kam bits use karo (jaise FP32 → FP16 → INT8).
Kam bits ⇒ chhhote adders/multipliers ⇒ kam energy aur area.
Approximate arithmetic circuits: ek adder/multiplier design karo jo rare cases mein galat ho lekin bahut chhhota ho (jaise ek truncated multiplier, ya ek approximate full-adder jo carry chain drop kar de).
Loop perforation: loop ke kuch iterations skip karo (jaise har doosra pixel process karo).
Memoization / load-value approximation: recompute karne ki jagah ek previous/similar result reuse karo.
Voltage overscaling (VOS): safe voltage se neeche run karo; occasional timing errors aate hain,
lekin power ∝ V 2 hoti hai toh badi savings milti hai.
Approximate memory: DRAM refresh rate kam karo ya kam SRAM cells rakho → non-critical data mein kuch bit flips.
Dynamic power hai P = α C V 2 f . V ko 20% drop karo ⇒ power 1 − 0. 8 2 = 36% drop hoti hai.
Lekin circuit delay ∝ V / ( V − V t h ) β badhti hai jab V girta hai, toh fixed clock par
kuch paths apni deadline miss karte hain → timing errors . VOS kehta hai: un rare errors ko least-significant bits par tolerate karo , badi power win lo.
Worked example Example 1 — Truncated (fixed-point) multiplier
A = 1.011 0 2 aur B = 1.101 0 2 multiply karo (dono ke 4 fractional bits hain). Exact product ko 8
fractional bits chahiye. Maan lo hum result ke neeche ke 4 bits truncate karte hain.
Step: exact A = 1.375 , B = 1.625 , product = 2.234375 . Kyun? Ground truth establish karo.
Step: 4 fractional bits rakho → 2.001 1 2 = 2.1875 . Yeh step kyun? Truncation bas tail
drop karta hai; hardware ko un bits ke liye koi logic nahi chahiye → chhhota array.
Error = 2.234375 − 2.1875 = 0.046875 , relative ≈ 2.1% .
Trade-off: humne ≈ ek 4 × 4 chunk of partial-product logic 2% error ke badle hata diya.
Worked example Example 2 — Image filter par loop perforation
Ek blur 1000 × 1000 image par har pixel ko uske 8 neighbours ke saath average karta hai = 1 0 6 iterations.
Step: 2 se Perforate karo → rows 0 , 2 , 4 , … process karo, skipped rows ko neighbour se copy karo.
Kyun? Natural images mein adjacent rows highly correlated hoti hain (aggregation/redundancy).
Result: ≈ 50% kam iterations ⇒ ~2× speedup; PSNR drop typically < 1 dB.
Kyun acceptable hai: perceptual limit — aankh usually notice nahi karti.
Worked example Example 3 — Quality metric se bound choose karna
Hum chahte hain ki image quality PSNR ≥ 40 dB rahe. Hum bit-width n sweep karte hain aur PSNR measure karte hain: n = 12 par
PSNR = 52 , n = 8 par PSNR = 41 , n = 6 par PSNR = 33 .
Step: sabse chhhota n choose karo jo bound meet kare ⇒ n = 8 . Kyun? Sabse chhhota n = maximum
energy saving jo constraint satisfy kare (80/20 sweet spot).
Common mistake "Approximate = buggy / random garbage."
Kyun sahi lagta hai: "galat answers" matlab broken chip laagta hai. Fix: approximation
engineered aur bounded hoti hai. Hum choose karte hain ki error kahaan jaaye (LSBs, non-critical data) aur
quality guarantee prove karte hain. Error ek design knob hai, defect nahi.
Common mistake Program ke
critical hisse ko approximate karna.
Kyun sahi lagta hai: "Maine sabse bade loop par sabse zyada energy bachayi." Fix: kabhi
control flow, pointers, loop bounds, ya exponents (FP mein exponent magnitude control karta hai!)
approximate mat karo. Unhe corrupt karo → crashes ya catastrophic error. Sirf woh data approximate karo jo
tolerate kar sake (mantissa LSBs, pixel values).
Common mistake Yeh assume karna ki error hamesha average out ho jaati hai.
Kyun sahi lagta hai: upar wala N law. Fix: yeh tabhi cancel hota hai jab errors
independent aur zero-mean hon. Ek biased approximation (jaise hamesha neeche round karna) ek
systematic drift deta hai jo N ki tarah badhti hai , N ki tarah nahi. Unbiased/rounding schemes prefer karo.
Common mistake Feedback loops mein error accumulation ignore karna.
Kyun sahi lagta hai: har step ki error tiny hoti hai. Fix: recursive/iterative
systems mein chhhoti errors amplify ho sakti hain; stability check karo, sirf per-op error nahi.
Recall Feynman: ek 12-saal ke bache ko explain karo
Socho tum crayons se picture bana rahe ho. Agar tum lines se thodi si bahar ho, picture phir
bhi zabardast lagti hai — lekin tune bahut tezi se finish kiya aur kam crayon use kiya. Computers
bhi yahi trick kar sakte hain: photos, music, ya "kya yeh dog hai?" jaisi cheezein guess karne ke liye,
woh math thoda sloppy karte hain purpose se. Sloppy math faster hai aur kam battery use karta hai, aur
tum bata bhi nahi sakte ki answer thoda off hai. Clever part yeh hai ki kahaan sloppy hona hai yeh choose karo —
kabhi important cheezoon par nahi (jaise page number), sirf un parts par jo koi notice nahi karta.
Mnemonic Techniques yaad karo:
"PA-LOVE-M"
P recision scaling, A pproximate circuits, L oop perforation, O verscaling voltage,
V alue memoization, E rror-tolerant apps, M emory approximation.
Approximate computing matlab apne chip ko kuch "LOVE " dena — jahan relax kar sake, wahan relax karne do.
#flashcards/hardware
Approximate computing mein core trade-off kya hai? Output quality ki ek chhhoti, bounded loss ke badle energy, speed, ya area mein bade fayde.
Summing/averaging approximation kyun tolerate kar sakta hai? N independent zero-mean errors ke liye, total error
N σ ki tarah badhta hai jabki sum
N ki tarah, toh
relative error
→ 0 .
Bit-width aadha karne se multiplier energy ~4× kyun kam hoti hai? Ek n × n array multiplier ≈ n 2 full-adder cells use karta hai, aur energy ∝ n 2 V 2 ; n → n /2 se ( 1/2 ) 2 = 1/4 milta hai.
Voltage overscaling kya hai aur yeh powerful kyun hai? Safe voltage se neeche run karna; power ∝ V 2 hoti hai toh badi savings, non-critical bits par rare timing errors ki cost par.
Loop perforation kya hai? Kuch loop iterations skip karna (jaise har doosra pixel) aur reuse/interpolate karna, redundancy exploit karke speedup ke liye.
Program ke kaun se hisse KABHI approximate nahi karne chahiye? Control flow, loop bounds, pointers/addresses, aur FP exponents — wahaan errors crashes ya catastrophic magnitude errors cause karte hain.
"Error averages out" assumption FAIL kab hoti hai? Jab errors biased (non-zero mean) hon; systematic error tab
N ki tarah badhti hai,
N ki tarah nahi.
Approximation error bound karne ke liye ek quality metric batao. PSNR (images), classification accuracy (ML), ya relative/absolute error.
Approximation bug ke barabar kyun nahi hai? Yeh engineered aur bounded hoti hai — tum choose karte ho error kahaan jaaye aur quality metric guarantee karo; bug uncontrolled hota hai.
Load-value/memoization approximation kya hai? Ek previous ya similar computed value reuse karna recomputing ki jagah, jab inputs kaafi close hon.
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 (bilkul ulta philosophy — error hatane ke liye energy kharchna)
Dark Silicon and Energy-Efficient Architectures
error grows sqrt N, signal grows N
power scales as V squared
Approx Arithmetic Circuits