حافظه‌ی نهان، مکانی است که در یک محیط محاسباتی، داده‌ها را بصورت موقتی ذخیره می‌کند.

در دستگاه‌های کامپیوتری، برای کوتاه کردن زمان دسترسی به داده‌ها، کاهش زمان تأخیر و بهبود عملیات ورودی/خروجی (I/O)، اغلب داده‌های فعال در حافظه‌ی نهان ذخیره می‌شوند.

از آن‌جایی‌که تقریبا تمام بارِ کاریِ برنامه‌ها، وابسته به عملیاتِ I/O است، عمل ذخیره‌سازی در حافظه‌ی نهان، برای بهبود عملکرد برنامه به کار می‌رود، برای مثال مرورگرهایی مثل Internet Explorer، Firefox، Safari و Chrome، از حافظه‌ی نهانِ مرورگر برای بهبود عملکردِ صفحه‌های وبی که مکرراً از آن‌ها بازدید می‌شود، استفاده می‌کنند.

وقتی از یک صفحه‌ی وب بازدید می‌کنید، فایل‌هایی که مرورگر درخواست می‌کند، روی حافظه ذخیره می‌شود. اگر روی دکمه‌یback  کلیک کنید و به همان صفحه برگردید، مرورگر می‌تواند بیش‌تر فایل‌های مورد نیاز را از حافظه‌ی نهان بازیابی کند و نیازی به فراخوانی آن‌ها از اینترنت نیست.

این روش، خواندن از حافظه‌ی نهان (read cache)، نامیده می‌شود. این‌که مرورگر اطلاعات را از حافظه‌ی نهانش بخواند بسیار سریع‌تر از زمانی‌ است که دوباره فایل‌ها را از اینترنت بخواند.

الگوریتم‌های حافظه‌ی نهان (Cache)

الگوریتم‌های حافظه‌ی نهان، دستورالعل‌هایی برای نحوه‌ی دسترسی به حافظه‌ی نهان ارائه می‌دهند.

برخی از مثال‌های الگوریتم‌های حافظه‌ی نهان شامل:

LFU یا Least Frequently Used: برای پیگیری این‌که معمولاً چقدر یک ورودی مورد دسترسی قرار می‌گیرد، از یک شمارنده استفاده می‌کند؛ ورودی که کمترین میزان شمارنده را داشته باشد، زودتر حذف می‌شود.

LRU یا Least Recently Used: آیتم‌هایی که اخیراً استفاده شده‌اند را بالای حافظه‌ی نهان نگه می‌دارد؛ حافظه‌ی نهان پر می‌شود، آیتم‌هایی که کمتر مورد دسترسی قرار گرفته باشند، زودتر حذف می‌شوند.

MRU یا Most Recently Used: آیتم‌هایی که اخیراً بیش‌تر استفاده شده‌اند را زودتر حذف می‌کند؛ این روش برای موقعیت‌هایی که احتمال دسترسی به آیتم‌هایی قدیمی‌ بیش‌تر باشد، مناسب است.

انواع حافظه‌های نهان

حافظه‌های نهانِ Write-around: داده‌ها در ابتدا در حافظه ذخیره سازی معمولی قرار می‌گیرند و پس از ذخیره شدن در صورت امکان روی حافظه نهان ذخیره می‌شوند.

این امر، از سرریز شدن حافظه‌ی نهان، هنگام انجام نوشتن I/O در مقادیر خیلی بزرگ، جلوگیری می‌کند. عیب این نوع از حافظه‌ی نهان این است که داده‌ها تا زمانی‌که از حافظه‌ی ذخیره سازی خوانده‌ نشوند، در حافظه‌ی نهان ذخیره نخواهند شد. به این ترتیب، از آن‌جایی که داده هنوز در حافظه‌ی نهان ذخیره نشده، عملیات اولیه‌ی خواندن، نسبتاً کند انجام می‌شود. 

