هر آنچه که باید در مورد کش سی پی یو بدانید

پردازنده های کامپیوتری دائم در حال پیشرفتن و هر روز بهتر از دیروز عمل  می‌کنن. تعداد ترانزیستورها در حجم کم در حال زیاد شدنه و این باعث میشه که  آزادی عمل بیشتری برای طراحی‌های CPU ایجاد بشه و این قطعه بهتر عمل کنه. کش سی پی یو کنار تعداد ترانزیستور، هسته و فرکانس یکی از مشخصه‌های مهم CPU هست اما  معمولا به اون توجه نمیشه. در تبلیغات AMD و Intel هم خیلی بهش پرداخته  نمیشه. شاید دلیلش اینه که کش CPU به سمتی میره که همه‌ی CPU ها باید اون  رو داشته باشن. در این مقاله اینکه حافظه کش سی پی یو چیست رو بررسی  می‌کنیم.

کش سی پی یو چیست ؟ 

تاثیر کش در سرعت سی پی یو

مهندس‌های سخت‌افزاربرای اینکه سرعت این قطعه و به‌طور کلی سرعت سیستم  رو زیاد کنن راه‌های زیادی رو امتحان کردن. زیاد کردن هسته‌ها، طراحی  رشته‌ی CPU، ارتقا دادن حافظه‌ی رم و HDD و همین‌طور اتصالات بین قطعات  نمونه‌هایی از این تلاش‌ها هستن. با این حال هیچ‌کدوم به اندازه‌ی ایجاد کش  سی پی یو سرعت رو بالا نمیبره.

کش یک نوع حافظه شبیه حافظه‌های دیگه‌ی سیستم مثل RAM وهارده ولی سرعت خیلی  بالاتری داره. یکی از خصوصیات مهم حافظه‌ی کش اینه که داخل خود CPU قرار  گرفته. حافظه‌ها در کامپیوتر سلسله مراتبی دارن که در عکس پایین می‌بینید:

از این عکس میشه فهمید هرچی به سمت بالای هرم بریم سرعت بیشتر میشه ولی  ظرفیت حافظه پایین میاد. برعکس هرچی به سمت پایین بریم ظرفیت حافظه بیشتر و  سرعت پردازش اطلاعات کمتر میشه. راجع به L2, L1 و L3 هم حرف می‌زنیم.

کش CPU چطور کار می‌کند؟

هر نرم‌افزاری که در سیستمتون اجراش می‌کنین به پردازش نیاز داره.  داده‌های این نرم‌افزار طبق سلسله‌مراتب حافظه، روی هاردتون قرار داره و  بعد از اجرا به رم فرستاده میشه و رم اون رو برای پردازش به سی پی یو منتقل  می‌کنه. در آخر سی پی یو داده‌ی پردازش‌شده رو به حافظه‌ی اصلی شما بر  می‌گردونه. هرکدوم ازین مسیر‌ها کمی تاخیر دارن، اما کش CPU این تاخیر رو  از بین می‌بره. چطوری؟ کش دقیقا اطلاعاتی رو که سی پی یو به اون نیاز داره  در همون لحظه در اختیارش قرار میده؛ اما چون کش داخل خود CPU قرار داره این  مسیر خیلی کوتاه‌تر شده و سرعت پردازش مخصوصا برای CPU های چند هسته‌ای  بیشتر میشه. کش سی پی یو خودش سلسله‌مراتبی داره. البته اوایل فقط یک یا دو  سطح داشت (L1 و L2) اما CPU های امروزی تا L3 دارن.

سطوح کش سی پی یو (L1, L2, L3)

سی پی یو های جدید برای حافظه سه سطح دارن: L2 ،L1 و L3 این سه سطح بر اساس سرعت و ظرفیت،‌ سلسله‌مراتبی دارن.

کش L1

