Foundationপ্রথম নীতি থেকে
LEVEL 3 · CPU Architecture

Cache Line

ক্যাশ লাইন

Cache যে ন্যূনতম, স্থির আকারের ব্লক নিয়ে কাজ করে — সাধারণত 64 বাইট। এক বাইট চাইলেও পুরো line আনা হয়, spatial locality exploit করতে।

[[cache]] কখনো এক বাইট বা এক word আনে না — সবসময় একটা পূর্ণ line, ব্যবহার হোক বা না হোক বাকি বাইট। প্রায় সব আধুনিক x86-64/ARM64 CPU-তে 64 বাইট (sysconf বা /sys/.../coherency_line_size দিয়ে যাচাইযোগ্য)।

কেন পুরো line, এক বাইট না: memory row/line access করার একটা “fixed cost” আছে (address decode, sense amplify — [[dram]]/[[sram]] লেসনের row/column addressing দ্রষ্টব্য); একসাথে বেশি ডেটা আনা প্রায় বিনামূল্যে, আর [[locality-of-reference]]-এর spatial অংশ নিশ্চিত করে বাড়তি বাইট শীঘ্রই কাজে লাগবে।

Address বিভাজনে ভূমিকা: line আকারই offset বিট সংখ্যা নির্ধারণ করে — 64-বাইট line মানে log2(64) = 6 বিট offset, address-এর সবচেয়ে নিচের বিটগুলো (কারণ পাশাপাশি ঠিকানা শুধু নিচের বিটে আলাদা হয়)।

Trade-off: বড় line spatial locality বেশি কাজে লাগায় কিন্তু miss-এ বেশি bandwidth খরচ করে আর multi-core-এ false sharing-এর ঝুঁকি বাড়ায় (দুই core ভিন্ন variable লিখলেও, একই line-এ থাকলে line বারবার ping-pong করে) — এটা advanced-architecture module-এ cache coherence প্রসঙ্গে ফিরে আসে।