حافظه‌ی نهانِ Write-through: داده را روی هر دو حافظه‌ی نهان و ذخیره‌سازی می‌نویسد. مزیت این روش این است که داده‌هایی که جدید نوشته می‌شوند، همیشه در حافظه‌ی نهان ذخیره می‌شوند، بنابراین این امکان به داده‌ها داده می‌شود که به سرعت خوانده شوند. اشکال این روش این است که تا زمانی‌که داده روی هر دو حافظه‌ی نهان و حافظه‌ی اولیه نوشته نشده باشد، عملیات نوشتن تکمیل نمی‌شود. این امر باعث می‌شود که در عملیاتِ نوشتنِ حافظه‌ی نهانِ write-through، تأخیر بوجود بیاید.

حافظه‌ی نهانِ Write-back: ابتدا اطلاعات در حافظه نهان نوشته می‌شوند، و هنگام نوشته شدن در حافظه نهان عملیات نوشتن تمام شده در نظر گرفته می‌شود.

داده نیز پس از نوشته شدن در حافظه‌ی نهان، روی حافظه‌ی ذخیره‌سازی، کپی می‌شود. در این روش، برای هر دو عملیات خواندن و نوشتن، تأخیر کمی وجود دارد. عیب این روش این است که امکان دارد تا زمانی‌که داده روی حافظه‌ی اصلی ثبت نشده اطلاعات از دست بروند.

استفاده‌های رایج حافظه‌ی نهان

Cache سرور: یک سرور شبکه‌ی اختصاصی، یا سرویسی است که بعنوان سرور عمل می‌کند و صفحه‌های وب یا دیگر محتویاتِ اینترنت را بصورت محلی ذخیره می‌کند و گاهی proxy cache هم نامیده می‌شود.

Disk Cache: داده‌هایی که اخیراً خوانده‌ شده‌اند و احتمالاً داده‌هایی که در ناحیه‌‌های مجاور قرار دارند و ممکن است به‌زودی مورد دسترسی قرار بگیرند، را نگه می‌دارد. برخی از disk cacheها، برای ذخیره‌سازی داده در حافظه‌ی نهان، بر اساس این‌که اغلب چقدر خوانده‌ می‌شوند، طراحی شده‌‌اند. بلاک‌های ذخیره‌سازی که مکرراً خوانده‌ می‌شوند، بعنوان هات بلاک‌ها (hot blocks)، در نظر گرفته می‌شوند و بصورت اتوماتیک به حافظه‌ی نهان منتقل می‌شوند.

Cache memory: حافظه‌ی با دسترسی تصادفی (RAM)، که سرعت دسترسی ریزپردازنده‌ی کامپیوتر به این نوع حافظه، نسبت به حافظهِ RAM معمولی، بیش‌تر است.

Cache memory، معمولاً مستقیماً نزدیک به پردازنده (CPU) است و دستورالعمل‌هایی که پردازش‌های در حال اجرا، مکرراً از آن‌ها استفاده می‌کنند را در حافظه‌ی نهان ذخیره می‌کند.

حافظه Cache memory از حافظه Ram و حافظه Ram از دیسک سخت سریع تر است.

Flash Cache: داده‌ها را بصورت موقت روی تراشه‌ی حافظه‌ی فلشِ NAND ذخیره می‌کند (اغلب به شکل درایو ذخیره‌سازی حالت جامد یاSSD  هستند) و از HDD‌ها سرعت بیشتری دارند.

نحوه‌ی افزایش حافظه‌ی نهان

حافظه‌ی نهان، بخشی از پردازنده‌ی مجتمع است و یا روی CPU قرار دارد یا در تراشه‌ای روی بردِ سیستم تعبیه می‌شود. معمولاً، تنها راه افزایش حافظه‌ی نهان، نصب یک برد نسل جدیدتر و یک پردازنده‌ی جدیدترِ سازگار با آن است. برخی از بردهای قدیمی‌تر سیستم‌ها، دارای یک اسلات خالی هستند که می‌تواند برای افزایش ظرفیت حافظه‌ی نهان استفاده شود ولی بیش‌تر بردهای سیستم‌های جدید، چینین آپشنی ندارند.

ویدیو آشنایی با کش ها: