6.5.10 · D5 · HinglishAdvanced & Emerging Architectures

Question bankFPGA-based acceleration

1,926 words9 min read↑ Read in English

6.5.10 · D5 · Hardware › Advanced & Emerging Architectures › FPGA-based acceleration


True or false — justify karo

FPGA tumhara algorithm aise run karta hai jaise ek CPU program run karta hai.
False. FPGA tumhare algorithm ki shape ka ek circuit ban jaata hai; koi instruction fetch/decode loop nahi hota — data fixed hardware se flow karta hai, na ki ek reused ALU se. Dekho Dataflow architectures.
Zyada clock frequency ka matlab hamesha zyada real kaam per second hota hai.
False. Throughput = (ops per cycle) × clock. Ek 250 MHz FPGA jo 1000 ops/cycle karta hai, ek 4 GHz CPU jo ~10 ops/cycle karta hai use crush kar deta hai; frequency sirf ek factor hai.
Pipeline latency aur pipeline throughput ek hi measurement hai.
False. Latency batata hai pehla result kitni der mein aayega ( cycles); throughput fill hone ke baad ka steady rate hai (1 result/cycle). Bade (bahut saare items) ke liye throughput dominate karta hai aur latency ek one-time cost hai. Dekho Pipelining and Throughput.
Ek -input LUT apne inputs ki koi bhi boolean function implement kar sakta hai.
True. Ek -input LUT mein output bits store hote hain — ek full truth table. inputs ki har boolean function ek truth table hi hoti hai, to use LUT mein likh dene se LUT woh gate ban jaata hai. Dekho Configurable Logic Blocks (LUTs & Flip-Flops).
Ek -stage pipeline bilkul speedup deta hai.
False. Speedup hai , jo sirf par ke paas jaata hai. Chhote (kam items) ke liye fill cost zyada tar gain kha jaata hai.
FPGA design mein zyada compute units add karna hamesha usse faster banata hai.
False. Agar tum memory-bound ho (, performance bandwidth × intensity se cap ho rahi hai), to extra units data ka intezaar karte hue idle baithte hain. Tumhe arithmetic intensity badhana hoga (BRAM mein buffer karo), compute nahi add karna. Dekho Roofline Model & Arithmetic Intensity.
Tum ordinary sequential C ko bas recompile kar ke HLS se fast FPGA design pa sakte ho.
False. Naive C synthesize hokar ek slow state machine banta hai, aksar CPU se bhi slow. Tumhe parallelism expose karni hogi — unroll karo, pipeline karo, arrays partition karo — aur dataflow mein sochna hoga. Dekho High-Level Synthesis (HLS).
Irregular streaming workloads ke liye FPGA generally GPU se zyada power-efficient hota hai.
True. Custom/irregular/low-latency streaming ke liye, FPGAs best performance/Watt dete hain; GPUs regular dense SIMD math mein shine karte hain lekin zyada power burn karte hain. Dekho GPU vs FPGA vs ASIC trade-offs.
Manufacturing ke baad ASIC aur FPGA dono ko reprogram kiya ja sakta hai.
False. Sirf FPGA field-programmable hota hai; ek ASIC ki logic permanently etched hoti hai. FPGA us post-fab flexibility ke liye kuch efficiency trade karta hai.
DSP slices sirf LUTs ke cluster ka ek marketing naam hai.
False. DSP slices hardwired multiply-accumulate units hote hain. LUTs se multipliers banana bada aur slow hota hai, isliye unhe harden karna area, power bachata hai aur clock boost karta hai. Dekho Domain-Specific Accelerators.

Error dhundho

"Mere FIR filter mein multipliers hain isliye ye kisi bhi CPU se faster hoga, period."
Woh compute parallelism ka sirf ek upper bound hai; real speedup input bandwidth se cap hota hai — agar tum har cycle mein ek naya sample feed nahi kar sakte, to multipliers bhookhe reh jaate hain.
"Timing closure ka matlab hai design bina syntax errors ke compile ho gaya."
Nahi — timing closure check karta hai ki sabse lamba combinational path clock period ho. Ek syntactically valid design jo timing fail karta hai galat data produce karta hai kyunki values clock edge par stable nahi hoti.
"Place & Route optional hai; synthesis ne mujhe pehle se ek working netlist de di hai."
Synthesis sirf logic ko primitives (LUTs, DSPs) par map karta hai. Place & Route physical locations aur wires assign karta hai — aur wire delay distance par depend karta hai, jo achievable clock set karta hai. Isse skip karne ka matlab koi real hardware nahi.
"Roofline kehta hai , isliye jab bhi mere paas lots of FLOPs hain main compute-bound hoon."
FLOP count decide nahi karta — ratio decide karta hai. = performance, = compute roof, = bandwidth aur = intensity ke saath, tum compute-bound tab hote ho jab ; ek high-FLOP kernel jo low intensity wala ho woh phir bhi memory-bound hai. Dekho Roofline Model & Arithmetic Intensity.
"Maine design ko pipeline kar diya, isliye latency kam ho gayi."
Pipelining usually latency badhata hai (zyada register stages) jabki throughput badhata hai. Tum pehle result ki zyada delay trade karte ho har cycle mein ek result ke liye. Dekho Pipelining and Throughput.
"BRAM bas slow DRAM hai jo ittefa se on-chip hoti hai."
BRAM fast on-chip SRAM hai jiska poora maksad slow DRAM trips se bachna hai — ye data reuse badhata hai aur tumhe compute-bound rakhta hai, ek slow memory se bilkul ulta.
"Speedup se zyada ho sakta hai agar main huge kar doon."
Ye monotonically ke paas jaata hai neeche se aur kabhi exceed nahi karta — ratio stage count par cap hai (gap ).

