چرا سازندههای عوضی کثیف خسیس میزان کش CPU رو بیشتر نمیکنن؟!
قبل از شروع اینو بگم که میخواستم اینو به عنوان یه مقاله بزارم توی یه وبلاگطوری توی گیتهابم، بعد دیدم هم من حالشو ندارم بنویسم این همه، هم شما 😂
گفتم بیخیالش، همینجا تلگرام مینویسم یه چیزی میشه دیگه!
در دنیایی که ما حتی حافظههای چندترابایتی هم ممکنه کوچیک به نظر برسن، یا جایی که همه دنبال چیزای بزرگترن، خیلی عجیبه که حافظههای کش CPU انقدر کوچیکن
مثلا 1 مگ یا 2 مگ
اما چرا؟!
ببینید اینکه میگن «هرچی بزرگتر بهتر» همیشه درست نیست
خیلی وقتا بزرگتر بودن خودش دلیل ایجاد مشکل میشه
تو دنیای CPU هرچی حافظه کوچیکتر باشه، سرعت دسترسی سریعتره
کش و ریجستر باید نانوثانیهای دیتا بدن، پس بزرگ شدنشون مساوی کند شدن کل سیستم میشه
حالا قبلش یه اشاره سریع به انواع حافظهها داشته باشیم:
1. ریجستر
سریعترین و گرونترین و پیچیدهترین حافظه کامپیوتره
داخل خود core قرار داره
فقط دیتاهای خیلی فوری و حیاتی CPU اینجا ذخیره میشه
2. کش
در معماری x86-64 معمولا سه لایه L1 L2 L3 داریم
کش بعد از ریجستر سریعترین و گرونترین حافظهست
برای دیتاهایی استفاده میشه که یا قراره برن ریجستر، یا اهمیتشون کمتر از دیتای فعلی داخل ریجستر هست
کش هم داخل CPU قرار داره ولی نه داخل خود core
3. رم
انواع مختلفی داره
ولی خلاصه رم محل نگهداری دیتاهایی هست که یا کش پر شده، یا دیتا اونقدری مهم نیست که داخل کش بمونه
سرعتش از کش کمتره، ظرفیتش بیشتره
4. دیسکها
SSD HDD و انواع دیگه
آخرین لایه
کندترین
ارزونترین
برای نگهداری طولانیمدت
کل حرفای بالا فقط برای این بود که سه تا فاکتور مهم رو بگم:
1- هزینه
2- سرعت
3- پیچیدگی
همانطور که گفتم
هرچی شما کش و ریجستر رو بزرگتر بسازی، هزینه ساخت CPU شدید میره بالا
چون اینا داخل خود چیپ ساخته میشن و هر میلیمتر مربع سیلیکون قیمت داره
بعد
کش هرچی بزرگتر باشه کندتره
خطوط کش باید طولانیتر بشن
زمان جستجوی tag بیشتر میشه
سیگنال باید مسیر بیشتری طی کنه
و این یعنی تاخیر
تاخیر بالا یعنی CPU مجبور میشه صبر کنه
و این یعنی افت سرعت کل سیستم
سوم
پیچیدگی
کش چیز سادهای مثل یک جدول نیست
شامل tag
valid bit
LRU
coherence
policy
سازوکار هماهنگی بین هستهها
هرچی بزرگتر شه اینا سختتر میشن
مصرف برق بالا میره
گرما بالا میره
طراحی کلا جهنمی میشه
سازندهها میرن با مدل AMAT حساب میکنن ببینن آیا بزرگ کردن کش کمک میکنه یا نه
نتیجه ۹۹ درصد مواقع:
بعد از یک سقفی، بزرگتر کردن کش هیچ سودی نداره
حتی ممکنه کندتر هم بشه
برای همینه که مثلا CPU های سرور کشهای ۲۰ یا ۳۰ مگ دارن
چون workload شون فرق داره
ولی CPU لپتاپ نه
چون هم دما میره بالا هم مصرف
هم سرعت میاد پایین
خلاصه داستان:
هرچی کوچیکتر، ارزونتر و خیلی سریعتر 🔥
هرچی بزرگتر، گرونتر، کندتر و شدیدا پیچیدهتر
@kernelSP#معماری_کامپیوتر #سخت_افزار #مقاله