Visual walkthrough — Single-cycle datapath design
5.2.1 · D2· Hardware › Processor Datapath & Pipelining › Single-cycle datapath design
Yeh ek picture-story hai is baat ki ki ek single-cycle CPU apni sabse slow instruction ki speed par kyun chalta hai. Hum ek bare wire se shuru karte hain aur ek-ek block add karte jaate hain, jab tak hum ka number dekh nahi lete. Har symbol ko use karne se pehle draw kiya gaya hai.
Parent: Single-cycle datapath design · Hinglish: 5.2.01 Single-cycle datapath design (Hinglish)
Step 1 — "One clock cycle" ka matlab actually kya hai
KYA HAI. Ek clock ek wire hai jo hamesha high–low–high–low hoti rehti hai, jaise metronome ki tick. Ek poori tick (low→high→next low→high edge... hum rising edge se rising edge count karte hain) clock period hai, jise likhte hain, aur picoseconds (ps, jahan seconds) mein measure karte hain.
KYUN. Ek single-cycle machine mein rule bahut strict hai: ek instruction ko ek tick ke andar poori tarah finish ho jaana chahiye. Toh speed calculate karne se pehle, hum agree karte hain ki tick kya hoti hai aur "finish" ka matlab kya hai — instruction ka result next rising edge ke aane se pehle wires par settled aur correct hona chahiye.
PICTURE. Neeche square wave hai: amber arrow ek mark karta hai. Jo bhi instruction karta hai woh sab us amber span ke andar complete ho jaana chahiye.

Step 2 — Data instantly move nahi karta: block delay
KYA HAI. Har hardware block (ek memory, ALU, register file) ko apne inputs se correct outputs banane mein time lagta hai. Hum ise propagation delay kehte hain, jise likhte hain. Example: matlab hai "ALU ko stable inputs do, aur baad uski output correct hogi."
KYUN. Agar kaam instantaneous hota, toh clock infinitely fast tick kar sakta tha aur yeh poora page pointless hota. Clock ka minimum period hone ki poori wajah yeh hai ki real gates ko real time lagta hai. Hume har block ke liye ek number chahiye.
PICTURE. Signal block ke left se enter karta hai; right par output tab tak galat hai (grey, "settling") jab tak nahi guzar jaata, phir woh correct ho jaata hai (cyan).

Term-by-term: = instruction read karo; = registers read karo; = compute karo; = data memory touch karo; = result store karo. ( kahan se aata hai, yeh dekhne ke liye ALU design dekho.)
Step 3 — Wire par delays ADD hote hain, maximize nahi
KYA HAI. Jab blocks series mein wire hote hain (ek ka output doosre ka input ban jaata hai), total time unke delays ka sum hota hai. Agar block A time leta hai aur block B (A ke baad) time leta hai, toh B ke output par sahi answer time par aata hai.
KYUN. B tab tak settle bhi nahi shuru kar sakta jab tak A ka output stable na ho — A finish hone tak B kachra dekh raha hota hai. Isliye delays end to end stack hote hain. Yeh addition hai, aur yeh is poore page par sabse important operation hai. (Step 7 mein jo max milta hai usse compare karo — woh ek alag sawaal ke liye hai.)
PICTURE. Ek chain mein do blocks; neeche time axis dikhata hai A par finish karta hai, phir B tak chalta hai. Amber bracket total hai.

Step 4 — EK instruction ka route trace karo: lw (load word)
KYA HAI. lw $rt, off($rs) memory se ek word register mein read karta hai. Clock tick karne ke moment se signal follow karo:
- Instruction read karo —
- Register
$rs(base address) read karo — - ALU base + offset add karke memory address banata hai —
- Data memory us address ko read karti hai —
- Loaded word
$rtmein wapas write karo —
KYUN. lw woh instruction hai jo har stage ko touch karta hai: dono memories aur write-back. Hum ise trace karte hain kyunki jo bhi slowest instruction hai, lw prime suspect hai — iska route sabse lamba hai.
PICTURE. Paanch blocks ek line mein, cyan signal left→right sweep karta hai, har hop uski delay ke saath labelled hai. Neeche amber ruler par running total dekho.

Step 5 — BAAKI instructions trace karo (har case)
KYA HAI. Alag instruction types alag routes lete hain, isliye woh kuch blocks skip karte hain. Hume sab check karne chahiye — reader ko koi aisi instruction nahi milni chahiye jo humne trace na ki ho.
- R-type (
add): instr read karo → do registers read karo → ALU → write back. Koi memory nahi. sw(store): instr read karo → registers read karo → ALU (address) → data memory mein likho. Koi write-back nahi.beq(branch): instr read karo → registers read karo → ALU compare karta hai (subtract, zero check karo). Koi memory nahi, koi write-back nahi.
KYUN. Kyunki routes alag hain, totals bhi alag hain — aur maximum tab tak nahi pata chalta jab tak hum har competitor ko measure na kar lein. Ek ko skip karna sabse slow path ko chupa sakta hai.
PICTURE. Char horizontal bars, har instruction type ke liye ek, length = uski delay. lw visibly sabse lamba hai; beq sabse chhota.

