معرفی انواع حافظه نهان و الگوریتم های آن

سه شنبه 11 اردیبهشت 1397

حافظه نهان بخش مهمی است که در سیستم های کامپیوتری مورد استفاده قرار می گیرد. استفاده از حافظه نهان سبب می شود تا از سرریز شدن بافر در امان باشیم.

 معرفی انواع حافظه نهان و الگوریتم های آن

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

حافظه نهان چیست؟

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

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

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

الگوریتم های حافظه نهان

به طور کلی یک سری الگوریتم ها وجود دارد که برای نحوه دسترسی به حافظه نهان ارائه شده اند.یکی از الگوریتم های مهم در این لاین LFU نام دارد. این الگوریتم معمولا بررسی می کند که یک ورودی چقدر در دسترس است. در خصوص شمارنده های مختلف نیز از این الگوریتم استفاده می شود. این الگوریتم سعی می کند ورودی که کمترین میزان شمارنده را دارد زودتر حذف کند.

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

MRU سعی به حذف آیتم هایی دارد که اخیرا بیش تر مورد استفاده قرار گرفته اند، این الگوریتم در فضایی استفاده می شود که هدف دسترسی به آیتم های قدیمی است.

متوجه شدیم که هر کدام از الگوریتم های حافظه پنهان در جایگاه خود ارزش پیدا می کنند به این ترتیب می توان اینطور در نظر گرفت که این الگوریتم ها به نوعی می توانند ساده و کاربردی باشند.

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

می دانیم که حافظه نهان خود به چندین دسته تقسیم می شود که هر کدام وظایف مخصوص به خود را دارند.

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

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

حافظه نهان write-back در این روش ابتدا اطلاعات در حافظه پنهان نوشته می شود، اطلاعات بر روی حافظه ذخیره سازی کپی می شود. امکان از دست رفتن اطلاعات در این روش بسیار است.

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

حافظه پنهان سرور، یک سرور شبکه اجتماعی را در نظر بگیرید، در چنین شرایطی محتویات اینترنت به صورت محلی ذخیره می شود.حافظه پنهان دیسک داده هایی که اخیرا خوانده شده است و یا داده هایی که در ناحیه های مجاور هم قرار دارد را به طور دقیق نگه داری می کند. در این روش یک سری عملیات به صورت اتوماتیک اتفاق می افتد.

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

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

حافظه پنهان بخش مشخصی از پردازنده مجتمع است. به طور کلی این حافظه یا بر روی CPU قرار دارد و یا در تراشه ای روی برد سیستم به طور خاصی تعبیه شده است. اگر بخواهید حافظه پنهان را افزایش دهید تنها راهی که پیش روی شماست نصب یک برد نسل جدیدتر است و همینطور تعبیه پردازنده جدیدتری که سازگار با آن است. در نظر داشته باشید که بردهای قدیمی تر سیستم ها دارای یک Slot خالی هستند. در نظر داشته باشید که چنین Slot هایی اغلب برای افزایش حافظه پنهان استفاده می شوند اما بر طبق بررسی های انجام شده متوجه شدیم که بیش تر بردهای سیستم های جدید از چنین آپشنی برخوردار نیستند و یا عملکرد بسیار ضعیفی ارائه می کنند.

ایمان مدائنی

نویسنده 1299 مقاله در برنامه نویسان

کاربرانی که از نویسنده این مقاله تشکر کرده اند

در صورتی که در رابطه با این مقاله سوالی دارید، در تاپیک های انجمن مطرح کنید