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

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

حافظه اصلی یک قطعه کامپیوتری است که پایین ترین سرعت دسترسی به اطلاعات را دارد. اگر CPU به داده ای خاص نیاز داشته باشد با استفاده از گذرگاه حافظه (Memory Bus) درخواستی از CPU به حافظه اصلی فرستاده می شود. در ادامه حافظه اصلی به دنبال داده مورد نظر می گردد و آن را به CPU می فرستد. مدت زمان زیادی در طول این چرخه تلف می شود. اگر داده های مورد نظر در محلی نزدیک به CPU ذخیره می شدند چه می شد؟ عملکرد کش پردازنده نیز بر مبنای چنین مفهومی طراحی شده است. برای درک مفهوم حافظه کش ما از مثال کتابخانه در طول این مطلب استفاده می کنیم.

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

چرا به کش پردازنده نیاز داریم؟

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

آیا حافظه کش تنها داده هایی را که زیاد مورد استفاده قرار می گیرند در خود ذخیره می کند؟

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

کش پردازنده دو سطحی

بسیاری از هارد درایو ها و اجزای دیگر سیستم از کش یک سطحی استفاده می کنند اما کش پردازنده، یک کش دو سطحی است. در این حالت کش سطح 1 (L1) کوچکتر و سریع تر است در حالی که کش سطح 2(L2) کمی کند تر است بااین حال باز هم کش سطح 2 سرعت بسیاری بیشتری نسبت به حافظه اصلی سیستم دارد. کش L1 به دو بخش تقسیم می شود که عبارتند از: کش دستورات و کش داده ها. کش دستورات در واقع دستوراتی را که CPU برای پردازش اطلاعات به آن ها نیاز دارد در خود ذخیره می کند در حالی که کش داده، مقادیری را که برای دستور فعلی در حال اجرا نیاز هستند را ذخیره می کند. وظیفه کش L2 بارگذاری اطلاعات از حافظه اصلی است. اگر بخواهیم دوباره به مثال کتابخانه برگردیم: فرض کنید کشوی میز کتابدار همان کش L1 باشد. در یک روز شلوغ که میزان تقاضا برای کتاب ها زیاد است و کتابدار کتاب های زیادی را در کشوی میز خود قرار داده است این احتمال وجود دارد که کشوی میز به سرعت پر شود. اینجا جایی است که کش L2 وارد ماجرا می شود. یک کمد کتاب را در نزدیکی میز کتابدار به عنوان کش L2 در نظر بگیرید. وقتی کشو پر می شود کتابدار کتاب ها را در کمد قرار می دهد. در این صورت وقتی تقاضا برای یک کتاب محبوب زیاد باشد، کتابدار اول کشوی میز خود را جستجو می کند. اگر آن کتاب در آن جا نبود او به سراغ کمد کتاب ها می رود. به طور مشابه وقتی کش L1 پر می شود داده ها در کش L2 ذخیره می شوند. پردازنده ابتدا در کش L1 به دنبال داده مورد نیاز خود می گردد اگر آن را پیدا نکرد فقط کش L2 را جستجو می کند. اگر آن داده در کش L2 نیز موجود نباشد طی کردن مسیر طولانی تا حافظه اصلی و جستجو در آن اجتناب ناپذیر است.

L3 Cache یا کش لایه سوم پردازنده چیست ؟

کش L3 بین حافظه اصلی سیستم یا همان RAM و کش لایه دوم قرار می گیرد . هدف از طراحی و پیاده سازی کش L3 این است که اگر داده ها در کش لایه دوم پیدا نشدند در لایه سوم بتوان به آنها دسترسی داشت باید به این نکته توجه داشت که کش لایه سوم سرعت پایینتر اما ظرفیت بیشتری نسبت به کش لایه دوم دارد. همان طور که در تصویر پایین مشاهد میکنید ویژگی دیگر کش لایه 3 این میباشد که بین تمام هسته های پردازنده مشترک است.

پاسخی بگذارید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *