پردازندههای کامپیوترها طی سالهای اخیر پیشرفت چشمگیری داشتهاند. ترانزیستورها هر ساله کوچکتر و بهتر میشوند و در نتیجه پردازندههای قدرتمندتر به دست کاربران میرسند. اما وقتی که صحبت از پردازنده میشود، به غیر از بحث ترانزیستورها و فرکانسها باید به اهمیت حافظهی کش (Cache) هم اشاره کنیم که نقش مهمی را ایفا میکند.
اگر به مشخصات پردازندهها نگاهی بیندازید، میتوانید مقدار حافظهی کش پردازندهی موردنظر را مشاهده کنید ولی اکثر کاربران به این بخش مهم توجه زیادی نشان نمیدهند. در هر صورت در این مطلب قصد داریم به اهمیت حافظهی کش پردازنده و چگونگی کارکرد آن بپردازیم.
حافظهی کش پردازنده چیست؟
به زبان ساده، حافظهی کش پردازنده یک نوع حافظهی بسیار سریع محسوب میشود. سالها قبل، سرعت پردازنده و کش آن بسیار کم بود. با این حال، در دههی ۸۰ میلادی سرعت پردازندهها به طور قابل توجهی افزایش پیدا کرد. در آن دوران حافظهی رم نمیتوانست با افزایش سرعت پردازنده هماهنگ شود و بنابراین یک نوع حافظهی جدید به نام حافظهی کش پردازنده متولد شد.
کامپیوترهای امروزی از چندین نوع حافظه بهره میبرند. در درجهی اول با حافظهی اصلی سروکار داریم که معمولا به صورت هارد دیسک یا SSD است و وظیفهی ذخیرهسازی دادهها را بر عهده دارد. سپس باید به حافظه دسترسی تصادفی موسوم به رم اشاره کنیم. این نوع حافظهها سرعت بسیار بیشتری دارند اما تنها یک محیط ذخیرهسازی کوتاهمدت هستند. کامپیوتر و نرمافزارها انواع دادهها را مرتباً بر روی حافظهی رم قرار میدهند تا بتوانند وظایف خود را با سرعت زیادی انجام دهند.
در نهایت باید به حافظهی کش موجود در پردازنده اشاره کنیم. انواع حافظههای موجود در کامپیوتر بر اساس یک نوع سلسلهمراتب مبتنی بر سرعت کار خود را انجام میدهند. حافظهی کش پردازنده به دلیل داشتن بیشترین سرعت در صدر این سلسلهمراتب قرار دارد. باید خاطرنشان کنیم حافظهی کش پردازنده هم انواع مختلفی دارد.
حافظهی کش یک نوع رم ایستا (Static RAM) محسوب میشود ولی حافظهی رم موجود در سیستم به عنوان رم پویا (Dynamic RAM) شناخته میشود. رم ایستا میتواند دادهها را بدون نیاز به تجدیدنظر مداوم نگه دارد و به همین خاطر برخلاف رم پویا، گزینهی ایدئالی برای انجام وظیفه بهعنوان حافظهی کش است.
حافظهی کش پردازنده چگونه کار میکند؟
برنامههای موجود در کامپیوتر شما مجموعهای از دستورالعملها را برای تفسیر و اجرا در اختیار پردازنده قرار میدهند. زمانی که یک برنامه را باز میکنید، دستورالعملها از حافظهی اصلی راهی پردازنده میشوند.
دادهها ابتدا در رم بارگذاری میشوند و سپس به پردازنده راه پیدا میکنند. پردازندههای مدرن در هر ثانیه چندین میلیون دستورالعمل را اجرا میکنند. پردازندهها برای استفاده از تمام توان خود، به حافظهی بسیار سریعی نیاز دارند و در این شرایط حافظهی کش مورد استفاده قرار میگیرد.
کنترلر حافظه، دادهها را از رم میگیرد و در اختیار حافظهی کش پردازنده قرار میدهد. برخی پردازندهها حاوی این کنترلر هستند و اگر فاقد این مشخصه باشند، چیپست موسوم به پل شمالی که در مادربرد قرار دارد، این وظیفه را بر عهده میگیرد. باید خاطرنشان کنیم درون کش پردازنده هم سلسلهمراتب حافظه وجود دارد.
سطوح حافظهی کش پردازنده: L1، L2 و L3
کش پردازنده از سه سطح موسوم به L1، L2 و L3 تشکیل شده است. در این بخش، سلسلهمراتب مبتنی بر سرعت این سطوح و ظرفیت آنها است. اما هرکدام از این سطحها چه تفاوتی با یکدیگر دارند و چه کارهایی را انجام میدهند؟
کش سطح اول (L1)
کش سطح اول سریعترین حافظهی موجود در کامپیوتر محسوب میشود. از نظر اولویت دسترسی، کش L1 دارای دادههایی است که پردازنده به احتمال زیاد حین تکمیل یک کار خاص به آنها نیاز دارد.
ظرفیت کش L1 به پردازنده بستگی دارد. ظرفیت کش L1 برخی از پیشرفتهترین پردازندههای جهان به ۱ مگابایت میرسد که بهعنوان مثال میتوانیم به پردازندهی i9-9980XE اینتل اشاره کنیم. بخشی از پردازندههای مختص سرور، مانند سری Xeon اینتل، نیز دارای کش L1 با ظرفیت ۱ تا ۲ مگابایت هستند.
در رابطه با ظرفیت کش L1 هیچ نوع استانداردی وجود ندارد و به همین خاطر بهتر است قبل از خرید پردازنده، مشخصات آن را بررسی کنید تا از ظرفیت کش L1 خبردار شوید. کش L1 معمولا به دو بخش کش پنهان و کش داده تقسیم میشود. کش پنهان با اطلاعات مربوط به عملیاتی که پردازنده باید انجام دهد سروکار دارد ولی کش داده، دادههایی را نگه میدارد که عملیات باید بر روی آنها انجام شود.
کش سطح دوم (L2)
کش سطح دوم کندتر از L1 است ولی از ظرفیت بیشتری بهره میبرد. به عنوان مثال، میتوانیم پردازندهی مشهور AMD Ryzen 5 5600X اشاره کنیم که از ۳۸۴ کیلوبایت کش L1 و ۳ مگابایت کش L2 بهره میبرد. همچنین ظرفیت کش L3 این پردازنده به ۳۲ مگابایت میرسد.
ظرفیت کش L2 هم بستگی به خود پردازنده دارد ولی معمولا بین ۲۵۶ کیلوبایت تا ۸ مگابایت است. از نظر سرعت هم همانطور که گفتیم سرعت پایینتری نسبت به L1 دارد اما همچنان بسیار سریعتر از حافظهی رم سیستم است. به طور میانگین، کش L1 حدود ۱۰۰ برابر سرعت بیشتری نسبت به رم دارد و L2 هم از حدود ۲۵ برابر سرعت بیشتر نسبت به رم بهره میبرد.
کش سطح سوم (L3)
حالا باید به آخرین سطح کش پردازنده یعنی کش سطح سوم بپردازیم. سالها قبل در زمانی که بیشتر پردازندهها فقط دارای یک هستهی پردازشی بودند، کش L3 در مادربرد قرار داشت. اما حالا کش L3 موجود در پردازندهها میتواند ظرفیت بالایی داشته باشد و برخی از پردازندههای ردهبالا از کش L3 با ظرفیت ۳۲ مگابایت بهره میبرند. برخی از پردازندههای مختص سرورها از این هم فراتر میروند و با کش L3 مبتنی بر ظرفیت ۶۴ مگابایت انجام وظیفه میکنند.
کش L3 اگرچه بزرگترین کش درون پردازنده محسوب میشود، اما از طرف دیگر پایینترین سرعت را دارد. همچنین با وجود اینکه حافظههای کش L1 و L2 به صورت اختصاصی برای هر هستهی پردازشی تعبیه شدهاند، اما کش L3 بیشتر شبیه یک نوع حافظهی عمومی است که کل چیپست میتواند از آن استفاده کند.
به عنوان مثال، در تصویر زیر میتوانید ظرفیت سطوح کش پردازندهی Core i5-3570K اینتل را مشاهده کنید:
در همین تصویر میتوانید ببینید که کش L1 به دو بخش تقسیم شده و L2 و L3 به ترتیب از ظرفیت بیشتری بهره میبرند.
به چه میزان حافظهی کش پردازنده نیاز داریم؟
روی هم رفته ظرفیت این نوع حافظهها هرچقدر بیشتر باشند، بهتر است. پردازندههای جدید معمولا برای سطوح مختلف حافظهی کش خود از ظرفیت بیشتری نسبت به نسلهای قدیمیتر بهره میبرند و در عین حال سرعت بالاتری هم به ارمغان میآورند. هنگام خرید پردازنده یا لپتاپ، بهتر است به غیر از این موضوع به مقایسهی دیگر بخشهای پردازنده هم توجه نشان بدهید تا بتوانید بهترین انتخاب را داشته باشید.
دادهها چگونه بین سطوح مختلف کش پردازنده حرکت میکنند؟
به زبان بسیار ساده، دادهها از حافظهی رم ابتدا به کش L3 سپس L2 و در نهایت L1 راه پیدا میکنند. زمانی که پردازنده میخواهد کاری را انجام دهد، ابتدا در کش L1 دنبال دادههای موردنظر میگردد. و اگر نتواند آنها را پیدا کند، سپس این فرایند برای L2 و L3 هم تکرار میشود.
اما اگر پردازنده در سطوح مختلف حافظهی کش خود دادههای موردنظر را پیدا نکند، تلاش میکند تا از طریق حافظهی رم به آنها برسد. همانطور که میدانیم، حافظهی کش برای سرعت بخشیدن فرایند تبادل اطلاعات بین حافظهی اصلی و پردازنده طراحی شده است. به زمان موردنیاز برای دسترسی به دادههای درون حافظههای مختلف، Latency یا تأخیر گفته میشود.
کش L1 با توجه به اینکه از بیشترین سرعت بهره میبرد و نزدیکترین حافظه به هستهی پردازشی است، کمتری میزان تأخیر را دارد و کش L3 هم دارای بیشترین میزان تأخیر است. زمانی که پردازنده به ناچار باید اطلاعات را از حافظه رم دریافت کند، این میزان تأخیر افزایش پیدا میکند.
با افزایش سرعت و کارآمدتر شدن کامپیوترها، میزان تأخیر مربوط به انتقال دادهها هم کاهش پیدا میکند. به عنوان مثال باید به افزایش سرعت رمهای DDR4 و حافظههای SSD اشاره کنیم که سرعت کل سیستم را به طور قابل توجهی افزایش میدهند.
آیندهی حافظهی کش پردازنده
با پیشرفت تکنولوژی در طراحی و ساخت انواع حافظهها، حافظهی کش پردازنده هم روزبهروز بهتر و سریعتر میشود. به عنوان مثال، از جدیدترین نوآوریهای شرکت AMD میتوانیم به قابلیتهای «حافظهی دسترسی هوشمند» (Smart Access Memory) و «کش بینهایت» (Infinity Cache) اشاره کنیم که هر دو میتوانند عملکرد کامپیوتر را بهبود ببخشند.