Recall
sw kaun se blocks skip karta hai, aur woh lw se faster kyun hai?
sw write-back () skip karta hai kyunki store koi register result produce nahi karta — yeh sirf memory mein likhta hai. Yeh vs ps hai. Yeh data memory skip nahi karta (woh ise likhta hai), isliye yeh R-type se phir bhi slow hai.
Step 6 — Degenerate cases (kabhi koi scenario reader ko surprise mat karne do)
KYA HAI. Do boundary situations:
- Ek
nop/ do-nothing instruction phir bhi fetch hone ke liye pay karta hai — fetch cost se neeche kabhi nahi ja sakte. Isliye minimum possible path hai, zero nahi. - Agar do blocks ki equal delay ho toh?
max(next step) kisi bhi ek ko pick kar leta hai — tie theek hai, koi special handling nahi. Aur agar kisi block ki delay ho (ek plain wire), toh woh simply sum se nikal jaata hai — koi nuksaan nahi.
KYUN. Ek design jo "fetch bhool gaya" nonsense hoga; aur ties ya zero-delay wires ke baare mein sochne wala reader ek answer ka haqdar hai. Yeh edges confirm karte hain ki addition aur max rules total hain — har input ke liye defined hain.
PICTURE. Left: par floor (fetch unavoidable hai). Right: do bars ke beech tie, arrow dikhata hai max shared height pick karta hai.

Step 7 — Single-cycle law: clock = MAXIMUM route
KYA HAI. Yahi poora point hai. Single-cycle machine mein, ek clock period sabse slow instruction ke liye fit hona chahiye, kyunki wahi clock sab ko time karta hai. Isliye:
Term-by-term: pooch raha hai "saari instruction routes mein se kaun si sabse lambi hai?" — kyunki agar clock sabse lambe route se chhoti hoti, toh woh instruction apna answer settle hone se pehle grab ho jaati → galat result.
max kyun use karte hain, sum ya average kyun nahi? Hum ek aisi single period choose kar rahe hain jo worst instruction ke liye safe ho, aur worst = longest. Average lw ke liye bahut chhoti hogi (corruption); sum unnecessarily slow hogi. max exactly hai "sabke liye safe, zaroorat se zyada slow nahi."
PICTURE. Step 5 ke char bars, red dashed "clock line" sabse unche bar (lw) ki height par rakh di gayi hai. Har bar line ke neeche fit hona chahiye — aur chhote bars ke upar wasted amber gap draw kiya gaya hai.

Step 8 — Stress test: ek slow instruction add karo, dekho yeh sabko kaise poison karta hai
KYA HAI. Maano hum mul add karte hain jiska ALU stage ki jagah leta hai. Uska route (R-type shape):
Ab .
KYUN. max tab badhta hai jab koi bhi ek route grow kare. Kyunki saari instructions woh period share karti hain, add, lw, beq — sab — ab par chalte hain, chahe sirf mul ko hi yeh chahiye tha.
PICTURE. Step 7 chart mein ek nayi, unchi mul bar hai; red clock line tak jump karti hai, baaki har bar ke wasted amber gaps aur bade ho jaate hain.

Recall Ek slow instruction, fast
add ko kitna cost karta hai?
Pehle: add par chalta tha, waste karta tha. mul add karne ke baad: , toh add ab waste karta hai — fast instruction bina kuch change hue slow ho gayi. Yahi fundamental single-cycle disease hai.
Ek-picture summary

Ek frame mein poori derivation: alag length ke char routes (Step 5), delays har route ke saath add hote hain (Step 3), aur clock line maximum par set hoti hai (Step 7) — amber wasted gaps ke saath jo is chapter ke baad sab kuch motivate karte hain.
Recall Feynman retelling — poora walkthrough seedha explain karo
Char alag-alag length ke tracks par char runners ke baare mein socho. Har runner ka time bas yeh hai ki unke apne track ke har stretch mein kitna time lagta hai, woh sab add karte jao (Step 3–5). Ab tumhe ek finish-line gun chalani hai jo charon ke liye kaam kare — tum ise tab tak nahi chala sakte jab tak sabse slow runner cross na kar le, warna tum unhe "done" declare kar doge jab woh abhi bhi daud rahe hain (hardware mein woh galat answer hai). Isliye gun sabse lambe track ka wait karti hai — lw runner par (Step 7). Teen fast runners pehle finish kar lete hain aur bas idhar-udhar khade rehte hain time waste karte hue (amber gaps). Ek bahut lamba track add karo (mul par), aur ab gun aur zyada wait karti hai — aur sab aur zyada khade rehte hain (Step 8). Woh khade-rehne-ka-waste exactly woh reason hai ki agli chapters Pipelining kyun invent karti hain: runners ko chalate raho lekin track ko equal chhote pieces mein kaato taaki gun bahut zyada baar fire kar sake.