Why questions

CPU kya effort waste karta hai jo ek spatial FPGA datapath avoid karta hai?
CPU har cycle mein instructions re-fetch aur re-decode karta hai aur ek ALU reuse karta hai; FPGA har operation ke liye ek physical unit lay out karta hai, isliye koi instruction overhead nahi hota aur har cycle mein kai ops run hote hain.
FPGAs ~100–500 MHz par run karte hain phir bhi GHz CPUs ko kyun beat kar dete hain?
Unka edge width aur depth mein hai (spatial parallelism + deep pipelines), clock mein nahi. Ek modest clock par hazaron ops/cycle ek high clock par kuch ops/cycle ko outproduce karta hai.
Pipeline speedup formula ke denominator mein ki jagah kyun hai?
Extra fill cost hai — pehle result ko steady one-per-cycle stream shuru hone se pehle saare stages chahiye. Ye items par amortize hone wala ek fixed overhead hai.
DRAM se har access stream karne ki jagah data BRAM mein kyun rakhein?
Arithmetic intensity (fetch kiye gaye har byte par ops) badhane ke liye taaki tum compute-bound raho; har cached value kai operations ko feed karta hai, repeated slow DRAM fetches avoid karte hain.
FIR example mein shift register sirf samples hold karne se zyada kyun matter karta hai?
Ye data reuse deta hai — har input sample naturally successive cycles mein saare taps ko feed karta hai, isliye tumhe use memory se kabhi re-fetch nahi karna padta.
FPGA "GPU aur ASIC ke beech" kyun positioned hai?
Ye near-ASIC efficiency offer karta hai lekin fabrication ke baad reprogrammable rehta hai, ASIC ki huge fixed NRE cost se bachata hai jabki custom streaming work par GPU ki efficiency ko beat karta hai.
Naive sequential C FPGA par CPU se slow kyun ho sakta hai?
HLS use ek serial state machine mein synthesize karta hai jo low clock aur no parallelism wali hoti hai, isliye ye CPU ka high clock khoye bina FPGA ki parallelism gain kiye.

Edge cases

Jab ho (ek single item) to pipeline speedup ka kya hoga?
Speedup — bilkul koi benefit nahi. Ek item ke saath tum full fill cost pay karte ho aur use amortize karne ke liye kuch nahi hota.
Throughput kya hoga jab pipeline kabhi fill nahi hoti kyunki tum har cycles mein ek item feed karte ho?
Tumhe koi steady-state benefit nahi milta — ye unpipelined behavior pe degenerate ho jaata hai. Pipelines tab hi jeetti hain jab input stream dense ho (har cycle mein ek naya item).
Agar do combinational paths speed mein slowest ke liye tie karte hain to kya hoga?
Clock period phir bhi us shared maximum se set hoti hai; ties closure nahi badlate — sabse lamba path (chahe kitne bhi share karein) govern karta hai.
Yahan -tap FIR () ya empty dataflow graph ka kya matlab hai?
Compute karne ke liye kuch nahi hai — koi multipliers nahi, koi output nahi. Ye ek degenerate design hai; parallelism gain () zero par collapse ho jaata hai kyunki spread karne ke liye koi kaam hi nahi hai.
Jab input bandwidth, compute nahi, wall ho to speedup kya limit karta hai?
Speedup saturate ho jaata hai (bandwidth / bytes-per-result) par, chahe tum kitne bhi compute units add karo — tum Roofline Model & Arithmetic Intensity ke memory roof par ho, compute roof par nahi.
Agar ek design 100% LUTs use karta hai lekin memory-bound hai, to kya ye "full" hai?
Resource ke terms mein haan, lekin ye underperforming hai — idle logic data ka intezaar kar raha hai. "Logic se full" aur "fast" unrelated hain jab bottleneck bandwidth hai.