موضوع مقاله: انسجام حافظه نهان | مخاطب: عمومی | لحن: دانشنامه‌ای | ساختار: عنوان، مقدمه، 3 بخش، جمع‌بندی | مقاله: | # انسجام حافظه نهان | مقدمه: در شرایطی که در یک سامانهٔ دارای حافظه مشترک چند خدمت‌گیرنده حافظه‌های نهان خود را دارا باشند، امکان بروز مشکل به خاطر ناهم‌خوانی داده‌ها وجود دارد. | ## بخش 1: انسجام حافظه نهان | همان‌طور که در نمودار «حافظه‌های نهان چندگانه در یک منبع مشترک» دیده می‌شود، در صورتی که خدمت‌گیرندهٔ بالا از قبل یک کپی از بلوکی از حافظه را در اختیار داشته باشد و خدمت گیرندهٔ پایین آن را تغییر دهد، خدمت‌گیرندهٔ بالا مقدار نادرست داده را بدون اطلاع از نادرست بودن آن در اختیار دارد. هدف از انسجام حافظهٔ نهان مدیریت این گونه مشکلات و حفظ هم‌خوانی داده میان حافظه و حافظهٔ نهان است. اگر شرایط زیر رعایت شود، انسجام حافظهٔ نهان حاصل می‌گردد: اگر دستور خواندن از مکان X حافظه پس از دستور نوشتن در همان مکان توسط پردازندهٔ P اجرا شود و در این میان توسط هیچ پردازندهٔ دیگری مقداری در X نوشته نشود، مکان X باید مقدار نوشته شده به‌وسیلهٔ P را برگرداند. این شرط مربوط به حفظ امنیت در سطح برنامه می‌باشد و حتی باید در معماری‌های تک‌پردازنده‌ای نیز رعایت گردد. اگر دستور خواندن از مکان X حافظه توسط پردازندهٔ P1 پس از دستور نوشتن در همان مکان به‌وسیلهٔ پردازندهٔ P2 اجرا شود و در بین این دو دسترسی مقدار دیگری توسط پردازنده‌ای دیگر در آن نوشته نشود، مکان X باید مقدار نوشته شده به‌وسیلهٔ P2 را برگرداند. در صورتی که پردازنده‌ها بعد از اجرای دستور نوشتن توسط P2 مقدار پیشین را بخوانند، می‌توان گفت که حافظه غیرمنسجم است. به بیان دیگر اگر در مکان X توسط هر دو پردازندهٔ دلخواه به ترتیب مقادیر A و B نوشته می‌شود، پردازنده‌ها به هیچ وجه مجاز نیستند ابتدا آن مکان را به عنوان B و پس از آن به عنوان A بخوانند. این شرایط با این فرض بیان شده‌اند که عملیات خواندن و نوشتن بدون فاصله انجام می‌گیرند. با این حال در سخت‌افزار رایانه با در نظر گرفتن تأخیر حافظه و سایر جنبه‌های معماری، این اتفاق رخ نمی‌دهد. ممکن است یک عمل نوشتن به وسیلهٔ پردازندهٔ P1 توسط عمل خواندن پردازندهٔ P2، که با فاصله زمانی کم پس از آن اجرا شده‌است، دیده نشود. مدل انسجام حافظه زمانی تعریف می‌شود که عمل نوشتن با دستور خواندن سایر پردازنده‌ها همراه شود. | ## بخش 2: انسجام حافظه نهان | ساز و کارهای انسجام حافظهٔ نهان انسجام نشانی‌محور (Directory-based): در یک سامانهٔ نشانی‌محور داده‌ای که به اشتراک گذاشته می‌شود در یک نشانی مشترک قرار دارد که انسجام بین حافظه‌های نهان را حفظ می‌کند. این نشانی مانند یک فیلتر عمل می‌کند که پردازنده‌ها باید برای بار کردن یک وارده از حافظهٔ اصلی به حافظهٔ نهان خودشان، از آن مجوز بگیرند. هنگامی که یک وارده تغییر کند، این نشانی یا مقدار آن را در حافظه‌های نهان به روز می‌کند یا آن را غیرمعتبر اعلام می‌کند. اسنوپینگ (Snooping): رویه‌ای است که طی آن حافظه‌های نهان پردازنده‌ها برای اطلاع از دسترسی‌ها به محلی از حافظه که کپی آن را در اختیار دارند، خطوط آدرس را زیر نظر می‌گیرند. هنگامی که ویرایشی در آن محل‌ها انجام گیرد، کنترل گر حافظهٔ نهان کپی دادهٔ مربوط به آن محل را در نزد خود غیرمعتبر اعلام می‌کند. اسنارفینگ (Snarfing): در این شیوه کنترل گر حافظهٔ نهان خطوط آدرس و داده را زیر نظر دارد تا در صورتی که مکانی از حافظهٔ اصلی توسط پردازنده‌ای دیگر تغییر یافت، مقدار موجود نزد خود را به روز کند. هنگامی که ویرایشی در محلی که حافظهٔ نهان کپی دادهٔ آن را در اختیار دارد مشاهده شد، کنترل گر حافظهٔ نهان مقدار موجود نزد خود را به روز می‌کند. انسجام توکن (Token Coherence): تکنیک‌های پیشین نیاز به دقت بالا در رد و بدل کردن پیغام‌ها و گذارهای ماشین حالت سامانه دارند و اتصالات میان پردازنده‌ها به پیچیدگی کار می‌افزاید. تکنیکی که در سال ۲۰۰۳ با عنوان انسجام توکن مطرح شد، به سادگی با شمارش و رد و بدل کرد توکن‌ها صحت انسجام حافظهٔ نهان را تضمین می‌کند. در این شیوه تعداد معینی توکن به هر بلوک اختصاص می‌یابد و هر پردازنده برای نوشتن در آن بلوک باید تمامی توکن‌ها را تصاحب کند، اما برای عمل خواندن تنها در اختیار داشتن یکی از آن‌ها کافی است. بدین ترتیب با شمارش و رد و بدل کردن توکن‌ها انسجام حافظهٔ نهان به دست می‌آید.مارتی، مایکل. | ## بخش 3: انسجام حافظه نهان | دو شیوهٔ مرسوم حفظ انسجام که غالباً مورد مطالعه قرار می‌گیرند، اسنوپینگ و نشانی‌محور هستند که هر کدام فواید و کاستی‌های خود را دارد. اگر پهنای باند مورد نیاز در دسترس باشد، پروتکل‌های اسنوپینگ سریع‌تر هستند، چرا که همهٔ عمل‌ها یک درخواست/پاسخ هستند که توسط همهٔ پردازنده‌ها دیده می‌شوند. هر درخواستی باید به همهٔ گره‌ها در سامانه اعلام شود، به این معنی که با بزرگ‌تر شدن سامانه باید اندازهٔ باس (منطقی یا فیزیکی) و پهنای باند افزایش یابد. از طرف دیگر شیوهٔ نشانی‌محور تأخیر بیشتری دارد (سه مرحلهٔ درخواست/فوروارد/پاسخ دارد)ولی نیازمند پهنای باند بسیار کم‌تری است، زیرا پیام‌ها به صورت نقطه به نقطه هستند، نه ارسال برای همه. به همین علت بسیاری از سامانه‌های بزرگ (بیش از ۶۴ پردازنده) از این شیوهٔ انسجام حافظه نهان استفاده می‌کنند. پروتکل حفظ انسجام یک پروتکل حفظ انسجام پروتکلی است که هم‌خوانی را بین تمام حافظه‌های نهان یک سامانهٔ اشتراک حافظه توزیع‌شده حفظ می‌کند. بیشتر پروتکل‌های انسجام در چندپردازنده‌ها از مدل هم‌خوانی ترتیبی پشتیبانی می‌کنند، در حالی که سامانه‌های اشتراک حافظهٔ توزیع‌شده از مدل‌های هم‌خوانی رهاسازی یا هم‌خوانی ضعیف پیشتیبانی می‌کنند. ممکن است گذار بین حالت‌ها در هر پیاده‌سازی خاص این پروتکل‌ها با دیگری تفاوت داشته باشد. برای مثال امکان دارد در یک پیاده‌سازی، گذارهای به روز رسانی و غیرمعتبر سازی مختلفی به کار رود، مانند به روز رسانی در خواندن، به روز رسانی در نوشتن، غیرمعتبر سازی در خواندن یا غیرمعتبر سازی در نوشتن. انتخاب گذار می‌تواند بر میزان ترافیک بین حافظه‌های نهان تأثیر بگذارد که این خود بر میزان پهنای باند در دسترس برای کارهای واقعی اثر می‌گذارد. این مورد باید در طراحی نرم‌افزارهای توزیع‌شده در نظر گرفته شود، چرا که می‌تواند موجب ایجاد ناهم‌خوانی شدید بین حافظه‌های نهان سامانه‌های چندپردازنده شود. | ## جمع‌بندی | مدل‌های انسجام در زمینهٔ عملکرد و مقیاس‌پذیری با همدیگر تفاوت دارند و باید در طراحی هر سامانه مورد ارزش‌یابی قرار گیرند.