کش 1 یا L1 سریع‌ترین حافظه در سیستم شماست. این سطح، ظرفیت حافظه‌ی  خیلی کمی داره و معمولا 256 کیلوبایت بیشتر نیست ولی در سی پی یو های قوی  مثل Intel Xeon سرور این کش به 1 یا 2 مگابایت هم میرسه. سی پی یو برای  پردازش، اول سراغ این سطح میره و اگه داده‌ی مورد نظر داخل اون باشه با  سرعت خیلی بالایی به CPU منتقل میشه و پردازش انجام میشه.

معمولا کش L1 به دو بخش دستورالعمل‌ها و داده‌ها تقسیم میشه. کش اولی با  دستورالعمل‌هایی سروکار داره که باید روی داده انجام بشه و کش دومی،  داده‌هایی رو ذخیره می‌کنه که باید پردازش بشه.

کش L2

کش L2 نسبت به کش L1 سرعت کمتری داره ولی می‌تونه مقدار داده‌ی بیشتری  رو در خودش جا بده. این کش CPU معمولا بین 256 کیلوبایت تا 8 مگابایت حافظه  داره و به خاطر همین، سطح L2 به عملکرد کل کش کمک خیلی زیادی کرده. معمولا  در سی پی یو های مدرن چند هسته‌ای هر هسته سطوح L1 و L2 جداگونه داره.

کش L3

این سطح بیشترین حافظه رو داره و در پایین این سلسله‌مراتب قرار می‌گیره  پس سرعتش هم از دو تای قبلی کمتره. ظرفیت حافظه‌ی این سطح بین 8 تا 128  مگابایت برای سی پی یو های مختلف متغیره. این حافظه‌ی زیاد باعث میشه CPU  پردازش‌های سنگین مثل محاسبات پیچیده رو با سرعت خیلی بالایی انجام بده  بدون اینکه مشکلی برای اون پیش بیاد.

Hit or Miss کش سی پی یو 

طبق سلسله مراتبی که گفتیم داده‌ها اول از رم به سطح L3 سی پی یو منتقل  میشه و از L3 به L2 و همین‌طور در آخر از L2 به L1 میرسه. CPU برای پردازش  داده‌ی مورد نظرش اول از همه در کش L1 دنبال اون می‌گرده و اگه پیدا نکرد  L2 و L3 رو هم چک می‌کنه. در صورتی که سی پی یو داده‌ی مورد نظرش رو داخل  کش پیدا کنه Cache Hit (دستیابی به داده) اتفاق میفته. 

بعضی وقت‌ها به‌خاطر حجم اطلاعات زیاد یا شلوغ بودن مسیر انتقال یا  اینکه نرم‌افزار مورد استفاده با سیستم پردازش جدید ناسازگاره، داده‌ی مورد  نظر در کش پیدا نمیشه و سی پی یو درخواست اون داده رو به رم میده. در این  صورت Cache Miss (عدم دستیابی به داده) اتفاق میفته. 

تاخیر یا تایمینگ

هر قطعه تاخیر یا تایمینگی داره. تاخیر در سی پی یو بسته اینکه داده در  کدوم سطح باشه یا اینکه Cache Miss اتفاق بیفته، فرق می‌کنه. هر چی داده به  سطح L1 نزدیک‌تر باشه تاخیر سی پی یو کمتره.

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

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

چرا رم رو مثل کش CPU نمی‌سازن؟

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

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

حرف آخر

در این مقاله کش سی پی یو رو بررسی کردیم و به این نتیجه  رسیدیم که طراحی کش CPU یکی از بهترین راه کار‌های افزایش کلی سرعت  کامپیوتره. این مشخصه هر روز در حال پیشرفته و ممکنه به‌طور کلی رم رو از  سیستم‌های کامپیوتر حذف کنه. هر حافظه کش 3 سطح داره: L2، L1 و L3. کش L1  سریع‌ترین حافظه‌ی کامپیوتر محسوب میشه.