यह मरने पर शारीरिक आकार के साथ करना है। कैश में प्रत्येक बिट एक या एक से अधिक ट्रांजिस्टर के पास होता है, इसलिए यदि आप बहुत अधिक कैश चाहते हैं तो आपको बहुत अधिक ट्रांजिस्टर की आवश्यकता होती है। कैश की गति अनिवार्य रूप से उस इकाई तक स्थानीयता के आनुपातिक रूप से आनुपातिक है जो इसे एक्सेस करना चाहती है - इस तरह के छोटे उपकरणों में, संचार धीमा हो जाता है जब आपका सिग्नल पथ लंबा होता है। यह आंशिक रूप से सब्सट्रेट प्रतिबाधा के साथ करना है, लेकिन इस स्तर पर कुछ और जटिल भौतिकी घटनाएं शामिल हैं।
यदि हम एक बड़े विलक्षण कैश को शामिल करना चाहते हैं, तो उसे उसी समय MMU, ALU इत्यादि से बहुत कम दूरी पर होना चाहिए। इससे प्रोसेसर का भौतिक डिजाइन काफी कठिन हो जाता है, क्योंकि एक बड़ा कैश बहुत अधिक जगह लेता है। इन सबयूनिट्स को कैश को "स्थानीय" बनाने के लिए, आपको सबयूनिट्स के इलाके को एक-दूसरे के लिए बलिदान करना होगा।
एक छोटे, तेज स्थानीय कैश (L1) का उपयोग करके हम स्थानीयता और गति को अधिकतम कर सकते हैं, लेकिन हम आकार खो देते हैं। इसलिए हम थोड़ी सी स्थानीयता (और इसलिए गति) बलिदान के साथ, बड़ी मात्रा में डेटा रखने के लिए एक द्वितीयक कैश (L2) का उपयोग करते हैं। यह हमें दोनों दुनियाओं में सर्वश्रेष्ठ देता है - हम बहुत सारे डेटा स्टोर कर सकते हैं, लेकिन अभी भी प्रोसेसर का उपयोग करने के लिए प्रोसेसर सबयूनिट के लिए बहुत तेज़ स्थानीय कैश है।
मल्टीकोर प्रोसेसर में, L3 कैश आमतौर पर कोर के बीच साझा किया जाता है। इस तरह के डिजाइन में, एल 1 और एल 2 कैश प्रत्येक कोर की मृत्यु में निर्मित होते हैं, और एल 3 कैश कोर के बीच बैठता है। यह प्रत्येक कोर को उचित स्थानीयता देता है, लेकिन बहुत बड़े कैश के लिए भी अनुमति देता है।
आधुनिक प्रोसेसर में कैश की कार्यक्षमता बहुत जटिल है, इसलिए मैं एक उचित विवरण का भी प्रयास नहीं करूंगा, लेकिन एक बहुत ही सरल प्रक्रिया यह है कि लक्ष्य पते को L1 में देखा जाता है, फिर L2, फिर L3, का सहारा लेने से पहले सिस्टम मेमोरी लाने के लिए। एक बार जब यह हो जाता है, तो इसे कैश के माध्यम से वापस खींच लिया जाता है।