یکی از دوستان ما در ایسوس ایران، میخواهد لپ تاپ ایسوس خریداری کند و در بخش مشخصات، به حافظه کش برخورد که نمیدانست چیست؛ پس از تحقیقات و مطالعات فراوان، مطلبی را برای شما آماده کردم که توضیح میدهد حافظه کش دقیقاً چه کاری انجام میدهد. بسیاری از توسعهدهندگان و متخصصان در حوزه فناوری اطلاعات، برای افزایش سرعت دسترسی کاربر به دادههای کلیدی و مهم، از حافظه کش (حافظه پنهان / Cache) استفاده میکنند.
کش چیست؟
حافظه پنهان یا همان کش، یک جزء سختافزاری یا نرمافزاری است که در حافظه برنامه یا دستگاه تعبیه شده و به طور خودکار و موقت، دادههای مصرف شده توسط کاربر را ذخیره میکند تا دفعه بعد که به برنامه یا دستگاه احتیاج داشت، زمان و تلاش بازیابی دادهها کاهش یابد. کش، یک نوع متوسط از حافظه سریع است که برای بهبود عملکرد دادههای تکراری یا اغلب قابل دسترس استفاده میشود. پردازشگر مرکزی (CPU)، برنامهها، مرورگرهای وب و سیستم عاملها، همگی از حافظه پنهان بهره میبرند.
پردازشگر مرکزی که دادهها را از نرمافزار روی دسکتاپ، لپتاپ، گوشی هوشمند یا تبلت شما پردازش میکند، کش مخصوص به خود را نیز دارد. جالب است بدانید که این حافظه پنهان، یک بلوک فشرده است که برای کمک به CPU در بازیابی دادههایی که اغلب به آنها دسترسی دارند، طراحی شد.
حافظه کش چگونه کار میکند؟
یک کش، معمولاً بخشی از دادهها را به طور موقت در ازای ظرفیت ذخیره میکند. هنگامی که سرویس گیرنده این حافظه سعی میکند تا دادهها بازیابی شوند، ابتدا حافظه پنهان مورد بررسی قرار میگیرد. اگر دادهها در کش قرار داشته باشند، به آن cache hit میگویند. همچنین، اطلاعاتی که در کش قرار ندارند، از حافظه اصلی گرفته شده و در بخش نهان قرار خواهند گرفت؛ این اتفاق به عنوان از دست دادن حافظه پنهان شناخته میشود. اینکه چگونه این کار صورت میگیرد و چه اطلاعاتی از حافظه پنهان بیرون میآیند تا فضایی برای دادههای جدید بسازد، توسط الگوریتمهای کش، مکانیسمها و مقررات سیستم تعیین خواهد شد.
کاربردهای کش نرم افزار چیست؟
کش CPU، تصویری از کش سختافزاری به حساب میآید. این حافظه، بخش کوچکی از فضای ذخیرهسازی در CPU رایانه محسوب میشود که دستورالعملهای اساسی سیستم را مورد استفاده قرار میدهد. علاوه بر این، بسیاری از برنامهها و نرمافزارها از حافظه پنهان خود استفاده میکنند. به طور خلاصه، این کش، دادهها، فایلها و دستورالعملهای مربوط به یک برنامه کاربردی را برای بازیابی سریع ذخیره خواهد کرد.
مرورگرهای وب، یک تصویر عالی از کش برنامهها هستند. همانطور که قبلاً گفته شد، هر مرورگر کش مخصوص به خود را دارد که اطلاعات قبل را برای استفاده بعدی شما حفظ میکند. اگر کاربری بخواهد یک ویدئوی یوتیوب را مجدداً از همان مرورگر مشاهده کند، آن عمل سریعتر بارگیری میشود؛ زیرا مرورگر آن را از فضای ذخیرهسازی که در آخرین جلسه ذخیره شده بود، بالا میآورد.
طراحی سیستم کش
در یک محیط توزیعشده، یک لایه ذخیرهسازی تخصصی به برنامهها و سیستمها اجازه میدهد تا آزادانه، بدون دخالت و نفوذ حافظه پنهان، با چرخههای عمر خود کار کنند. کش یک لایه اصلی است که امکان دارد توسط بسیاری از سیستمها قابل دسترس باشد و هر یک از طول عمر و توپولوژی معماری خاص خود بهره ببرند. اگر حافظه نهان در همان گره برنامهها یا سیستمهایی باشد که از آن استفاده میکنند، مقیاسگذاری ممکن است یکپارچگی کش را به خطر بیندازد.
علاوه بر این، حافظه پنهان، بخشی را صرفاً برای برنامههای محلی تقویت میکند که دادهها هنگام استفاده از آن بهره ببرند. برای معماری یک کش توزیع شده، اطلاعات ممکن است روی سرورهای متعدد پراکنده شده و جهت راحتی تمام مصرفکنندگان، در مرکز حافظه ذخیره شوند. هنگام ساخت یک ردیف کش، درک قابلیت اطمینان دادهها ضروری میشود؛ یک کش موفق دارای نرخ ضربه بالایی است که نشان میدهد اطلاعات در هنگام بازیابی وجود داشتهاند.
از دست دادن حافظه پنهان زمانی اتفاق میافتد که دادههای درخواستی در آن وجود نداشته باشد. عامل دیگری که باید بررسی شود این است که آیا محیط کش نیاز به در دسترس بودن بالا دارد یا خیر؛ که موتورهای درون حافظه، بتوانند آن را فراهم سازند. در برخی شرایط، یک لایه درون حافظه امکان دارد برای ذخیره داده جداگانه به جای کش کردن اطلاعات از مکان اصلی استفاده کند.
آشنایی با 10 نوع کش
حافظه کش، سریع و گران است. این حافظه به طور سنتی، به عنوان سطوح طبقهبندی میشود که نزدیکی و دسترسی آن به ریزپردازنده را توصیف میکند؛ این حافظه، 10 نوع دارد که به شرح زیر است:
- کش L1
- کش L2
- کش L3
- کش نقشهکشی شده با استفاده از MCDRAM
- کش کاملاً انجمنی
- کش دیسک
- حافظه پنهان دائمی
- حافظه پنهان فلش
- کش مرورگر و برنامه
تمامی این حافظههای پنهان، وظایف متفاوت و مجزایی دارند و هر کدام را میتوان به صورت جدا، توضیح داد و توصیف کرد.
کش L1
L1 یک حافظه گنجانده شده در CPU و رایجترین نوع کش به حساب میآید. اندازه حافظه نهان L1 بسته به پردازنده کامپیوتر بین 2 تا 64 کیلوبایت متفاوت خواهد بود. دستورالعملهای لازم CPU ابتدا در حافظه پنهان L1 جستجو میشوند. رجیسترها نیز شامل انباشتهکنندهها، رجیسترهای آدرس و شمارندههای برنامه و بسیاری دیگر هستند.
کش L2
کش سطح 2 که حافظه نهان ثانویه نیز نامیده میشود، اغلب بزرگتر از L1 است. حافظه نهان آن امکان دارد در CPU، یا در یک تراشه و پردازنده کمکی مستقل متصل شود. این کش، با استفاده از حافظه پنهان و CPU، یک گذرگاه سیستم جایگزین با فرکانس بالا را به همدیگر متصل میکند؛ بنابراین، با ازدحام برنامههای سیستم، سرعت آن کاهش نخواهد یافت.
کش L3
کش سطح 3 یک حافظه سفارشی محسوب میشود که برای افزایش سرعت L1 و L2 طراحی شده است. حافظههای L1 و L2 احتمال دارد بسیار سریعتر از L3 ظاهر شوند، در حالی که L3 اغلب دو برابر بیشتر از DRAM سرعت دارد. هر هسته از یک CPU چند هستهای ممکن است حافظه نهان L1 و L2 خود را داشته باشد و آنها میتوانند حافظه نهان L3 را با هم ترکیب کنند.
کش نقشهکشی شده با استفاده از MCDRAM
یک کش با نقشه مستقیم، از یک روش ساده پیروی میکند. هر آدرس در این حافظه اصلی، دقیقاً به یک بلوک ترجمه میشود. DRAM چند کاناله یا کش MCDRAM، ابزاری کاربردی برای افزایش پهنای باند حافظه به حساب میآید و به عنوان یک کش حافظه عمل میکند. امکان دارد که MCDRAM به صورت پویا، مطالب پر استفاده را ذخیره کند و پهنای باند بسیار بهتری نسبت به حافظه DDR ارائه دهد.
کش کاملاً انجمنی
کش کاملاً انجمنی، یک نوع دیگر از حافظه پنهان محسوب میشود که به بلوک حافظه اصلی که آزادانه در دسترس هستند، اجازه ارتباط کامل با تمام آدرسهای حافظه را میدهد. این نوع کش، به طور قابلتوجهی، از تعداد خطا میکاهد و به عنوان یک پیادهسازی پیچیده از حافظه پنهان در نظر گرفته میشود.
کش دیسک
این شکل از کش، یک کپی از هر داده ساکن رم را که شما تغییر میدهید، ذخیره و تولید میکند. به طور معمول، کل پوشه به این دلیل که امکان دارد شما به بخشی از اطلاعات نیاز داشته باشید در حافظه پنهان ذخیره میشود؛ بنابراین برای دسترسی به یک فایل برای اولینبار ممکن است زمان بسیار بیشتری صرف کند.
حافظه پنهان دائمی
حافظه پنهان دائمی، به فضای ذخیرهسازی مربوط است و در آن، دادهها هنگام راهاندازی مجدد یا خرابی سیستم حضور پیدا میکنند. پشتیبانگیری برای ایمن کردن دادهها با یک باتری به عنوان محافظ اضافی در برابر از دست دادن اطلاعات منتقل میشوند.
حافظه پنهان فلش
این نوع حافظه که به آن کش درایو حالت جامد نیز میگویند، از تراشههای حافظه فلش NAND (فناوری ذخیرهسازی غیر فرّار) برای ذخیره موقت دادهها استفاده میکند. حافظه پنهان فلش سریعتر از یک هارد دیسک معمولی یا به عنوان بخشی از ذخیرهسازی پشتیبان به درخواستهای داده پاسخ میدهد.
کش مرورگر و برنامه
مرورگرهای وب، بخشهای مختلف وبسایتها از جمله تصاویر، جاوا اسکریپت و پرسشها را روی دیسک سخت ذخیره میکنند. اگر تاریخچه مرورگر شما از تنظیمات قطع شده باشند، این حافظه قادر به تعیین میزان فضای ذخیرهسازی تصاویر حاضر در کش است. حافظه پنهان مرورگر و برنامهها، اطلاعاتی مانند کدها و فایلها را در حافظه برنامه نگه میدارد تا دفعه بعد که آنها را احتیاج دارید، سریعتر به آنها برسید.
اهمیت حافظه کش
بسیاری از مهندسان نرمافزار بر این باور هستند که حافظه پنهان تنها راه برای سریعتر کردن کارها است. به زبان ساده، زمانی که میخواهید دادههای سنگین را بازیابی کنید، اگر آنها در کش سیستم شما باشند، دیگر نیازی به جمعآوری دوباره تمام اطلاعات نخواهید داشت.
عملکرد بهتر
مزیت اصلی کش این است که عملکرد سیستم را افزایش دهد. با استفاده از این حافظه، دادههای فایل وبسایت، مرورگر و برنامههای شما، فقط با یک بار دانلود محتوا ذخیره میشوند. همچنین، شما میتوانید در بازدیدهای بعدی از ویندوز فایلها را دوباره بارگیری کرده و آنها را ببینید.
دسترسی آفلاین
برای افزایش سرعت، برنامهها دادههای قبلاً استفاده شده را در حافظه پنهان ذخیره میکنند. این کار نه تنها به کارها سرعت میبخشد، بلکه در شرایط خاص، برنامهها را قادر میسازد تا به صورت آفلاین نیز مورد استفاده قرار بگیرند. به عنوان مثال، اگر به اینترنت متصل نیستید و موسیقی را در یک برنامه دانلود کردید، میتوانید آن را به صورت آفلاین نیز گوش دهید.
کارایی برنامه
دانلود یک باره برخی از برنامهها، بسیار کارآمد خواهد بود. نسخه کش یک فایل با دو بار دسترسی به برنامه، از اتلاف زمان، عمر باتری و سایر مشکلات جلوگیری میکند و در عوض، برنامه فقط باید فایلهای به روز و یا اضافه شده را دانلود کند.
کارایی شبکه
ذخیره سازی با کاهش تعداد در فضای وب جهت درخواست و تحویل اطلاعات، استفاده موثرتر از پهنای باند شبکه را بهتر میکند. این تاثیر ممکن است به طور قابلتوجهی نیاز به استقرار زیرساختهای تکراری را کاهش دهد و همین امر منجر به صرفهجویی قابلتوجه در هزینه و مزایای اقتصادی برای کل اکوسیستم اینترنت میشود.
کیفیت بهتر خدمات
در دسترس بودن سرویسهای ذخیرهسازی، موانع ورود را برای ارائهدهندگان محتوای در حال توسعه (بهویژه SMBهایی که خدمات جدید را اعلام میکنند) کاهش میدهد. این نوع ذخیرهسازی به ارائه دهندگان محتوای نوظهور و جدید امکان میدهد تا تجربه کاربری مثبتی را با کیفیت بالای خدمات محصول ارائه دهند.
جمعبندی
همانطور که اشاره شد، فرآیند کشینگ با استفاده از ذخیرهسازی موقت دادهها و فایلهای پراستفاده کاربران در حافظه دستگاه، مرورگر، وبسرور و سایر سیستمها انجام میشود؛ بنابراین، در اکثر موارد، کاربران نیازی ندارند که دادههای مورد نظر خود را از منابعی که در مکانی دورتر قرار دارند، دریافت کنند.