Isse pehle ki tum single-cycle datapath note padh sako, tumhe har woh symbol khud se samajh aana chahiye jo woh tumhare samne phenkta hai. Neeche, har idea ko kuch nahi se build kiya gaya hai, usse ek picture di gayi hai, aur us ek sawaal se justify kiya gaya hai jo woh answer karta hai. Upar se neeche padho — seedhi ke har paaydaan ko uske neeche waale ki zaroorat hai.
32 wires ko side by side rakho aur tum ek number spell kar sakte ho. Humein yeh agree karna hai ki kaun si wire kitne ke liye count hoti hai.
Figure 1 — yeh padho: upar ke aath chhote boxes single-bit wires hain jinhe unki place values se label kiya gaya hai; neeche ki moti laal arrow wahi information hai jo ek 32-bit bus ke roop mein carry ki ja rahi hai. Yeh seekho: "ek moti arrow with slash aur 32 = battees wires saath mein travel kar rahi hain."
Topic ko iske zaroorat kyun hai: datapath mein har box — ALU, memories, register file — 32-bit words mein baat karta hai. Jab parent note ALU mein ek arrow draw karta hai, woh arrow actually 32 wires hain.
Parent note mein register file ke do read ports aur ek write port hain:
Ek read port = ek lookup: "yeh lo ek 5-bit register number, mujhe iska 32-bit value do." Do ports humein ek saath do operands padhne dete hain (jaise add ko do inputs chahiye).
Ek write port = ek store: "yeh lo ek register number aur ek value; agle bell par, value wahan rakho." Yeh tabhi kaam karta hai jab RegWrite control wire 1 ho.
Figure 2 — yeh padho: baayein do kaalee arrows (rs, rt) andar jaati hain, daayein do kaalee arrows (read data 1, read data 2) bahar aati hain — yeh do read ports hain. Neeche ki laal arrow single write port hai, aur yeh tabhi data move karta hai jab RegWrite = 1 ho. Seekho: padhna hamesha allowed hai; likhne ke liye permission chahiye.
Topic ko iske zaroorat kyun hai:rs, rt, rd, RegWrite, aur "write-back" stage sab is shelf ke bina kuch nahi hain.
Figure 3 — yeh padho: har chhota kaala box ek byte-mailbox hai jiska apna address number neeche hai. Laal outline chaar consecutive bytes ko ek instruction word mein group karta hai. Seekho: memory byte ke hisaab se numbered hoti hai, lekin hum cheezein chaar bytes ek saath lete hain.
Parent note mein do alag memories hain:
Instruction memory — run karte waqt read-only; tum use PC do, woh wahan ki instruction word wapas de deta hai.
Data memory — read aur write; sirf lw (load word) aur sw (store word) use karte hain.
Topic ko iske zaroorat kyun hai:MEM stage, MemRead, MemWrite, aur load/store instructions sab in mailboxes se baat karte hain.
Seedha-ahead choice PC + 4 (line mein agla instruction chalao).
Branch choice — ek conditional redirect agar compare succeed kare (§8 mein Branch dekho).
Jump choice — ek unconditional redirect (§5 mein J-type dekho).
Adder (§7 dekho) naam ka ek chhota box PC + 4 compute karta hai jabki instruction ka baaki hissa execute hota hai. Agle bell par, chuna gaya value PC mein load hota hai.
Topic ko iske zaroorat kyun hai: poora Fetch stage hai "PC par instruction padho, phir agla PC decide karo."
Ek instruction ek 32-bit word hai jo labelled slots mein kaati gayi hai. Tum inhe compute nahi karte — bas padh lete ho ki kaun se bits ka kya matlab hai. MIPS teen carvings use karta hai: R-type, I-type, aur J-type.
Figure 4 — yeh padho: teen strips ek hi 6-bit laalopcode slot share karte hain. Upar wala (R-type) rd+funct par khatam hota hai; beech wala (I-type) ek 16-bit immediate par; neeche wala (J-type) mein ek wide 26-bit jump target hai. Seekho: wahi 32 bits, teen alag carvings.
Topic ko iske zaroorat kyun hai: note mein har mux (§8 mein defined) isliye exist karta hai kyunki alag instruction types apne operands usi 32-bit word ke alag fields se lete hain — aur jump target woh field hai jo seedha PC ko feed karta hai.
Immediate sirf 16 bits hai, lekin ALU 32-bit words par kaam karta hai. Hume ise 32 bits tak badhana hai — lekin kaise hum naye high bits bharte hain woh instruction par depend karta hai.
Topic ko iske zaroorat kyun hai: branch-target formula (PC+4)+(SignExt(imm)≪2) sign-extension then shift use karta hai; jump apne 26-bit target par wahi "×4" shift use karta hai; aur andi/ori ko zero-extension path chahiye.
Figure 5 — yeh padho: do kaalee arrows laal mux mein baayein taraf se enter karti hain; sirf ek daayein taraf nikalti hai. Neeche se upar aane wali arrow select control wire hai jo decide karti hai kaun sa input jitega. Seekho: mux ek controllable one-of-many switch hai, koi calculator nahi.
Topic ko iske zaroorat kyun hai: yeh paanch naam parent note ki control table mein har jagah aate hain; yahan inhe ek baar mux idea se define kiya gaya hai.
Yeh diagram ek dependency ladder hai: har arrow matlab hai "tumhe tail par box samajhna chahiye pehle head par box sense banana shuru ho." Arrows jo direction mein point karte hain usi direction mein follow karo. Baayein/upar sab raw material hai; saare raaste ek hi node "Single-cycle datapath" mein funnel hote hain neeche — wahi note hai jiske liye tum prepare kar rahe ho. Agar kisi box mein incoming arrow kisi aisi cheez ki taraf se point kare jo tum abhi explain nahi kar sakte, wapas jao aur woh pehla section phir padho.
Topic ko iske zaroorat kyun hai: poora "single-cycle slow hai" argument, Performance equation, aur Pipelining ki motivation is ek inequality par tikti hai.