شاید نامهایی مثل L1 یا L2 را هم شنیده باشید. یا شاید دوستی به شما گفته باشد که «Celeron نخر!Celeron روی خودش Cache نداره!»
با تمام این صحبتها و پرس و جوها به نظر میرسد که Cache در کار کامپیوتر اهمیت زیادی دارد. با یک مثال ساده شروع میکنیم و اهمیت کار Cache را بررسی میکنیم.
یک کتابخانه را فرض کنید که برای دریافت کتاب باید از مسئول کتابخانه بخواهید تا آن کتاب را برای شما از مخزن بیاورد. (کتابخانههای مهم به این صورت کار میکنند). اولین فرد وارد کتابخانه میشود و کتاب «موبی دیک» را از مسئول کتابخانه میخواهد. مسئول به مخزن میرود و کتاب را برای او میآورد. مراجعه کننده کتاب را باز میگرداند. مسئول کتاب را به مخزن باز میگرداند و دوباره باز میگردد و منتظر نفر بعدی میشود.
اگر مشتری دوم هم به دنبال کتاب «موبی دیک» باشد، مسئول باید دوباره به مخزن برود. حال اگر در کنار پیشخوان یک قفسه با ظرفیت 10 کتاب قرار دهیم مسئول کتابخانه مجبور نیست برای پیدا کردن کتابهایی که قبلاً از مخزن آورده شده به مخزن بازگردد. Cache هم به این صورت کار میکند. Cache در لغت به معنی ذخیره و مخزن است.
اگر از اساس کار حافظه کامپیوتر اطلاع داشته باشید، در مییابید که این کار میتواند سرعت کامپیوتر را افزایش دهد. به این ترتیب که با ذخیره کردن اطلاعاتی که بیشتر مورد استفاده قرار میگیرد میتوان زمان مورد نیاز برای جستجو در تمام اطلاعات حافظه را از بین برد.
حال فرض کنید که مسئول کتابخانه از یک الگوریتم استفاده میکند. به این ترتیب که وقتی کسی برای دریافت کتاب مراجعه میکند، او باید ابتدا درون قفسه را نگاه کند و اگر کتاب مورد نظر آنجا نباشد به مخزن مراجعه کند. زمانی که مسئول صرف میکند تا داخل قفسه را بگردد و سپس به مخزن برود، ممکن است نظرتان را برای قرار دادن آن قفسه عوض کند و از خیر خریدن قفسه بگذرید.
مهمترین قسمت ساختن Cache همین است. این که چگونه میتوان با وجود Cache و با وجود این زمان اضافی، به بهترین نحو و به صورت بهینه از این سیستم استفاده کرد.
در کامپیوتر زمان در مقیاس نانو ثانیه و شاید کمتر از آن سنجیده میشود. پردازشگر فقط 60 نانو ثانیه زمان میخواهد که به اطلاعات داخل RAM دسترسی پیدا کند. ولی با وجود Cache این زمان تنها 2 نانوثانیه طول میکشد. به همین دلیل 60 نانو ثانیه خیلی طولانی به نظر میرسد.
اگر یک حافظه کوچک بین RAM و پردازشگر قراربگیرد و کار Caching را انجام دهد و دسترسی به اطلاعات آن با سرعت انجام شود، این کار به نظر خوب میرسد.
اگر فقط 30نانوثانیه طول بکشد، یعنی نصف زمان لازم برای دسترسی مستقیم پردازشگر به RAM. این همان L2 یا Level 2 Cache است.
اگر این حافظه را داخل پردازشگر قرار دهیم زمان دسترسی به این حافظه مساوی زمانی است که پردازشگر صرف میکند تا اطلاعات را پردازش کند. این همان L1 یا Level 1 Cache است. این نوع Cache در یک پردازشگر پنتیوم 223 مگاهرتزی با 3.5برابر L2 کار میکند که آن هم 2 برابر سریعتر از دسترسی بدون Cache به RAM است.
بعضی از پردازشگرها هر دو Cache را در داخل خود دارد. این Cache که بین پردازشگر و RAM قرار داده میشود و از اجزای Motherboard است، L3 نامیده میشود.
زمان اتصال به اینترنت، کمترین سرعت در سرعتهای موجود در کار با کامپیوتر است. هربار که از اینترنت استفاده میکنید، مرورگر اطلاعات صفحه وب را در فایلی ذخیره میکند و در صورتی که دوباره به همان صفحه بروید (Back) به جای اتصال به سرور مستقیماً به فایل ذخیره شده میرود و زمان کمتری صرف میشود.
Cache تنها در پردازشگر وجود ندارد و میتوان آن را در داخل اجزای دیگر قرار داد. برای مثال هارد دیسک شما دارای Cache بسیار سریع است. هر بار که اطلاعات خوانده میشود در Cache هارد دیسک نیز ذخیره میشود. CD Drive دستگاه شما نیز دارای Cache است.
سالهاست که فلاپی دیسک دیگر کاربرد ندارد. ولی اگر هنوز هم از فلاپی دیسکهایی قدیمی خود دارید، میتوانید با انجام یک عملیات ساده کار Cache را دقیقاً در فلاپی ببینید.
یک فایل متن به فرض مثال به بزرگی 300کیلوبایت را روی فلاپی بریزید. یک بار کامپیوترتان را خاموش و روشن کنید. فایل را از روی فلاپی اجرا کنید. چراغ فلاپی درایو روشن میشود و شروع به خواندن فایل میکند. یک بار دیگر فایل را از روی فلاپی باز کنید. مشاهده خواهید کرد که دیگر فلاپی درایو کار نمیکند و فایل به سرعت اجرا میشود. این همان ذخیره اطلاعات روی Cache است.
سوال معمولی که در ذهن همه میتواند باشد این است که چرا تمام حافظهها را آنقدر پر سرعت نمیسازند که دیگر نیازی Cache نباشد. در جواب باید گفت که این کار کاملاً عملی است ولی قیمت کامپیوتر به شدت زیاد میشود. هدف اصلی استفاده از تمام این قطعات این است که کاری را که میتوان با یک قطعه گران انجام داد با تعداد بیشتری قطعه ارزان انجام داد.
در معماری کامپیوتر هدف این است که پردازشگر با تمام سرعت خود کار کند. برای مثال یک پردازشگر 500 مگاهرتزی، 500 میلیون بار در یک ثانیه یک پردازش را انجام میدهد. که به عبارتی یک پردازش را در 2 نانو ثانیه انجام میدهد. بدون Cache هر بار دسترسی به RAM 60 نانوثانیه طول میکشد. این امر به این معنی است که برای هر بار دسترسی به RAM ،30 نوبت پردازش به تأخیر میافتد.
این که چطور اطلاعات هر برنامه Cache (ذخیره) میشود، به قسمتی از علوم کامپیوتر برمیگردد که Locality Of Reference نام دارد. این روش یا بهتر بگوییم، تئوری، بیان میکند که فقط بخش بسیار کوچکی از هر برنامه؛ عامل اصلی اجرا شدن تمام برنامه است. به همین دلیل فقط همین قسمت کوچک است که در Cache ذخیره میشود. توضیح این تئوری و اینکه دقیقاً چطور از این تئوری در Caching استفاده میشود از بحث ما خارج است.
حال بهتر در مییابید که چرا استفاده از حافظههای سریع در کامپیوتر به صرفه نیست و با استفاده از همین سیستمهای کوچک و ارزان میتوان به سرعت مطلوب نزدیک شد.