حافظه کش (cache) چیست و چگونه کار میکند؟ کش کردن به چه معناست؟
حافظه ها انواع مختلفی دارند و هر کدام کاربرد خاص خود را دارند. یکی از انواع این حافظه ها، حافظه کش یا حافظه پنهان می باشد. در این مطلب قصد داریم تا به طور کامل در خصوص این نوع حافظه، نحوه کار آن و مزایا و معایب آن مطالبی را بیان کنیم. اگر شما هم علاقمند به این موضوع هستید تا انتهای این مطلب همراه ما باشید.
فهرست مطالب
- هارد یا حافظه چیست؟
- انواع حافظه کامپیوتر کدامند؟
- حافظه کش یا پنهان (cache) چیست؟
- تاریخچه حافظه کش
- انواع حافظه کش (cache) کدامند؟
- حافظه پنهان به چه منظور استفاده می شود؟
- حافظه پنهان در چه دستگاه هایی وجود دارد؟
- حافظه کش چه مزایایی دارد؟
- حافظه پنهان یا کش چه معایبی دارد؟
- الگوریتم های ذخیره سازی حافظه پنهان کدامند؟
- چگونه می توان حافظه کش را پاک کرد؟
- جمع بندی
هارد یا حافظه چیست؟
هارد کامپیوتر یک دستگاه ذخیرهسازی است که انواع فایل را به صورت دائمی ذخیره میکند. این فایلها همه دادهها از جمله سیستم عامل، فایلهای مرتبط با برنامهها و فایلهای شخصی (شامل فیلم، عکس، موسیقی و …) را شامل میشوند.
هارد یک دستگاه ذخیرهسازی اطلاعات از نوع غیرفرار (Non-Volatile) است؛ به معنای این که در صورت خاموش شدن سیستم، دادههای ذخیرهشده را حفظ میکند. این ویژگی، برخلاف حافظه فرار (Volatile Memory) یا حافظه اصلی سیستم است که آن را RAM مینامیم؛ زیرا در RAM، به محض خاموش شدن سیستم یا قطع برق، دادههای موجود در آن حذف میشوند.
هارد دیسک یکی از قطعات اصلی و معمولا بزرگترین سخت افزار ذخیره سازی اطلاعات هر کامپیوتری میباشد که از یک یا چند صفحه شبیه سی دی که سطح آنها با مواد مغناطیسی مثل کبالت پوشش داده شده و به آنها پلاتر میگویند تشکیل شده است.
همچنین، حافظه SSD و NVMe نیز از انواع دیگری از حافظه کامپیوتر است که سرعت آن در مقایسه با هارد دیسک بسیار بالا تر است. امروزه بسیاری از سیستم ها برای داشتن سرعت بیشتر مجهز به حافظه SSD هستند. از حافظه NVMe نیز در بسیاری از سرورها که نیاز به سرعت بالا دارند، استفاده می شود.
انواع حافظه کامپیوتر کدامند؟
حافظه کامپیوتر به چندین نوع تقسیم میشود که هر کدام ویژگیها و کاربردهای خاص خود را دارند:
- حافظه دسترسی تصادفی (RAM): این نوع حافظه برای ذخیره اطلاعات موقتی استفاده میشود که پردازنده در حال پردازش آنها است. این حافظه شامل دو نوع است:
- حافظه دسترسی تصادفی پویا (Dynamic RAM)
- حافظه دسترسی تصادفی ایستا (Static RAM)
- حافظه فقط خواندنی (ROM): این حافظه برای ذخیره اطلاعات ثابت و غیرقابل تغییر استفاده میشود.
- حافظه کش یا پنهان (Cache): این حافظه برای ذخیره اطلاعاتی استفاده میشود که به صورت مکرر استفاده میشوند.
- حافظه فلش (Flash Memory): این نوع حافظه برای ذخیره اطلاعات در دستگاههای قابل حمل مانند گوشیهای همراه و دوربینهای دیجیتال استفاده میشود.
- حافظه مجازی (Virtual Memory): این حافظه برای افزایش فضای حافظه فیزیکی سیستم استفاده میشود.
- حافظه ویدئویی (Video Memory): این حافظه برای ذخیره اطلاعات مربوط به تصاویر و ویدئوها استفاده میشود.
- بایوس (BIOS): این حافظه برای ذخیره تنظیمات پایهای سیستم استفاده میشود.
همچنین، حافظه کامپیوتر به دو دسته اصلی و ثانویه تقسیم میشود. حافظه اصلی شامل RAM و ROM است و نزدیک پردازنده اصلی قرار دارد. اما حافظه ثانویه از لحاظ فیزیکی یک حافظهی جداگانه است که انواع مختلفی مانند هارد دیسک یا SSD دارد.
حافظه کش یا پنهان (cache) چیست؟
حافظه پنهان یا کش (Cache) نوعی از حافظه SRAM یا DRAM است که برای جلوگیری از تاخیر زمان پردازش بین پردازنده و حافظه رم کامپیوتر استفاده میشود. اما حافظه کش معمولا ظرفیت کمتر و سرعت بیشتری نسبت به دیگر حافظههای مورداستفاده در کامپیوتر دارد.
حافظه کش به طور موقت محتوای مورد نیاز کاربران را برای جستجو او در سراسر وب ذخیره میکند، تا هر زمان که کاربر به آنها نیاز داشت بتواند خیلی سریع در اختیار او قرار دهد.
حافظه کش انواع مختلف و ساختاری سلسلهمراتبی دارد. در حال حاضر، کش در انواع L1 و L2 و L3 وجود دارد. L به معنی لایه (Level) و عدد جلوی آن مشخصکنندۀ نوع کش است.
تاریخچه حافظه کش
حافظه پنهان یا Cache، بخشی از حافظه سریع است که چند دستور بعدی را که باید توسط پردازنده پردازش شوند را به صورت موقت در خود جای میدهد، تا رایانه بتواند به سرعت به آن ها دسترسی داشته باشد. این مفهوم از کلمه فرانسوی Cacher گرفته شده است که به معنای نهان کردن و مخفی کردن است.
حافظه پنهان بر اساس دو اصل کلیدی عمل میکند: همجواری زمانی (Temporal Locality) و همجواری مکانی (Spatial Locality). همجواری زمانی به این معنا است که اگر CPU به مکانی در حافظه اصلی نیاز داشته باشد، احتمالا در آینده نزدیک مجددا به آن محل دسترسی خواهد داشت. همجواری مکانی به این معنا است که اگر CPU به مکانی در حافظه اصلی نیاز داشته باشد، احتمالا در آینده نزدیک به مکانهای مجاور آن نیز نیاز خواهد داشت.
با افزایش سرعت درخواست ها، CPU زمان بیشتری را در حال انتظار پاسخ، از حافظه اصلی میگذراند، بنابراین حجم حافظه پنهان تأثیر زیادی در بهبود کارایی پردازنده مرکزی دارد. اما با افزایش حجم حافظه پنهان، پیچیدگی ساختار آن نیز بیشتر میشود و هزینه آن نیز افزایش مییابد.
انواع حافظه کش (cache) کدامند؟
حافظه پنهان یا Cache در سیستمهای کامپیوتری به سه سطح اصلی تقسیم میشود: L1، L2 و L3.
- کش لایه اول CPU یا L1 Cache: این نوع کش بیشترین سرعت و کمترین ظرفیت را دارد. این نوع کش عموما درون پردازنده قرار دارد و برای هر هسته بهصورت جداگانه طراحی شده است.
- کش لایه دوم CPU یا L2 Cache: این نوع کش ظرفیتی بیشتر از کش لایه اول دارد؛ ولی سرعتش پایینتر است. این نوع کش نیز درون پردازنده قرار میگیرد و برای هر هسته بهصورت جداگانه است.
- کش لایه سوم CPU یا L3 Cache: این نوع کش ظرفیت بیشتر و سرعت کمتری نسبت به لایه دوم کش دارد. در بیشتر پردازنده های امروزی این نوع کش بهصورت یک لایه اشتراکی برای تمام هسته ها استفاده میشود.
این طبقهبندی بر اساس سرعت و ظرفیت کش است. حافظه پنهان L1 سرعت بالاتری دارد اما ظرفیت کمتری نسبت به سایر حافظههای پنهان دارد. از طرف دیگر، حافظه پنهان L3 ظرفیت بیشتری دارد اما سرعت کمتری نسبت به سایر حافظههای پنهان دارد. به عبارت دیگر، هر چه به سطح L1 نزدیکتر باشیم، سرعت بیشتر و ظرفیت کمتر خواهیم داشت و هر چه به سطح L3 نزدیکتر باشیم، سرعت کمتر و ظرفیت بیشتر خواهیم داشت.
حافظه پنهان به چه منظور استفاده می شود؟
حافظه پنهان یا Cache به عنوان یک مکان ذخیرهسازی موقت عمل میکند که امکان استفاده مجدد از دادههای پردازش شده قبلی (که به تازگی مورد استفاده قرار گرفته اند) را فراهم میکند. این حافظه، کپی از دادههایی که به طور مکرر مورد استفاده قرار میگیرند را در خود ذخیره میکند.
وقتی پردازنده از حافظه درخواست خواندن دارد، ابتدا محتویات حافظه کش سیستم بررسی میشود. اگر داده مدنظر در حافظه کش سیستم وجود داشته باشد، دیگر نیازی به دسترسی به حافظه اصلی وجود ندارد و به این ترتیب، سرعت فرآیند بیشتر خواهد شد.
همانطور که گفته شد حافظه پنهان یا Cache در کامپیوترها برای سرعت بخشیدن به دسترسی به دادهها استفاده میشود. وقتی پردازنده نیاز به دادهای دارد، ابتدا در حافظه پنهان جستجو میکند. اگر داده مورد نظر در حافظه پنهان باشد (که به آن hit میگویند)، پردازنده به سرعت به داده دسترسی پیدا میکند. اما اگر داده مورد نظر در حافظه پنهان نباشد (که به آن miss میگویند)، پردازنده باید به داده در حافظه اصلی دسترسی پیدا کند که فرآیند طولانیتری است.
به عنوان مثال، در مرورگرهای وب، حافظه پنهان میتواند صفحات وبی را که قبلا باز شدهاند، ذخیره کند، بنابراین اگر کاربر بخواهد دوباره به آن صفحه مراجعه کند، بارگذاری صفحه سریعتر خواهد بود.
به طور کلی، حافظه کش به عنوان یک لایه ذخیرهسازی داده با سرعت بالا عمل میکند، که زیرمجموعهای از دادهها را ذخیره میکند و معمولا ماهیتی گذرا دارد؛ یعنی ذخیرهسازی این دادهها موقتی بوده و بعد از گذشت مدت زمان معینی میتوان بهصورت خودکار یا دستی آنها را از حافظه کش پاک کرد.
حافظه پنهان در چه دستگاه هایی وجود دارد؟
حافظه پنهان یا Cache در دستگاههای مختلفی وجود دارد:
- پردازندههای کامپیوتر (CPU): حافظه پنهان در پردازندههای کامپیوتر وجود دارد و به عنوان یک حافظه سریع برای ذخیره دادههایی که به طور مکرر پردازش میشوند یا در حال پردازش هستند، عمل میکند.
- مرورگرهای وب: مرورگرهای وب نیز حافظه پنهان خود را دارند. این حافظه پنهان باعث میشود که بارگذاری صفحات وبی که قبلا باز شدهاند، سریعتر انجام شود.
- گوشیهای هوشمند: گوشیهای هوشمند نیز حافظه پنهان دارند. این حافظه پنهان میتواند برای ذخیره اطلاعات مربوط به برنامهها و بازیها استفاده شود.
- سرورهای DNS: حافظه پنهان در سرورهای DNS نیز کاربرد دارد.
- شبکه توزیع محتوا (CDN): حافظه پنهان در شبکه تحویل محتوا (CDN) نیز کاربرد دارد.
به طور کلی، حافظه پنهان در هر دستگاهی که نیاز به سرعت بالا در دسترسی به دادهها دارد، میتواند مورد استفاده قرار گیرد.
حافظه کش چه مزایایی دارد؟
حافظه پنهان یا Cache مزایای قابل توجهی را برای مدیران و توسعهدهندگان برنامههای کاربردی موبایل، وبسایتها، نرمافزارها و غیره به همراه دارد. برخی از این مزایا عبارتند از:
- بهبود عملکرد برنامههای کاربردی: سرعت خواندن و نوشتن در حافظه به مراتب سریعتر از دیسک (مغناطیسی یا SSD) است؛ بدین ترتیب، سرعت خواندن دادهها از حافظه کش نیز بسیار سریعتر (زیر میلی ثانیه) انجام میشود، که در نتیجه عملکرد کلی برنامههای کاربردی (شامل وبسایت، نرمافزار، اپلیکیشن موبایل و…) را بهبود میبخشد.
- کاهش هزینه پایگاه داده: Cache میتواند جایگزین تعداد زیادی از نمونههای پایگاه داده شود و به تنهایی صدها هزار IOPS (عملیات ورودی/خروجی در هر ثانیه) را انجام دهد، که در نهایت منجر به کاهش هزینههای پایگاه داده میشود.
- سرعت بالا در دسترسی به دادهها: حافظه پنهان به طور موقت محتوای مورد نیاز کاربران را برای جستجو او در سراسر وب ذخیره میکند، تا هر زمان که کاربر به آنها نیاز داشت بتواند خیلی سریع در اختیار او قرار دهد.
- مرورگرهای وب: هر مرورگر وب، از جمله مایکروسافت، کروم، فایرفاکس یا سافاری، حافظه پنهان خودش را دارد. این حافظه پنهان باعث میشود که بارگذاری صفحات وبی که قبلا باز شدهاند، سریعتر انجام شود.
- سرورهای DNS (Domain Name Server): حافظه پنهان در سرورهای DNS نیز استفاده میشود.
- شبکه توزیع محتوا (CDN): حافظه پنهان در شبکه توزیع محتوا (CDN) نیز کاربرد دارد.
به طور کلی، استفاده از حافظه پنهان میتواند به بهبود عملکرد سیستم کمک شایانی کند.
حافظه پنهان یا کش چه معایبی دارد؟
حافظه پنهان یا Cache، با وجود مزایای فراوانی که دارد، ممکن است معایبی نیز داشته باشد:
- اشغال فضای دستگاه: برخی از برنامهها ممکن است حافظه پنهان را اشغال کنند و فضای دستگاه شما را محدود کنند. با پاک کردن حافظه پنهان، میتوانید مجددا مقدار زیادی از حافظه را بازیابی کنید.
- خرابی فایلها: اگر در حافظه پنهان فایل خرابی وجود داشته باشد، میتواند در عملکرد فضای کش اختلال ایجاد کند.
- پیچیدگی و هزینه بالا: ساختار حافظه پنهان بسیار پیچیده است و هرچه حجم حافظه پنهان افزایش یابد، این پیچیدگی نیز بیشتر میشود. به همین دلیل، حافظه پنهان بسیار گرانتر است و افزایش قیمت پردازنده با افزایش حجم حافظه پنهان بسیار زیاد است.
- کند شدن سرعت هارد دیسک: فایلهای Cache میتوانند باعث کند شدن سرعت هارد دیسک شما شوند و منجر به خرابی نرمافزار شوند.
به همین دلیل، مدیریت مناسب حافظه پنهان برای حفظ عملکرد بهینه سیستم بسیار مهم است.
الگوریتم های ذخیره سازی حافظه پنهان کدامند؟
حافظه کش برای ذخیره سازی از الگوریتم های خاصی استفاده می کند. الگوریتمهای ذخیرهسازی حافظه پنهان یا Cache به شرح زیر هستند:
- الگوریتم LRU (Least Recently Used): این الگوریتم آیتمهایی را که اخیرا کمتر استفاده شدهاند را در حافظه نگه میدارد. در صورتی که حافظه پنهان پر شود، آیتمی که تعداد دفعات کمتری مورد دسترسی قرار گرفته باشد، حذف میشود.
- الگوریتم LFU (Least Frequently Used): این الگوریتم آیتمهایی را که کمترین تعداد دفعات مورد استفاده قرار گرفتهاند را حذف میکند.
- الگوریتم MRU (Most Recently Used): این الگوریتم آیتمهایی را که اخیرا بیشتر استفاده شدهاند را زودتر حذف میکند.
- الگوریتم FIFO (First In, First Out): این الگوریتم آیتمی را که برای اولین بار در حافظه قرار گرفتهاست، حذف میکند.
- الگوریتم بلاودی (Belady’s Algorithm): این الگوریتم بهینهترین الگوریتم ذخیرهسازی است و دادههایی را که در مدت طولانی در آینده مورد استفاده قرار نمیگیرند، در ساختار حافظه پنهان ذخیره نمیکند.
این الگوریتمها برای مدیریت ذخیرهسازی داده در حافظه پنهان به کار میروند و با استفاده از آنها میتوان عملکرد دسترسی به دادهها را در آینده تسریع بخشید.
چگونه می توان حافظه کش را پاک کرد؟
پاک کردن حافظه پنهان یا Cache بستگی به سیستم عامل و برنامهای که از آن استفاده میکنید دارد. در زیر چندین روش برای پاک کردن حافظه پنهان در سیستمهای مختلف آورده شده است:
مرورگر Google Chrome:
- در سیستم خود، Chrome را باز کنید.
- در بالا سمت راست، روی More کلیک کنید.
- روی More tools > Clear browsing data کلیک کنید.
- در قسمت تعیین شده، یک بازه زمانی را انتخاب کنید. برای حذف همه، All time را انتخاب کنید.
- کنار “Cookies and other site data” و “Cached images and files”، تیک بزنید.
- روی Clear data کلیک کنید.
ویندوز:
- منوی Start را باز کنید و سپس وارد Settings شوید.
- به بخش System در ویندوز بروید.
- Storage در نوار کناری سمت چپ را انتخاب کنید و سپس Configure Storage Sense or run it now را بزنید.
- در قسمت Free up space now ، گزینه Clean now را انتخاب کنید.
- منتظر بمانید تا ویندوز هارد دیسک شما را برای حذف فایلها، اسکن کند.
مرورگر Firefox:
- روی دکمه منو کلیک کنید و Options را انتخاب کنید.
- روی پانل Privacy & Security کلیک کنید.
- در بخش Cookies and Site Data، روی Clear Data… کلیک کنید.
- “Cached Web Content” را انتخاب کنید و روی Clear کلیک کنید.
مرورگر Safari:
- از منوی Safari گزینه Clear History را انتخاب کنید.
- در کادر پایین، بازه زمانی را انتخاب کنید که میخواهید تاریخچهی مرور خود را پاک کنید.
- روی Clear History کلیک کنید.
گوشیهای اندروید:
- به بخش تنظیمات گوشی همراه بروید.
- روی Storage کلیک کنید.
- روی Other Apps کلیک کنید.
- سپس برنامهای که میخواهید حافظه پنهان آن را پاک کنید کلیک کنید.
- در نهایت روی Clear Cache کلیک کنید.
گوشیهای iOS:
- به بخش تنظیمات دستگاه بروید.
- روی Safari کلیک کنید.
- سپس Clear History and Website Data کلیک کنید.
- در آخر نیز روی Clear History and Data کلیک کنید.
لطفاً توجه داشته باشید که این روشها بسته به سیستم عامل و نوع دستگاه ممکن است متفاوت باشند.
جمع بندی
در این مطلب در خصوص حافظه کش یا پنهان مطالب کاربردی را خواندید. در رابطه با نحوه کار و الگوریتم های این حافظه نیز اطلاعات بسیاری در اختیار شما قرار گرفت. این حافظه نیز همانند دیگر حافظه مزایا و معایب خودش را دارد. با مزایا و معایب آن نیز آشنا شدید.