درباره حافظه Cache و انواع L1، L2 و L3 آن چه می دانید؟
کشِ CPU، حافظهی کوچکی است که اطلاعات مورد نیاز پردازنده در آن ذخیره میشود تا پردازنده در نیازِ بعدی خود به این اطلاعات، به سرعت به آنها دسترسی داشته باشد. اینکه چه اطلاعاتی باید در حافظه ذخیره شود، به الگوریتمهای پیچیده و فرضیات مشخصی از کدهای نرمافزار مربوط است. هدف اصلی در استفاده از کش آن است که مطمئن شویم بیت بعدی از اطلاعات که CPU به آنها نیاز دارد، در کش ذخیره شده باشند تا با حداکثر سرعت و حداقل تاخیر در اختیار پردازنده قرار گیرند. به این فرایند Cache Hit نیز گفته میشود یعنی بیت بعدی که پردازنده به آنها نیاز دارد، در کش آماده باشد.
از سوی دیگر، موضوعی با عنوان Cache Miss وجود دارد و به معنی آن است که اطلاعاتی که پردازنده به آنها نیاز دارد در کش وجود ندارد و برای یافتن آنها باید به حافظههای دیگر مراجعه کند. این همان جایی است که L2 Cache یا سطح دوم حافظهی کش وارد بازی میشود.
هرچند حافظهی L2 به اندازهی L1 سریع نیست، اما ظرفیت آن بیشتر است. برخی از پردازندهها از طراحی پوششی بهره میبرند و این بدین معنی است که اطلاعاتی که در L1 ذخیره میشود همزمان در L2 نیز کپی میشود. اما طراحی دیگری نیز وجود دارد که در آن هیچ وقت اطلاعات موجود در L1 و L2 یکسان نخواهند بود.
اگر پردازنده اطلاعات مورد نیاز خود را در L2 پیدا نکند آنوقت به سطح سوم کش یا L3 مراجعه میکند به همین ترتیب در صورت پیدا نشدن اطلاعات در L3 پردازنده به L4 سر میزند و اگر اطلاعات مورد نیاز پردازنده در این سطح از حافظه نبود آنوقت ناگزیر به مراجعه به رم (DRAM) میشود. توجه داشته باشید که تمام پردازندههای از هر چهار سطح حافظهی کش پشتیبانی نمیکنند و برخی از پردازندههای قدیمی تنها سه یا دو سطح از حافظهی کش را در اختیار دارند.
سطح دوم از حافظهی کش، ارزانترو بزرگتر از L1 است و علاوه بر آن مصرف انرژی کمتری نیز دارد. اما با این حال بسیاری از پردازندههای مدرن امروزی ۹۵ درصد از درخواستهای خود را از همان L1 پاسخ میگیرند و کمتر نیاز به مراجعه به حافظهی سطح دوم پیدا میکنند.