سنجش و بهبود کارایی کش

همه miss های کش یکسان نیستند، و درک علل آن‌ها اولین گام برای بهبود کارایی است. این مقاله توضیح می‌دهد چگونه تأثیر واقعی کارایی کش را با استفاده از نرخ miss و جریمه miss محاسبه کنیم، سه علت رایج miss های کش را دسته‌بندی می‌کند، و استراتژی‌های عملی برای کاهش هرکدام را توضیح می‌دهد.

میانگین زمان دسترسی حافظهنرخ Miss کشجریمه Miss,

~4 min read · Updated Sep 6, 2026

سنجش کمی کارایی کش

برای استدلال دقیق به‌جای شهودی درباره کارایی کش، دو سنجه ضروری‌اند: Miss Rate، بخشی از دسترسی‌های حافظه که منجر به یک cache miss می‌شوند، و Miss Penalty، زمان اضافه‌ای که برای واکشی داده از یک سطح کندتر سلسله‌مراتب حافظه هنگام رخ دادن یک miss مورد نیاز است.

این دو در یک سنجه کلی واحد ترکیب می‌شوند:

میانگین زمان دسترسی حافظه =
Hit Time + (Miss Rate × Miss Penalty)

این فرمول نشان می‌دهد بهبود کارایی کش یعنی کاهش یک یا چند مورد از سه عامل: زمان دسترسی به خود کش، دفعات رخ دادن miss، و هزینه هر miss هنگام رخ دادن.

سه C: دسته‌بندی چرایی رخ دادن Miss ها

Cache miss ها معمولاً در سه دسته گروه‌بندی می‌شوند، که اغلب Three Cs نامیده می‌شوند.

  • Compulsory Misses اولین باری که یک بلوک از حافظه دسترسی می‌شود رخ می‌دهند، چون نمی‌تواند از قبل در کش باشد. این‌ها گاهی cold-start miss نامیده می‌شوند و تا حد زیادی اجتناب‌ناپذیرند.
  • Capacity Misses زمانی رخ می‌دهند که کش صرفاً برای نگه‌داشتن تمام داده‌ای که یک برنامه هم‌زمان نیاز دارد بسیار کوچک است، و بلوک‌های قبلاً کش‌شده را مجبور به تخلیه می‌کند حتی اگر ممکن بود به‌زودی دوباره مورد نیاز باشند.
  • Conflict Misses به‌طور خاص در کش‌های مستقیم‌نگاشت‌شده یا با associativity محدود، که پیش‌تر در این مجموعه بحث شد، رخ می‌دهند، وقتی دو بلوک حافظه پرکاربرد به همان مکان کش نگاشت می‌شوند، و به‌طور مکرر یکدیگر را تخلیه می‌کنند حتی اگر کش در کل فضای استفاده‌نشده‌ای در جای دیگر داشته باشد.

استراتژی: افزایش Associativity

یک راه برای کاهش conflict miss ها این است که اجازه داده شود هر آدرس حافظه به بیش از یک مکان کش ممکن نگاشت شود به‌جای دقیقاً یکی، رویکردی به نام Set-Associative Caching. این کار احتمال برخورد دو بلوک پرکاربرد و تخلیه مکرر یکدیگر را کاهش می‌دهد، به قیمت نیاز به سخت‌افزار مقایسه اضافی برای بررسی چند مکان ممکن در هر دسترسی.

استراتژی: افزایش اندازه بلوک

همان‌طور که پیش‌تر درباره محلیت مکانی بحث شد، افزایش اندازه بلوک می‌تواند compulsory miss ها را با واکشی داده مجاور مفید بیشتر در هر miss کاهش دهد. با این حال، اگر بیش‌ازحد پیش برود، بلوک‌های بزرگ‌تر جریمه miss را افزایش می‌دهند، چون داده بیشتری باید در هر miss منتقل شود، و اگر داده اضافه در نهایت استفاده نشود می‌توانند ظرفیت کش را هدر دهند.

استراتژی: افزودن سطوح کش بیشتر

به‌جای تکیه بر یک کش واحد، بیشتر پردازنده‌های امروزی از یک سلسله‌مراتب Multi-Level Cache استفاده می‌کنند، با یک کش سطح‌اول بسیار کوچک و بسیار سریع که توسط یک کش سطح‌دوم بزرگ‌تر و کمی کندتر پشتیبانی می‌شود، که خود به‌نوبه‌خود توسط حافظه اصلی پشتیبانی می‌شود. یک miss در سطح اول اغلب همچنان در سطح دوم hit می‌شود، که جریمه miss میانگین مؤثر را در مقایسه با رفتن تا حافظه اصلی به‌طور قابل‌توجهی کاهش می‌دهد.

چرا این مبادلات نیازمند توازن دقیق‌اند

هرکدام از این استراتژی‌ها یک جنبه از کارایی کش را بهبود می‌بخشد در حالی که به‌طور بالقوه جنبه دیگری را بدتر می‌کند — کش‌های بزرگ‌تر capacity miss را کاهش می‌دهند اما زمان hit و هزینه را افزایش می‌دهند، associativity بالاتر conflict miss را کاهش می‌دهد اما پیچیدگی سخت‌افزاری اضافه می‌کند، و بلوک‌های بزرگ‌تر compulsory miss را کاهش می‌دهند اما جریمه miss را افزایش می‌دهند. طراحی‌های پردازنده واقعی نتیجه توازن دقیق این عوامل رقیب بر اساس بارهای کاری خاصی هستند که انتظار می‌رود اجرا کنند.

Written & researched by Dr. Shahin Siami

Related Articles

تصورات غلط رایج درباره محاسبات موازی و درس‌های نهایی کتاب

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

Continue

واقعیت‌های عملی: بنچمارک CPU در مقابل GPU و ضرب ماتریس چندپردازنده‌ای

مقایسه منصفانه یک CPU و یک GPU نیازمند مدلی است که هم توان عملیاتی محاسباتی و هم محدودیت‌های پهنای باند حافظه را با هم در نظر بگیرد. این مقاله مدل roofline مورد استفاده برای مقایسه سخت‌افزار واقعی مانند Intel Core i7 و NVIDIA Tesla GPU را معرفی می‌کند، سپس نشان می‌دهد ضرب ماتریس چگونه در سراسر چند پردازنده تسریع می‌شود، به‌عنوان کاربرد عملی نهایی مفاهیم موازی این فصل.

Continue

بنچمارک کردن چندپردازنده‌ها و مدل‌سازی کارایی موازی

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

Continue

شبکه‌سازی کلاستر: ارتباط با دنیای بیرون

یک کلاستر از ماشین‌ها فقط زمانی مفید است که بتواند به‌طور کارآمد هم داخلی و هم با دنیای بیرون ارتباط برقرار کند. این مقاله لایه‌های شبکه‌سازی درگیر در ارتباط کلاستر، مبادلات بین تأخیر و پهنای باند در مقیاس، و اینکه کلاسترها چگونه به شبکه‌های خارجی و کاربران متصل می‌شوند را پوشش می‌دهد.

Continue

کلاسترها، کامپیوترهای در مقیاس انبار، و توپولوژی‌های شبکه

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

Continue

مقدمه‌ای بر GPU: موازی‌سازی عظیم برای بارهای کاری سنگین از نظر داده

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

Continue