5.1.4 · D1 · Hardware › Instruction Set Architecture (ISA) › Register file organization
Ek register file CPU ke andar light-switches ki ek chhoti si grid hai: kuch words jo ek single clock tick mein flip ho sakte hain. Parent note mein jo bhi hai — symbols N , k , n , R , W , aur MUXes aur decoders ki picture — sab sirf ek sawaal ka jawaab hai: "Main kaise choose karun ki kaun se switches dekhne hain, aur kaun sa change karna hai, bina dur-wali memory tak gaye?"
Is page mein kuch bhi assumed nahi hai. Agar parent note mein koi symbol ya word use hua hai, hum use yahan build karte hain, ek picture se, use kabhi bhi zaroorat padne se pehle. Upar se neeche padho; har item apne upar wale item par lean karta hai.
Kisi bhi symbol se pehle, yeh image apne zehan mein rakho: ek single cell jo ya toh OFF (0) ya ON (1) ho sakti hai aur woh value retain karti hai chahe koi dekh raha ho ya nahi.
Ek bit ek on/off value hai: 0 ya 1 . Picture mein yeh ek single box hai jo shaded (1) ya empty (0) hai.
Picture: ek square jo tab tak lit rehta hai jab tak koi use flip na kare.
Topic ko kyun chahiye: har register bits se bana hota hai. Agar sabse chhoti unit picture nahi ki, toh uske upar kuch bhi samajh nahi aayega.
Definition Word (aur uski width
n )
Ek word bits ki ek fixed-size row hai jise ek unit ki tarah treat kiya jaata hai. Us row mein bits ki sankhya uski width hai, jise ==n == likha jaata hai.
Picture: n boxes ek horizontal strip mein side by side chipke hue.
Topic ko kyun chahiye: ek register ek bit nahi rakhta, woh ek poora number rakhta hai — ek word. Jab parent likhta hai "har register ek n -bit word rakhta hai," toh n sirf us strip ki lambaai hai. Typical n = 32 ya 64 .
Ab bahut saari word-strips ko vertically stack karo. Woh stack hi register file hai.
Definition Registers ki sankhya
N
==N == simply kitni word-strips stack mein hain yeh batata hai. Parent N = 32 use karta hai.
Picture: upar wale stack mein rows count karo.
Ab woh subtle symbol jo sabko trip karta hai: 2 k .
N = 2 k kyun likhte hain, sirf N kyun nahi?
Hume on/off wires (bits) se bane switch ka use karke ek row ko point karna hai. k on/off wires ka ek group 2 k alag-alag patterns spell kar sakta hai — jaise k coins heads/tails hote hain toh 2 k combinations milte hain. Toh rows ki sankhya jo hum address kar sakte hain woh naturally power of two hoti hai. Isliye parent N = 2 k likhta hai: iska matlab hai "N rows, k selector-bits se address ki jaati hain."
2 k aur address width k
2 k ka matlab hai 2 ko k baar khud se multiply karna: 2 1 = 2 , 2 2 = 4 , 2 3 = 8 , 2 4 = 16 , 2 5 = 32 .
==k -bit address== woh chhota group hai k wires ka jo ek row ko naam deta hai.
Picture: ek chhoti dial k notches ke saath; har setting exactly ek row ko point karti hai.
Topic ko kyun chahiye: instruction mein "address field" yahi k bits hote hain. 32 registers ke liye, k = 5 .
log 2 — woh tool jo 2 k ko undo karta hai
Hum baar-baar ulta sawaal poochhte hain: "Mere paas N rows hain, mujhe kitne selector-bits k chahiye?" Woh tool jo jawaab deta hai "2 ko kis power par raise karne se N milega?" woh base-2 logarithm hai, log 2 N likha jaata hai.
Yahi tool kyun, koi aur kyun nahi? Multiplication/exponent (2 k ) bits-in se rows-out jaata hai. Hume inverse machine chahiye: rows-in se bits-out. log 2 define hi aise hai ki woh 2 ( ⋅ ) ka exact inverse hai — koi aur operation power of two ko undo nahi karta.
Worked example Ceiling feel karo
Maano N = 40 registers hain. log 2 40 ≈ 5.32 . Aadha wire nahi ho sakta, toh upar round karo: k = 6 bits. Chhe wires 2 6 = 64 rows tak cover kar leti hain — kaafi hai, 64 − 40 = 24 patterns unused rehte hain.
Ek register file sirf do cheezein karta hai. Unhe precisely name karna hi port symbols ke hone ki poori wajah hai.
Read = ek chosen row ko dekhna aur uski word ko ek output wire par copy karna, row ko unchanged chodh kar.
Write = ek chosen row ko ek nayi word hold karne ke liye change karna .
Picture: reading ek camera hai jo ek strip par pointed hai; writing ek eraser-aur-pencil hai jo ek strip ko replace karta hai.
Definition Port, aur counts
R aur W
Ek port ek independent "lane" hai jo same clock tick mein ek read (ya write) carry kar sakta hai.
==R == = read ports ki sankhya (kitni rows ko aap simultaneously dekh sakte ho).
==W == = write ports ki sankhya (kitni rows ko aap simultaneously change kar sakte ho).
Picture: R alag-alag cameras aur W alag-alag pencils, sab ek hi stack par ek saath aimed.
Topic ko kyun chahiye: instruction add rd, rs1, rs2 ko do rows ek hi saath dekhna hota hai (toh R = 2 ) aur baad mein ek row change karni hoti hai (W = 1 ). Ports hi "ek hi saath" ko hardware mein build karte hain.
Yeh woh machines hain jo k -bit address ko actual chosen row mein convert karti hain. Parent unhe naam se use karta hai — yahan har ek kya hai , ek picture ke roop mein.
Definition Multiplexer (MUX) — "bahut mein se ek pick karo" machine
Ek ==2 k -to-1 multiplexer== ke paas 2 k input wires, ek output wire, aur ek k -bit select hota hai. Woh exactly ek input ko output se connect karta hai, select bits ke zariye choose karke.
Picture: ek railway switchyard jahan bahut saare incoming tracks ek single track mein funnel hote hain; select-dial decide karta hai kaun si incoming train aage jaayegi.
Reading ke liye yahi tool kyun? Reading by definition hai "bahut mein se ek row choose karo aur output bus par daalo." Yahi exactly ek MUX karta hai. Ek camera = ek MUX, toh R read ports ka matlab hai R alag-alag MUXes.
Definition Decoder — "bahut mein se ek par route karo" machine
Ek ==k -to-2 k decoder== k input wires leta hai aur apne 2 k output lines mein se exactly ek ko light up karta hai — woh wala jiska number input pattern se match karta hai.
Picture: ek apartment mailbox panel: aap ek apartment number (k bits) punch karte ho aur us ek mailbox slot ke upar light jal jaati hai.
Writing ke liye yahi tool kyun? Writing reading ka mirror image hai: ek data value ko ek chosen row mein steer karna hota hai. Decoder decide karta hai kaun si row ki "abhi capture karo" line high jaaye; ise global WriteEnable ke saath AND karna ensure karta hai ki write sirf tab ho jab hum actually chahein.
Common mistake "MUX aur decoder ek hi cheez hain."
Kyun sahi lagta hai: dono k select bits use karte hain aur dono "2 k mein se ek" ki baat karte hain.
Galti: ek MUX ke paas bahut saare inputs → ek output hota hai (gathering, reads ke liye). Ek decoder ke paas ek active choice → bahut saare outputs, ek lit hota hai (fanning out, writes ke liye). Woh opposite directions mein point karte hain.
Fix: MUX = funnel in (read). Decoder = fan out (write).
Parent ka sabse scary symbol ( R + W ) 2 hai. Ab aapke paas use padhne ke liye har piece hai.
+ ", aur bahari square
R + W = har cell ko cross karne wali port-lanes ki total sankhya (read lanes plus write lanes).
Bahari ==( ) 2 == ka matlab hai us total ko khud se multiply karna.
Picture: har cell ko taller hona padta hai zyada horizontal word-lines fit karne ke liye aur wider hona padta hai zyada vertical bit-lines fit karne ke liye jaise ports badhte hain — dono dimensions R + W ke saath scale karte hain. Area = height × width ⇒ ( R + W ) × ( R + W ) = ( R + W ) 2 .
Topic ko kyun chahiye: yeh single square hi wajah hai ki wide CPUs expensive hote hain. Ports double karne se cost double nahi hoti — woh chaar guna ho jaati hai.
Definition R0 (register zero)
R0 woh row hai jiska number 0 hai. RISC-V/MIPS mein yeh real storage ki tarah built nahi hai — yeh permanently word 0 read karne ke liye wired hai, aur isme writes discard ho jaate hain.
Picture: row 0 ki strip sab-empty painted aur glued down hai; eraser us par bounce karta hai.
Topic ko kyun chahiye: ek free constant 0 add rd, rs, R0 ko copy ki tarah kaam karne deta hai aur add R0, R0, R0 ko "kuch mat karo" ki tarah, pore opcodes bachate hue.
log base 2 undoes it gives k
Decoder route one for WRITE
Area scales as R plus W squared
Register file organization 5.1.4
MUX aur decoder ke gate-level details ke liye Multiplexers and Decoders dekho, aur read ports actually kahan jaate hain yeh jaanne ke liye Datapath and ALU dekho.
Daayaan side cover karo aur parent note par jaane se pehle zor se jawaab do.
Ek bit kya hai, ek picture mein? Ek box jo ya toh lit (1) ya empty (0) rehta hai.
Width n kya measure karta hai? Kitne bits ek word/register mein glued hain.
N kya count karta hai, aur ise usually kaise likha jaata hai?Registers ki sankhya; N = 2 k likha jaata hai.
Count power of two, 2 k , kyun hoti hai? Kyunki k on/off address wires exactly 2 k rows naam de sakte hain.
Kaun sa tool "kitni rows" ko "kitne address bits" mein badalta hai? Base-2 logarithm, k = ⌈ log 2 N ⌉ .
Ceiling ⌈ ⌉ kya karta hai aur kyun? Round up karta hai; wire ka fraction nahi ho sakta.
Read aur write mein kya farak hai? Read ek row ko unchanged copy karta hai bahar; write ek row ka content replace karta hai.
R aur W kya count karte hain?Simultaneous read lanes aur simultaneous write lanes (ports).
Kaun si machine read karta hai aur kyun? Ek 2 k -to-1 MUX, kyunki reading hai "bahut mein se ek choose karo bus par."
Kaun si machine write karta hai aur kyun? Ek k -to-2 k decoder (plus WriteEnable), kyunki writing hai "data ko ek chosen row mein route karo."
( R + W ) 2 mein square kahan se aata hai?Har cell port count ke saath height aur width dono mein grow karta hai; area = height × width.
RISC-V/MIPS mein R0 ke baare mein kya khaas hai? Yeh hardwired hai ki 0 read kare aur writes ignore kare — ek free constant.