اهمیت حافظه کش (Cache Memory) در پردازنده های امروزی

اهمیت حافظه کش (Cache Memory) در پردازنده های امروزی

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

اهمیت حافظه کش L1, L2 و L3

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

حافظه کش چیست؟

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

حافظه کش چیست؟

رابطه بین پردازنده، حافظه کش و حافظه اصلی

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

حافظه کش چیست؟

سلسه مراتب حافظه کش

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

اگر دوست دارید پردازنده خود را کلاک کنید پیشنهاد می کنیم پست آموزش 5 مرحله ساده و کاربردی اورکلاک CPU Intel و AMD را مطالعه بفرمایید.

چرا حافظه کش مهم است؟

توسعه کش ها و کش کردن یکی از مهمترین رویدادهای تاریخ محاسبات است. تقریبا هر هسته پردازنده امروزی از تراشه های فوق العاده کم مصرف و چند هسته ای استفاده می کنند و هر میکروکنترل غالبا دارای چند کش کوچک است. از سال 1980 به بعد کش کردن توسعه پیدا کرد و از سال 1995 میلادی کش سطح 2 به میدان آمد. دلیل اصلی این که چرا کش مهم است؟ این است که سرعت واقعی پردازنده افزایش پیدا می کند.

چرا حافظه کش مهم است؟

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

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

از شما دعوت می کنیم مقاله بررسی پردازنده Coffee Lake اینتل مدل Core i7-8700K، i5-8600K و … را مطالعه بفرمایید.

نحوه کار حافظه کش

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

نبود کش یا miss کش به این معناست که پردازنده اطلاعات مورد نیازش را در سطح 1 پیدا نکرده است و این جایی است که کش سطح 2 به بازی وارد می شود. کش سطح 2 نسبت به کش سطح 1 کندتر است اما بزرگتر است. بعضی از پردازنده ها از یک طراحی کش استفاده می کنند به این معنا که داده های ذخیره شده در کش سطح 1 را در سطح 2 کپی می کنند اما هر دو کش هرگز اطلاعات را به اشتراک نمی گذارند. اگر اطلاعات مورد نیاز در کش سطح 2 پیدا نشود پردازنده به سطح 3 می روند و بعد سطح 4 و در نهایت حافظه اصلی یا DRAM می رود.

نمودار زیر رابطه بین کش سطح 1 را با میزان برخورد نشان می دهد. توجه داشته باشید که میزان برخورد با افزایش اندازه سطح 2 که بزرگتر و کندتر و ارزانتر از کش سطح 1 است افزایش پیدا می کند. بیشتر کش های سطح 1 امروزی دارای نرخ برخورد بالای 50 درصد هستند. در اینجا همانطور که می بینید هم پردازنده اینتل و هم پردازنده AMD دارای نرخ برخورد 95 درصد یا بالاتر هستند.

نحوه کار حافظه کش

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

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

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

نحوه کار حافظه کشبا 10 مورد از بهترین و قویترین CPU ها یا پردازنده های موجود در بازار 2018 آشنا شوید.

تفاوت بین کش L1,L2,L3

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

تفاوت بین کش L1,L2,L3

کش سطح 1 دارای اندازه 2 کیلو تا 64 کیلو بایت می باشد دستورالعمل ها ابتدا در این کش جستجو می شوند. کش L1 در مقایسه با سطح های دیگر بسیار کوچک است بنابراین سریعتر از بقیه است. کش سطح 2 دارای اندازه 256 کیلوبایت تا 512 کیلو بایت است، اگر دستورالعمل ها در کش سطح 1 وجود نداشته باشد کش سطح 2 جستجو می شود که مقداری بزرگتر از کش 1 است و در نتیجه با تاخیر همراه استو کش سطح 3 که دارای 1 مگابایت تا 8 مگابایت است این سطح بزرگتر و کندتر از سطح های قبلی است اما هنوز از رم سریعتر است.