Visual walkthrough — IP cores and SoC bus fabric
6.3.10 · D2· Hardware › Interconnects, Buses & SoC › IP cores and SoC bus fabric
Ye page parent ka central result — crossbar complexity formula — bilkul scratch se rebuild karta hai. Hum do chips se shuru karte hain jo baat karna chahte hain, aur picture ko ek ek wire se badhate hain, jab tak ki number apne aap saamne na aa jaaye.
Tumhe ye jaanna zaroori nahi ki "bus", "master", ya "arbiter" kya hota hai. Hum har ek ko theek uss waqt define karte hain jab zaroorat padti hai, aur draw karte hain.
Step 1 — Do blocks, ek wire: "baat karna" ka matlab kya hai
KYA. Ek master (usse kaho) ko left mein rakho aur ek slave () ko right mein. Dono ke beech ek line khicho.
KYUN. Bahut saare wires count karne se pehle, humein agree karna hoga ki ek connection kya hota hai. Connection koi bhi physical path hai jiske through ek request master se slave tak flow kar sake. Ek master, ek slave → exactly ek path chahiye.
PICTURE. Blue box master hai, green box slave hai, yellow line woh ek path hai jo ko tak pahunchne deta hai.

- Pehla count karta hai ki kitne blocks conversation shuru kar sakte hain.
- Doosra count karta hai ki kitne blocks jawab de sakte hain.
- Unka product count karta hai master–slave pairs ko jo kabhi bhi mile ho sakte hain — yahan sirf ek.
Woh word pair yaad rakho. Poora formula actually pairs ka count hai.
Step 2 — Doosra slave add karo: ek master, do destinations
KYA. rakho. Ek doosra slave add karo (maano UART, jabki RAM hai). Ab kisi bhi ek ko chahta ho sakta hai.
KYUN. Ek real CPU kai cheezein se baat karta hai: memory, timer, serial port. Har ek alag address par alag slave hai. Agar ko dono tak pahunchna hai, toh usse har ek ka path chahiye.
PICTURE. Do yellow lines se nikalti hain — ek ko, ek ko. Woh chota diamond jahan ek line ek slave se milti hai woh ek switch hai: ek gate jo ya toh open hai (yeh path current transaction carry kar raha hai) ya closed.

- = woh single master jo pooch raha hai.
- = doors (, ) ki number jinhe woh knock kar sakta hai.
- Product switches, kyunki har door ka apna gate chahiye.
Step 3 — Doosra master add karo: ab paths ek saath ho sakti hain
KYA. Master add karo (ek DMA engine — ek block jo CPU ke bina memory copy karta hai, dekho DMA). Usse apni do lines do, har slave ko ek.
KYUN — key idea. Ek simple bus mein ek waqt mein sirf ek master bol sakta hai; agar CPU wire use kar raha hai, DMA wait karta hai. Ek crossbar iska baar baar har master ko uski apni set of wires deta hai taaki do conversations concurrently chal sakein — jabki . Woh parallelism hi poori wajah hai ki hum extra switches kharchte hain.
PICTURE. Left mein do blue masters, right mein do green slaves. Har master ki har slave tak ek line hai. Diamonds count karo: chaar hain.

- = masters ki number (grid mein rows).
- = slaves ki number (grid mein columns).
- Multiply kyun? Har ek masters ke liye hum switches lagate hain (Step 2 ne switches per master diye). Ye baar karne se identical rows stack hoti hain → total. Multiplication bas " copies of " hai.
Step 4 — Collision problem: do masters, ek slave
KYA. Dono aur ek hi clock cycle mein chahte hain.
KYUN. mein do switches ek saath open hain → do masters ek hi waqt ke single input par data dhakelte hain. Yeh ek electrical fight hai; data garbage hota hai. Humein ek referee chahiye.
PICTURE. Dono masters pe aim kar rahe hain (red = conflict). Ek red arbiter block ke darwaze par baitha hai aur exactly ek ko andar jaane deta hai; doosre ki request rok li jaati hai.

