پیش‌نویس:سیاست شمول حافظه پنهان

این مقاله در حال ترجمه از ویکی انگلیسی است لطفا حذف نشود.

سیاست شمول حافظه پنهان (به انگلیسی: Cache inclusion policy) در معماری کامپیوتر، به نحوه طراحی حافظه‌های پنهان چندسطحی (Multi-level caches) بر اساس وجود یا عدم وجود محتوای یک سطح از حافظه در سطوح دیگر اشاره دارد. به طور کلی، ویژگی شمول تعیین می‌کند که آیا داده‌های موجود در سطوح بالاتر حافظه پنهان (نزدیک‌تر به پردازنده، مانند L1) باید در سطوح پایین‌تر (بزرگ‌تر و کندتر، مانند L2 یا L3) نیز کپی شوند یا خیر.

به طور کلی، سه نوع سیاست اصلی برای مدیریت این ساختار وجود دارد: سیاست شامل‌شونده (Inclusive)، سیاست انحصاری (Exclusive)، و سیاست غیرشامل‌شونده و غیرانحصاری (Non-Inclusive Non-Exclusive که به اختصار NINE نامیده می‌شود).

 سیاست شامل‌شونده (Inclusive Policy) 
اگر تمام بلوک‌های موجود در حافظه پنهان سطح بالاتر (مثلاً L1)، در حافظه پنهان سطح پایین‌تر (مثلاً L2) نیز موجود باشند، می‌گوییم حافظه پنهان سطح پایین‌تر نسبت به سطح بالاتر «شامل‌شونده» است.

فرآیند عملکرد این سیاست در یک ساختار دو سطحی (L1 و L2) به شرح زیر است:

 وقتی پردازنده یک درخواست خواندن برای بلوک X ارسال می‌کند، اگر بلوک در L1 پیدا شود (Cache Hit)، داده مستقیماً خوانده شده و به پردازنده داده می‌شود.
 اگر بلوک در L1 نباشد اما در L2 موجود باشد، بلوک حافظه از L2 واکشی شده و در L1 قرار می‌گیرد. اگر این کار باعث بیرون راندن (Eviction) یک بلوک قدیمی از L1 شود، حافظه L2 هیچ دخالتی در این فرآیند نمی‌کند.
 اگر بلوک در هیچ‌کدام از حافظه‌های L1 و L2 پیدا نشود، داده از حافظه اصلی (RAM) واکشی شده و به طور هم‌زمان در هر دو حافظه L1 و L2 قرار می‌گیرد.

برای اینکه خاصیت شمول همواره برقرار بماند، سخت‌افزار باید شرایط خاصی را رعایت کند: ۱. میزان قابلیت ارتباط یا آسوشیتویتی (Associativity) در حافظه L2 باید بزرگ‌تر یا مساوی L2 باشد، بدون توجه به تعداد مجموعه‌ها (Sets). ۲. تعداد مجموعه‌های L2 باید بزرگ‌تر یا مساوی مجموعه‌های L1 باشد. ۳. تمام اطلاعات مراجع از L1 باید به L2 منتقل شوند تا بیت‌های جایگزینی (Replacement Bits) در L2 به‌روزرسانی شوند.

 سیاست انحصاری (Exclusive Policy) 
اگر حافظه پنهان سطح پایین‌تر (L2) فقط و فقط حاوی بلوک‌هایی باشد که در حافظه پنهان سطح بالاتر (L1) وجود ندارند، این سیاست را «انحصاری» می‌نامند.

فرآیند عملکرد این سیاست به شرح زیر است:

 وقتی پردازنده درخواست خواندن بلوک X را می‌دهد و داده در L1 پیدا می‌شود، کار تمام است.
 اگر داده در L1 نباشد اما در L2 پیدا شود، بلوک از L2 به L1 منتقل می‌شود. در این حالت، بلوک مذکور از حافظه L2 حذف یا ابطال (Invalidate) می‌شود تا ویژگی انحصاری بودن حفظ گردد. اگر این کار باعث تخلیه یک بلوک از L1 شود، آن بلوک خارج‌شده به L2 منتقل می‌شود. به این نوع حافظه L2 اصطلاحاً «حافظه پنهان قربانی» (Victim Cache) می‌گویند.
 اگر داده در هیچ‌کدام نباشد، از حافظه اصلی واکشی شده و فقط در L1 قرار می‌گیرد و حافظه L2 در این مرحله نادیده گرفته می‌شود.

 سیاست غیرشامل‌شونده و غیرانحصاری (NINE Policy) 
زمانی که محتویات حافظه پنهان سطح پایین‌تر، به طور دقیق نه شامل‌شونده باشد و نه انحصاری، به آن سیاست NINE می‌گویند. در این حالت، یک بلوک داده ممکن است هم‌زمان در هر دو سطح وجود داشته باشد، یا فقط در یکی از آنها باشد.

فرآیند عملکرد سیاست NINE به این صورت است:

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

 مقایسه سیاست‌ها 
هر یک از این سیاست‌ها دارای مزایا و معایب خاص خود در طراحی معماری پردازنده‌ها هستند:

 مزیت سیاست شامل‌شونده: در سیستم‌های موازی و چند هسته‌ای که هر پردازنده دارای یک حافظه پنهان اختصاصی (Private Cache) است، اگر یک نقص حافظه (Cache Miss) رخ دهد، باید بقیه حافظه‌های همتا برای یافتن بلوک بررسی شوند. اگر حافظه سطح پایین‌تر شامل‌شونده باشد و داده در آن پیدا نشود، سخت‌افزار مطمئن می‌شود که داده در حافظه سطح بالاتر (L1) نیز وجود ندارد؛ در نتیجه نیازی به جستجو در L1 نیست. این ویژگی باعث کاهش زمان تأخیر نقص حافظه (Miss Latency) می‌شود.
 عیب سیاست شامل‌شونده: ظرفیت ذخیره‌سازی مفید و منحصربه‌فرد کل سیستم، توسط ظرفیت حافظه سطح پایین‌تر محدود می‌شود (چون داده‌ها تکراری هستند). برعکسِ سیاست انحصاری، که در آن ظرفیت کل سیستم برابر با مجموع ظرفیت تمام حافظه‌های پنهان است. اگر اندازه L2 کوچک و نزدیک به L1 باشد، فضای زیادی از حافظه هدر می‌رود.

 شمول مقداری (Value Inclusion) 
در سیستم‌هایی که سیاست شامل‌شونده را اجرا می‌کنند، لزومی ندارد که مقادیر داده کپی‌شده در سطوح بالا و پایین در هر لحظه کاملاً یکسان باشند؛ همین که فضای بلوک رزرو باشد شمول برقرار است. اما اگر مقادیر دقیقاً یکسان باشند، به آن «شمول مقداری» می‌گویند. این موضوع به سیاست نوشتن (Write Policy) وابسته است. برای مثال، سیاست «پس‌نویسی» (Write-back) تغییرات اعمال‌شده در L1 را فوراً به L2 خبر نمی‌دهد، اما در سیاست «هم‌نویسی» (Write-through) مقادیر همیشه همگام و یکسان باقی می‌مانند.