Processing Element (PE): ek MAC unit — a×b+c compute karta hai.
Systolic array: PEs ki ek 2-D grid jahan data neighbours ke beech rhythmically flow karta hai (jaise heartbeat — Greek systole), har step mein koi global memory access nahi.
On-chip SRAM / scratchpad: weights aur activations ko compute ke paas rakhta hai.
Isko dumb tarike se karo: har MAC ke liye, Xik aur Wkj memory se load karo. Yeh 2×MNK memory reads hain. WHY bad? Ek DRAM read ≈ 640 pJ; ek MAC ≈ 0.2 pJ. Memory tax 1000× se dominate karta hai.
PEs ko K×N grid mein arrange karo. WeightsWkj load hoke PEs ke andar stationary rakhe jaate hain (isko weight-stationary kehte hain). ActivationsXik left→right flow karti hain, har clock mein data ka ek column enter karta hai. Partial sums top→bottom flow karte hain, har PE karta hai:
psumout=psumin+Xin×Wstored
Kyunki har activation, inject hone ke baad, PEs ki poori row par march karta hai, ek memory load bahut saare multiplies feed karta hai. Array fill hone ke baad ("pipeline fill" latency), yeh har cycle mein ek full result column produce karta hai.
Ek domain-specific accelerator jo MAC units ke spatial array ke around bana hai, neural-network matrix multiply ke liye data reuse aur low precision use karke ops/joule maximize karne ke liye optimised hai.
NN inference mein kaunsa single operation dominate karta hai?
Multiply-accumulate: a×b+c compute karo; ek multiply plus ek add running accumulator mein.
Systolic array kya hai?
Processing elements ki ek 2-D grid jahan data neighbours ke beech rhythmically flow karta hai, per-step global memory access ke bina massive data reuse enable karta hai.
Memory, arithmetic nahi, asli cost kyun hai?
Ek DRAM read ek MAC se ~1000× zyaada energy cost karta hai, toh naive loading dominate karta hai; reuse fetches amortise karti hai.
M×K by K×N matmul mein MACs ka formula?
M⋅N⋅K.
Clock f par R×C PE array ka peak throughput?
R⋅C⋅f MACs/s, yaani 2RCf ops/s.
Low precision (int8) zyaada MACs per area kyun deta hai?
Multiplier area/energy ~(bit-width)² ke saath scale karta hai, toh int8 fp32 se ~16× chhota hai.
Utilisation kya hai aur kyun care karna chahiye?
actual MACs ÷ (R·C·cycles); peak TOPS meaningless hai agar array chhoti/mismatched layers ya memory limits ki wajah se idle baitha rahe.
"Weight-stationary" ka matlab kya hai?
Weights ek baar load hoke har PE mein hold kiye jaate hain jabki activations stream through karti hain, weight reuse maximize karta hai.
Peak TOPS asli performance kyun nahi hai?
Yeh 100% utilisation aur unlimited bandwidth assume karta hai; real workloads aksar memory-bound hote hain ya array under-fill karte hain.
Recall Feynman: 12-saal ke bachche ko samjhao
Socho ek badi factory of tiny workers jo ek giant square grid mein arrange hain. Har worker sirf EK trick jaanta hai: "do numbers multiply karo aur answer apne pile mein add karo." Numbers rows ke saath walk karte hain jaise conveyor belt par log, aur har worker ek number paas aate waqt pakadta hai, apni chhoti trick karta hai, aur running total neeche pass karta hai. Kyunki thousands of workers apni trick ek saath karte hain, maths ka ek pahaad jo aapke laptop ko bahut waqt lagata, ek second mein ho jaata hai. PEs ki wo grid hi NPU hai — ek calculator factory sirf us type ki maths ke liye bani jo AI ko chahiye.