Kitne arbiters? Collision sirf ek slave par ho sakta hai (wahan paths milti hain). Toh humein har slave ke liye ek arbiter chahiye:
Yahi reasoning address comparators ko naam deti hai: har slave ke paas addresses ki ek range hoti hai, aur kuch check karna chahiye "kya is request ka address mera hai?" — ek comparator per slave, woh bhi .
Step 5 — General grid: teeno counts padhna
KYA. General masters aur slaves ke saath redraw karo. Rows ko aur columns ko label karo.
KYUN. Steps 1–4 ne har piece ko chote examples par banaya. Ab hum bas grid padhte hain aur parent ka formula kisi bhi size ke liye lete hain.
PICTURE. Ek poora lattice. Har crossing ek switch hai (blue). Har column ke neeche ek arbiter + ek address comparator hai (red).

Step 6 — Ye kaam karna band kyun karta hai: growth curve
KYA. Switch count ko plot karo jaise aur saath badhte hain (maano , toh switches ).
KYUN. Parent kehta hai flat crossbars "~10–20 ports se aage scale nahi hote." Yahan ek picture mein reason hai: ports double karne se switches chaar guna ho jaate hain. Cost area ki tarah badhti hai, length ki tarah nahi.
PICTURE. Blue curve (crossbar) yellow line (ek single shared bus) ko rocket ki tarah paar kar jaati hai. par woh switches chip par hain — woh point jahan designers hierarchical topology ya Network-on-Chip par switch karte hain.

- square grid par count hai.
- ko se replace karne par milta hai: chaar guna switches do guna ports ke liye. Woh quadratic blow-up hi woh wall hai.
Step 7 — Degenerate cases: corners check karo
Har honest derivation ko apni extremes mein survive karna chahiye. Formula ko tiny/empty inputs do.
| Case | switches | Kya picture agree karti hai? | ||
|---|---|---|---|---|
| Koi baat nahi karta | koi bhi | Koi masters nahi → koi wires nahi. ✔ | ||
| Baat karne ko kuch nahi | koi bhi | Koi slaves nahi → koi destinations nahi. ✔ | ||
| One-to-one link | Exactly Step 1 ka single wire. ✔ | |||
| Single shared bus | but 1 path | (bus 1 wire share karta hai, nahi) | Sasta, lekin ek waqt mein sirf 1 transaction — Step 3 ka parallelism gone. |
Formula gracefully degrade karta hai: kisi bhi factor ko set karo aur correctly switches milte hain — koi special-casing required nahi.
Ek-picture summary

Ek master–slave pair (Step 1) → ek master ke liye switches ki ek row (Step 2) → aisi rows stack karo switches ke poore grid ke liye (Step 3) → har columns ke neeche ek arbiter lagao collisions settle karne ke liye (Step 4) → saare costs padho (Step 5) → aur count ko ki tarah explode hote dekho taaki pata chale kab rukna hai (Step 6).
Recall Feynman retelling — plain words mein wapas kaho
Left mein blocks imagine karo jo poochte hain aur right mein blocks jo jawab dete hain. Agar ek poochne wale ko kai jawab dene waalon tak pahunchna ho, toh usse har jawab dene waale ke liye ek chota on/off gate — ek switch — chahiye. Saare poochne waalon ko rows mein aur saare jawab dene waalon ko columns mein rakho; jahan bhi ek row ek column cross karti hai wahan ek switch daalo. Toh switches ki number bas rows times columns hai: times . Jab do poochne waale ek hi jawab dene waale ko pakad lete hain, toh collide karte hain, toh har jawab dene wala ek referee (arbiter) apne darwaze par rakhta hai — ek referee per column, yani total. Poori cheez ek rectangle hai: rows columns squares. Isliye cost rectangle ke area ki tarah badhti hai, aur isliye sab kuch double karne se switches chaar guna ho jaate hain — yahi woh waqt hai jab engineers flat grid chhod ke kuch smarter banate hain.
Recall
masters aur slaves ke full crossbar ko kitne switches chahiye? ::: — ek per (master, slave) pair. Per master nahi, per slave ek arbiter kyun? ::: Collisions wahan hoti hain jahan paths milti hain — ek slave par — toh har slave (column) ko apna referee chahiye, yani arbiters milte hain. Extra switches ek single shared bus ke upar kya khareedti hain? ::: Concurrency — ek saath chal sakti hai jab chal rahi ho. Agar tum aur dono double kar do, toh switch count kaise change hota hai? ::: Chaar guna ho jaata hai, kyunki .
Related: Interconnect Topologies · Cache Coherence Protocols · Memory-Mapped I/O · DMA · PCIe