Classic killer app hai: ek router ka forwarding table. Ek packet aata hai, tumhe instantly pata karna hota hai ki uski destination IP ke liye kaunsa output port match karta hai. Sequential search line-rate networking ke liye bahut slow hai — isliye routers CAM use karte hain.
Hum chahte hain ek signal jo kahe "stored bit D ≠ search bit S". Do bits ki inequality ka logic function XOR hai:
mismatch=D⊕S
Yeh step kyun? Kyunki ek match ke liye har bit ka agree karna zaroori hai. Ek circuit banana zyada aasan hai jo disagreement detect kare aur ek shared wire pull kare, bajaaye hazaaron agreements ko AND karne ke.
Ek row ka har cell ek single match line (ML) se wired hota hai, jo search se pehle HIGH precharge hoti hai. Har cell mein ek transistor path hota hai jo ML ko LOW discharge karta hai agar woh bit mismatch kare.
Toh n bits ke ek word ke liye, match line HIGH rehti hai tabhi jab koi bit use discharge na kare:
jahan ⊙ XNOR (equality) hai. Yeh bas De Morgan hai: "NOT (koi bhi mismatch)" = "saari bits equal hain".
Yeh step kyun? ML par wired-OR woh trick hai jo search ko parallel banati hai: row ke liye ek shared wire, aur koi bhi ek disagreeing cell akele poore match ko khatam kar sakta hai. Koi adder ya comparator tree ki zaroorat nahi — physics OR free mein karta hai.
R rows, har ek n-bit word hai, har ek ka apna match line MLr hai.
Saari match lines simultaneously search hoti hain — poori memory ke liye ek comparison cycle.
Ek priority encoder (possibly bahut saari) HIGH match lines ko ek single output address mein convert karta hai (highest-priority / lowest-index match).
Recall Feynman: ek 12-saal ke bacche ko explain karo
Ek badi classroom imagine karo. Normal memory (RAM) aisa hai jaise teacher kahe "seat number 42, khade ho jao" — tum ek seat dhundhte ho aur dekhte ho wahan kaun hai. CAM iska ulta hai: teacher chillata hai "jiska bhi naam Sam hai, haath uthao!" aur usi pal har student jiska naam Sam hai ek saath haath uthata hai. Tumne ek-ek karke check nahi kiya — sab ne ek saath khud ko check kiya. Yahi "sabne ek saath khud ko check kiya" wajah hai ki CAM itna fast kyun hai, lekin isliye bhi har seat mein ek chhota sa brain chahiye (extra transistors) aur bahut saari energy.
CAM kaunsa question answer karta hai, RAM ke mukable mein?
CAM: "is data ko kaunsa address hold karta hai?" (data→address). RAM: "is address par kya data hai?" (address→data).
CAM cell mein single-bit mismatch detect karne ke liye kaunsa logic gate use hota hai?
XOR (D⊕S); poori row NOT-OR-of-mismatches = AND of XNORs (equality) use karti hai.
Search se pehle match line HIGH kyun precharge ki jaati hai?
Taaki ek mismatching cell use jaldi discharge kar sake; matched line HIGH rehti hai. Dynamic-logic style O(1) parallel search deta hai.
CAM mein priority encoder kyun chahiye?
Multiple rows simultaneously match kar sakti hain; encoder ek deterministic output address select karta hai (jaise lowest index / longest prefix).
BCAM aur TCAM mein kya fark hai?
BCAM 0/1 store karta hai (exact match). TCAM ek X don't-care state add karta hai (0 ya 1 se match karta hai) ek mask bit use karke, longest-prefix matching enable karta hai.
BCAM vs TCAM cell mein roughly kitne transistors hote hain?